summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2012-02-14 13:23:11 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2012-02-14 13:39:36 +0000
commitc0dba4b307cbc965bec3a325373e11a706dda7fe (patch)
tree54c9bd3e647653afb92acaadcb5bb4508cb6cafc
parentd9a702e8c7dfd80c0f7064824e4bf9498c420cf3 (diff)
downloadtelepathy-mission-control-c0dba4b307cbc965bec3a325373e11a706dda7fe.tar.gz
Set the Supersedes property on migrated Butterfly accounts
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=42814 Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
-rw-r--r--src/mcd-account-manager.c21
-rw-r--r--src/mcd-account-priv.h1
-rw-r--r--src/mcd-account.c6
3 files changed, 27 insertions, 1 deletions
diff --git a/src/mcd-account-manager.c b/src/mcd-account-manager.c
index 69725414..b21f0289 100644
--- a/src/mcd-account-manager.c
+++ b/src/mcd-account-manager.c
@@ -4,7 +4,7 @@
* This file is part of mission-control
*
* Copyright © 2007-2011 Nokia Corporation.
- * Copyright © 2009-2011 Collabora Ltd.
+ * Copyright © 2009-2012 Collabora Ltd.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -1212,6 +1212,8 @@ migrate_butterfly_haze_ready (McdManager *manager,
GValue v = {0,};
GHashTable *parameters, *properties;
gchar *str;
+ GPtrArray *supersedes;
+ GPtrArray *old_supersedes;
if (error != NULL)
{
@@ -1246,6 +1248,23 @@ migrate_butterfly_haze_ready (McdManager *manager,
if (str != NULL)
tp_asv_take_string (properties, TP_PROP_ACCOUNT_NICKNAME, str);
+ supersedes = g_ptr_array_new ();
+ old_supersedes = _mcd_account_get_supersedes (ctx->account);
+
+ if (old_supersedes != NULL)
+ {
+ guint i;
+
+ for (i = 0; i < old_supersedes->len; i++)
+ g_ptr_array_add (supersedes,
+ g_strdup (g_ptr_array_index (old_supersedes, i)));
+ }
+
+ g_ptr_array_add (supersedes,
+ g_strdup (mcd_account_get_object_path (ctx->account)));
+ tp_asv_take_boxed (properties, TP_PROP_ACCOUNT_SUPERSEDES,
+ TP_ARRAY_TYPE_OBJECT_PATH_LIST, supersedes);
+
/* Set the service while we're on it */
tp_asv_set_string (properties, TP_PROP_ACCOUNT_SERVICE, "windows-live");
diff --git a/src/mcd-account-priv.h b/src/mcd-account-priv.h
index 9097ed5c..624227a6 100644
--- a/src/mcd-account-priv.h
+++ b/src/mcd-account-priv.h
@@ -87,6 +87,7 @@ G_GNUC_INTERNAL void _mcd_account_set_alias (McdAccount *account,
const gchar *alias);
G_GNUC_INTERNAL gchar *_mcd_account_get_avatar_filename (McdAccount *account);
+G_GNUC_INTERNAL GPtrArray *_mcd_account_get_supersedes (McdAccount *self);
G_GNUC_INTERNAL void _mcd_account_tp_connection_changed (McdAccount *account,
TpConnection *tp_conn);
diff --git a/src/mcd-account.c b/src/mcd-account.c
index fd8cfcfc..115bf920 100644
--- a/src/mcd-account.c
+++ b/src/mcd-account.c
@@ -3731,6 +3731,12 @@ _mcd_account_get_avatar (McdAccount *account, GArray **avatar,
g_free (filename);
}
+GPtrArray *
+_mcd_account_get_supersedes (McdAccount *self)
+{
+ return self->priv->supersedes;
+}
+
static void
mcd_account_connection_self_nickname_changed_cb (McdAccount *account,
const gchar *alias,