rpms/moblin-panel-status/devel mps-mc5-port.patch, NONE, 1.1 moblin-panel-status.spec, 1.3, 1.4

Bastien Nocera hadess at fedoraproject.org
Mon Sep 28 21:34:31 UTC 2009


Author: hadess

Update of /cvs/pkgs/rpms/moblin-panel-status/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv1436

Modified Files:
	moblin-panel-status.spec 
Added Files:
	mps-mc5-port.patch 
Log Message:
* Mon Sep 28 2009 Bastien Nocera <bnocera at redhat.com> 0.0.5-2
- Add patch for new Mission Control support


mps-mc5-port.patch:
 b/configure.ac                |    2 
 b/src/mnb-im-status-row.c     |  150 ++++++++++++++--------
 b/src/mnb-status-marshal.list |    2 
 b/src/moblin-panel-status.c   |  285 ++++++++++++++++++------------------------
 configure.ac                  |    3 
 5 files changed, 228 insertions(+), 214 deletions(-)

--- NEW FILE mps-mc5-port.patch ---
commit 419ffd4e56794e2b5ab068586d55419b7a808356
Author: Jonny Lamb <jonny.lamb at collabora.co.uk>
Date:   Mon Sep 28 15:35:49 2009 +0100

    configure.ac: add a versioned depends on telepathy-glib
    
    Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>

diff --git a/configure.ac b/configure.ac
index 555a04b..4bd087b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@ PKG_CHECK_MODULES([STATUS],
                    clutter-x11-1.0 >= 1.0.0     dnl
                    clutter-gtk-0.10
                    mojito-client >= 0.20.1      dnl
-                   telepathy-glib
+                   telepathy-glib >= 0.9.0
                    nbtk-1.2])
 
 AC_ARG_ENABLE([cache],

commit 937414d951216d1bb5399ef33d9777f66c09869a
Author: Jonny Lamb <jonny.lamb at collabora.co.uk>
Date:   Sat Sep 26 17:03:59 2009 +0100

    moblin-panel-status: update to use new tp-glib account helper API
    
    Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>

diff --git a/src/moblin-panel-status.c b/src/moblin-panel-status.c
index 84f2b17..950179c 100644
--- a/src/moblin-panel-status.c
+++ b/src/moblin-panel-status.c
@@ -37,10 +37,9 @@
 
 #include <mojito-client/mojito-client.h>
 
+#include <telepathy-glib/account-manager.h>
 #include <telepathy-glib/dbus.h>
 #include <telepathy-glib/util.h>
-#include <libmissioncontrol/mission-control.h>
-#include <libmissioncontrol/mc-account-monitor.h>
 
 #include <moblin-panel/mpl-panel-clutter.h>
 #include <moblin-panel/mpl-panel-common.h>
@@ -61,9 +60,7 @@ typedef struct _MoblinStatusPanel
   ClutterActor *header_label;
 
   MojitoClient *mojito_client;
-
-  MissionControl *mc;
-  McAccountMonitor *account_monitor;
+  TpAccountManager *account_manager;
 
   GSList *services;
   GSList *accounts;
@@ -100,7 +97,7 @@ typedef struct _AccountInfo
 
   MoblinStatusPanel *panel;
 
-  McAccount *account;
+  TpAccount *account;
   ClutterActor *row;
   ClutterActor *box;
 
@@ -155,14 +152,13 @@ account_find_by_name (MoblinStatusPanel *panel,
 }
 
 static void
-on_row_status_changed (MnbIMStatusRow *row,
-                       gint            presence,
-                       const gchar    *status,
-                       AccountInfo    *a_info)
+on_row_status_changed (MnbIMStatusRow           *row,
+                       TpConnectionPresenceType  presence,
+                       const gchar              *status,
+                       AccountInfo              *a_info)
 {
-  MissionControl *mc = a_info->panel->mc;
-
-  mission_control_set_presence (mc, presence, status, NULL, NULL);
+  tp_account_manager_set_all_requested_presences (a_info->panel->account_manager,
+                                                  presence, status, NULL);
 }
 
 static void
@@ -180,10 +176,11 @@ add_account_row (MoblinStatusPanel *panel,
 }
 
 static void
-on_mc_presence_changed (MissionControl           *mc,
-                        TpConnectionPresenceType  state,
-                        gchar                    *status,
-                        MoblinStatusPanel        *panel)
+on_presence_changed (TpAccountManager         *account_manager,
+                     TpConnectionPresenceType  state,
+                     const gchar              *status,
+                     const gchar              *status_message,
+                     MoblinStatusPanel        *panel)
 {
   const gchar *state_str = NULL;
   GSList *a;
@@ -226,8 +223,8 @@ on_mc_presence_changed (MissionControl           *mc,
     }
 
   g_free (panel->im_status);
-  panel->im_status = ((status != NULL && *status != '\0') ? g_strdup (status)
-                                                          : NULL);
+  panel->im_status = ((status_message != NULL && *status_message != '\0') ? g_strdup (status_message)
+                                                                          : NULL);
 
   g_debug ("%s: PresenceChanged ['%s'[%d], '%s']",
            G_STRLOC,
@@ -474,82 +471,42 @@ update_header (NbtkLabel *header,
 }
 
 static void
-update_mc (MoblinStatusPanel *panel,
-           gboolean           is_online)
+update_im_status (MoblinStatusPanel *panel,
+                  gboolean           is_online)
 {
-  McPresence cur_state, mc_state = MC_PRESENCE_UNSET;
-  const gchar *mc_status = NULL;
+  TpConnectionPresenceType cur_state, actual_state = TP_CONNECTION_PRESENCE_TYPE_UNSET;
+  gchar *actual_status = NULL;
   const gchar *state_str = NULL;
   GError *error = NULL;
 
-  switch (panel->im_presence)
+  cur_state = panel->im_presence;
+
+  actual_state = tp_account_manager_get_most_available_presence (panel->account_manager,
+                                                                 NULL, &actual_status);
+
+  switch (cur_state)
     {
     case TP_CONNECTION_PRESENCE_TYPE_OFFLINE:
-      cur_state = MC_PRESENCE_OFFLINE;
+      state_str = _("Offline");
       break;
 
     case TP_CONNECTION_PRESENCE_TYPE_AVAILABLE:
-      cur_state = MC_PRESENCE_AVAILABLE;
-      break;
-
-    case TP_CONNECTION_PRESENCE_TYPE_AWAY:
-      cur_state = MC_PRESENCE_AWAY;
-      break;
-
-    case TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY:
-      cur_state = MC_PRESENCE_EXTENDED_AWAY;
-      break;
-
-    case TP_CONNECTION_PRESENCE_TYPE_HIDDEN:
-      cur_state = MC_PRESENCE_HIDDEN;
-      break;
-
-    case TP_CONNECTION_PRESENCE_TYPE_BUSY:
-      cur_state = MC_PRESENCE_DO_NOT_DISTURB;
-      break;
-
-    default:
-      cur_state = MC_PRESENCE_UNSET;
-      break;
-    }
-
-  mc_state = mission_control_get_presence_actual (panel->mc, &error);
-  if (error)
-    {
-      g_warning ("Unable to get the actual presence: %s", error->message);
-      g_clear_error (&error);
-
-      mc_state = MC_PRESENCE_UNSET;
-    }
-
-  mc_status = mission_control_get_presence_message_actual (panel->mc, &error);
-  if (error)
-    {
-      g_warning ("Unable to get the actual status: %s", error->message);
-      g_clear_error (&error);
-
-      mc_status = NULL;
-    }
-
-  switch (cur_state)
-    {
-    case MC_PRESENCE_AVAILABLE:
       state_str = _("Available");
       break;
 
-    case MC_PRESENCE_AWAY:
+    case TP_CONNECTION_PRESENCE_TYPE_AWAY:
       state_str = _("Away");
       break;
 
-    case MC_PRESENCE_EXTENDED_AWAY:
+    case TP_CONNECTION_PRESENCE_TYPE_EXTENDED_AWAY:
       state_str = _("Away");
       break;
 
-    case MC_PRESENCE_HIDDEN:
+    case TP_CONNECTION_PRESENCE_TYPE_HIDDEN:
       state_str = _("Busy");
       break;
 
-    case MC_PRESENCE_DO_NOT_DISTURB:
+    case TP_CONNECTION_PRESENCE_TYPE_BUSY:
       state_str = _("Busy");
       break;
 
@@ -564,35 +521,39 @@ update_mc (MoblinStatusPanel *panel,
   g_debug ("%s: cur_state [%d], mc_state [%d]",
            G_STRLOC,
            cur_state,
-           mc_state);
+           actual_state);
 
-  if (cur_state == MC_PRESENCE_UNSET || cur_state == mc_state)
+  if (cur_state == TP_CONNECTION_PRESENCE_TYPE_UNSET || cur_state == actual_state)
     {
-      on_mc_presence_changed (panel->mc,
-                              panel->im_presence,
-                              (gchar *) state_str,
-                              panel);
+      on_presence_changed (panel->account_manager,
+                           panel->im_presence,
+                           state_str, NULL,
+                           panel);
     }
-  else if (cur_state != mc_state && cur_state == MC_PRESENCE_AVAILABLE)
+  else if (cur_state != actual_state && cur_state == TP_CONNECTION_PRESENCE_TYPE_AVAILABLE)
     {
-      mission_control_set_presence (panel->mc, cur_state, state_str,
-                                    NULL,
-                                    NULL);
+      tp_account_manager_set_all_requested_presences (panel->account_manager,
+                                                      cur_state, NULL, state_str);
     }
   else
     {
-      mission_control_set_presence (panel->mc, mc_state, mc_status,
-                                    NULL,
-                                    NULL);
+      tp_account_manager_set_all_requested_presences (panel->account_manager,
+                                                      actual_state,
+                                                      NULL, actual_status);
     }
+
+  g_free (actual_status);
 }
 
 static void
-on_mc_account_enabled (McAccountMonitor  *monitor,
-                       gchar             *name,
-                       MoblinStatusPanel *panel)
+on_account_enabled (TpAccountManager  *account_manager,
+                    TpAccount         *account,
+                    MoblinStatusPanel *panel)
 {
   AccountInfo *a_info;
+  const gchar *name;
+
+  name = tp_proxy_get_object_path (account);
 
   a_info = account_find_by_name (panel, name);
   if (a_info == NULL)
@@ -600,7 +561,7 @@ on_mc_account_enabled (McAccountMonitor  *monitor,
       a_info = g_slice_new (AccountInfo);
       a_info->name = g_strdup (name);
       a_info->panel = panel;
-      a_info->account = mc_account_lookup (name);
+      a_info->account = g_object_ref (account);
       a_info->row = NULL;
       a_info->box = panel->box;
       a_info->is_visible = FALSE;
@@ -617,15 +578,18 @@ on_mc_account_enabled (McAccountMonitor  *monitor,
 
   clutter_actor_hide (panel->empty_im_bin);
 
-  update_mc (panel, panel->is_online);
+  update_im_status (panel, panel->is_online);
 }
 
 static void
-on_mc_account_disabled (McAccountMonitor  *monitor,
-                        gchar             *name,
-                        MoblinStatusPanel *panel)
+on_account_disabled (TpAccountManager  *account_manager,
+                     TpAccount         *account,
+                     MoblinStatusPanel *panel)
 {
   AccountInfo *a_info;
+  const gchar *name;
+
+  name = tp_proxy_get_object_path (account);
 
   a_info = account_find_by_name (panel, name);
   if (a_info == NULL)
@@ -638,22 +602,7 @@ on_mc_account_disabled (McAccountMonitor  *monitor,
   if (panel->n_im_available == 0)
     clutter_actor_show (panel->empty_im_bin);
 
-  update_mc (panel, panel->is_online);
-}
-
-static void
-on_mc_account_changed (McAccountMonitor  *monitor,
-                       gchar             *name,
-                       MoblinStatusPanel *panel)
-{
-  AccountInfo *a_info;
-
-  a_info = account_find_by_name (panel, name);
-  if (a_info == NULL)
-    return;
-
-  if (a_info->row)
-    mnb_im_status_row_update (MNB_IM_STATUS_ROW (a_info->row));
+  update_im_status (panel, panel->is_online);
 }
 
 static void
@@ -668,25 +617,18 @@ on_mojito_online_changed (MojitoClient      *client,
 
   panel->is_online = is_online;
 
-  /* if we are online but MC reports an unset presence then we
-   * should assume we are offline
-   */
-  if (panel->is_online &&
-      panel->im_presence == TP_CONNECTION_PRESENCE_TYPE_UNSET)
-    {
-      panel->im_presence = TP_CONNECTION_PRESENCE_TYPE_OFFLINE;
-      panel->im_status = NULL;
-    }
-
   cur_accounts = NULL;
-  accounts = mc_accounts_list_by_enabled (TRUE);
+  accounts = tp_account_manager_get_valid_accounts (panel->account_manager);
   for (l = accounts; l != NULL; l = l->next)
     {
-      McAccount *account = l->data;
+      TpAccount *account = l->data;
       AccountInfo *a_info;
       const gchar *name;
 
-      name = mc_account_get_unique_name (account);
+      if (!tp_account_is_enabled (account))
+        continue;
+
+      name = tp_proxy_get_object_path (account);
       if (account_find_by_name (panel, name) != NULL)
         continue;
 
@@ -704,7 +646,7 @@ on_mojito_online_changed (MojitoClient      *client,
       cur_accounts = g_slist_prepend (cur_accounts, a_info);
     }
 
-  mc_accounts_list_free (accounts);
+  g_list_free (accounts);
 
   if (panel->accounts == NULL)
     panel->accounts = g_slist_reverse (cur_accounts);
@@ -726,37 +668,55 @@ on_mojito_online_changed (MojitoClient      *client,
     }
 
   update_header (NBTK_LABEL (panel->header_label), is_online);
-  update_mc (panel, is_online);
+
+  update_im_status (panel, is_online);
+
 }
 
 static void
-on_mojito_is_online (MojitoClient *client,
-                     gboolean      is_online,
-                     gpointer      data)
+on_account_manager_ready (GObject      *source_object,
+                          GAsyncResult *result,
+                          gpointer      userdata)
 {
-  MoblinStatusPanel *panel = data;
+  TpAccountManager *account_manager = TP_ACCOUNT_MANAGER (source_object);
   GList *accounts, *l;
   GSList *cur_accounts, *a;
+  MoblinStatusPanel *panel = userdata;
+  GError *error = NULL;
 
-  g_debug ("%s: We are now %s", G_STRLOC, is_online ? "online" : "offline");
+  if (!tp_account_manager_prepare_finish (account_manager, result, &error))
+  {
+    g_warning ("Failed to prepare account manager: %s", error->message);
+    g_error_free (error);
+    return;
+  }
 
-  panel->is_online = is_online;
+  g_debug ("%s: Account manager is ready\n", G_STRLOC);
+
+  /* Get initial presence */
+  g_free (panel->im_status);
+  panel->im_presence = tp_account_manager_get_most_available_presence (account_manager, NULL,
+                                                                       &(panel->im_status));
 
   if (panel->is_online)
     {
       panel->im_presence = TP_CONNECTION_PRESENCE_TYPE_AVAILABLE;
+      g_free (panel->im_status);
       panel->im_status = NULL;
     }
 
   cur_accounts = NULL;
-  accounts = mc_accounts_list_by_enabled (TRUE);
+  accounts = tp_account_manager_get_valid_accounts (panel->account_manager);
   for (l = accounts; l != NULL; l = l->next)
     {
-      McAccount *account = l->data;
+      TpAccount *account = l->data;
       AccountInfo *a_info;
       const gchar *name;
 
-      name = mc_account_get_unique_name (account);
+      if (!tp_account_is_enabled (account))
+        continue;
+
+      name = tp_proxy_get_object_path (account);
       if (account_find_by_name (panel, name) != NULL)
         continue;
 
@@ -774,7 +734,7 @@ on_mojito_is_online (MojitoClient *client,
       cur_accounts = g_slist_prepend (cur_accounts, a_info);
     }
 
-  mc_accounts_list_free (accounts);
+  g_list_free (accounts);
 
   if (panel->accounts == NULL)
     panel->accounts = g_slist_reverse (cur_accounts);
@@ -795,13 +755,29 @@ on_mojito_is_online (MojitoClient *client,
                                     panel->is_online);
     }
 
-  update_header (NBTK_LABEL (panel->header_label), is_online);
-  update_mc (panel, is_online);
+  update_header (NBTK_LABEL (panel->header_label), panel->is_online);
+  update_im_status (panel, panel->is_online);
 
   /* get notification when the online state changes */
   g_signal_connect (panel->mojito_client, "online-changed",
                     G_CALLBACK (on_mojito_online_changed),
                     panel);
+
+}
+
+static void
+on_mojito_is_online (MojitoClient *client,
+                     gboolean      is_online,
+                     gpointer      data)
+{
+  MoblinStatusPanel *panel = data;
+
+  g_debug ("%s: We are now %s", G_STRLOC, is_online ? "online" : "offline");
+
+  panel->is_online = is_online;
+
+  tp_account_manager_prepare_async (panel->account_manager, NULL,
+                                    on_account_manager_ready, panel);
 }
 
 #if 0
@@ -1044,32 +1020,24 @@ make_status (MoblinStatusPanel *panel)
   nbtk_box_layout_set_vertical (NBTK_BOX_LAYOUT (panel->box), TRUE);
   clutter_container_add_actor (CLUTTER_CONTAINER (scroll), panel->box);
 
-  /* mission control: instant messaging
-   *
-   * we need MC first because the online/offline notification is
-   * managed through Mojito; XXX yes, this is dumb - Moblin needs
+  /*
+   * we need an account manager first because the online/offline notification
+   * is managed through Mojito; XXX yes, this is dumb - Moblin needs
    * a "shell" library that notifies when we're online or offline
    */
-  panel->mc = mission_control_new (tp_get_bus ());
+  panel->account_manager = tp_account_manager_dup ();
   panel->im_presence = TP_CONNECTION_PRESENCE_TYPE_UNSET;
   panel->im_status = NULL;
 
-  panel->account_monitor = mc_account_monitor_new ();
-  g_signal_connect (panel->account_monitor,
-                    "account-enabled", G_CALLBACK (on_mc_account_enabled),
-                    panel);
-  g_signal_connect (panel->account_monitor,
-                    "account-changed", G_CALLBACK (on_mc_account_changed),
+  g_signal_connect (panel->account_manager,
+                    "account-enabled", G_CALLBACK (on_account_enabled),
                     panel);
-  g_signal_connect (panel->account_monitor,
-                    "account-disabled", G_CALLBACK (on_mc_account_disabled),
+  g_signal_connect (panel->account_manager,
+                    "account-disabled", G_CALLBACK (on_account_disabled),
                     panel);
-
-  /* update the status when the presence changes */
-  dbus_g_proxy_connect_signal (DBUS_G_PROXY (panel->mc),
-                               "PresenceChanged",
-                               G_CALLBACK (on_mc_presence_changed),
-                               panel, NULL);
+  g_signal_connect (panel->account_manager,
+                    "most-available-presence-changed",
+                    G_CALLBACK (on_presence_changed), panel);
 
   /* mojito: web services */
   panel->mojito_client = mojito_client_new ();
@@ -1211,8 +1179,7 @@ main (int argc, char *argv[])
   g_slist_foreach (panel->services, (GFunc) service_info_destroy, NULL);
   g_slist_free (panel->services);
 
-  g_object_unref (panel->account_monitor);
-  g_object_unref (panel->mc);
+  g_object_unref (panel->account_manager);
   g_object_unref (panel->mojito_client);
   g_free (panel->im_status);
   g_free (panel);

commit 422dd0ab585fed35760751079293f985ac602b7a
Author: Jonny Lamb <jonny.lamb at collabora.co.uk>
Date:   Sat Sep 26 17:00:46 2009 +0100

    mnb-im-status-row: update to use new telepathy-glib account helper API
    
    Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>

diff --git a/src/mnb-im-status-row.c b/src/mnb-im-status-row.c
index 0cdffd2..6ebd5cd 100644
--- a/src/mnb-im-status-row.c
+++ b/src/mnb-im-status-row.c
@@ -25,9 +25,14 @@
 #include <glib/gi18n.h>
 #include <stdlib.h>
 
-#include "penge-magic-texture.h"
+#include <gdk-pixbuf/gdk-pixbuf.h>
+
+#include <clutter-gtk/clutter-gtk.h>
 
-#include <libmissioncontrol/mission-control.h>
+#include <telepathy-glib/account-manager.h>
+#include <telepathy-glib/enums.h>
+
+#include "penge-magic-texture.h"
 
 #include "mnb-im-status-row.h"
 #include "mnb-status-marshal.h"
@@ -65,7 +70,7 @@ struct _MnbIMStatusRowPrivate
   guint is_online   : 1;
   guint is_expanded : 1;
 
-  McAccount *account;
+  TpAccount *account;
 
   TpConnectionPresenceType presence;
   gchar *status;
@@ -588,18 +593,82 @@ mnb_im_status_row_get_property (GObject    *gobject,
 }
 
 static void
-mnb_im_status_row_constructed (GObject *gobject)
+_account_got_avatar_cb (GObject      *source_object,
+                        GAsyncResult *result,
+                        gpointer      userdata)
 {
-  MnbIMStatusRow *row = MNB_IM_STATUS_ROW (gobject);
+  TpAccount *account = TP_ACCOUNT (source_object);
+  MnbIMStatusRow *row = MNB_IM_STATUS_ROW (userdata);
+  MnbIMStatusRowPrivate *priv = row->priv;
+  const GArray *avatar;
+  GError *error = NULL;
+  GdkPixbufLoader *loader = NULL;
+  gboolean avatar_set = FALSE;
+
+  avatar = tp_account_get_avatar_finish (account, result, &error);
+
+  if (avatar != NULL && avatar->len > 0)
+    {
+      GdkPixbuf *pixbuf;
+
+      loader = gdk_pixbuf_loader_new ();
+      if (!gdk_pixbuf_loader_write (loader, avatar->data, avatar->len, &error))
+        goto error;
+
+      if (!gdk_pixbuf_loader_close (loader, &error))
+        goto error;
+
+      pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+
+      if (!gtk_clutter_texture_set_from_pixbuf (CLUTTER_TEXTURE (priv->user_icon),
+                                                pixbuf, &error))
+        goto error;
+
+      avatar_set = TRUE;
+    }
+
+error:
+  if (error)
+    {
+      g_warning ("Unable to load avatar image: %s", error->message);
+      g_error_free (error);
+    }
+
+  if (!avatar_set)
+    {
+      clutter_texture_set_load_async (CLUTTER_TEXTURE (priv->user_icon), FALSE);
+      clutter_texture_set_from_file (CLUTTER_TEXTURE (priv->user_icon),
+                                     priv->no_icon_file,
+                                     NULL);
+    }
+
+  if (loader != NULL)
+    g_object_unref (loader);
+}
+
+static void
+_account_manager_ready_cb (GObject      *source_object,
+                           GAsyncResult *result,
+                           gpointer      userdata)
+{
+  TpAccountManager *account_manager = TP_ACCOUNT_MANAGER (source_object);
+  MnbIMStatusRow *row = userdata;
   MnbIMStatusRowPrivate *priv = row->priv;
   gchar *name;
+  GError *error = NULL;
 
-  g_assert (priv->account_name != NULL);
+  if (!tp_account_manager_prepare_finish (account_manager, result, &error))
+  {
+    g_warning ("Failed to prepare account manager: %s", error->message);
+    g_error_free (error);
+    return;
+  }
 
-  priv->account = mc_account_lookup (priv->account_name);
+  priv->account = tp_account_manager_ensure_account (account_manager,
+                                                     priv->account_name);
 
   if (priv->display_name == NULL)
-    priv->display_name = g_strdup (mc_account_get_display_name (priv->account));
+    priv->display_name = g_strdup (tp_account_get_display_name (priv->account));
 
   priv->is_online = FALSE;
 
@@ -607,27 +676,24 @@ mnb_im_status_row_constructed (GObject *gobject)
   nbtk_label_set_text (NBTK_LABEL (priv->account_label), name);
   g_free (name);
 
-  if (mc_account_get_avatar (priv->account, &name, NULL, NULL))
-    {
-      GError *error = NULL;
+  tp_account_get_avatar_async (priv->account, _account_got_avatar_cb, row);
 
-      clutter_texture_set_load_async (CLUTTER_TEXTURE (priv->user_icon), TRUE);
-      clutter_texture_set_from_file (CLUTTER_TEXTURE (priv->user_icon),
-                                     name,
-                                     &error);
-      if (error)
-        {
-          g_warning ("Unable to load avatar image: %s", error->message);
-          g_error_free (error);
+  g_object_unref (account_manager);
+}
 
-          clutter_texture_set_load_async (CLUTTER_TEXTURE (priv->user_icon), FALSE);
-          clutter_texture_set_from_file (CLUTTER_TEXTURE (priv->user_icon),
-                                         priv->no_icon_file,
-                                         NULL);
-        }
+static void
+mnb_im_status_row_constructed (GObject *gobject)
+{
+  MnbIMStatusRow *row = MNB_IM_STATUS_ROW (gobject);
+  MnbIMStatusRowPrivate *priv = row->priv;
+  TpAccountManager *account_manager;
 
-      g_free (name);
-    }
+  g_assert (priv->account_name != NULL);
+
+  account_manager = tp_account_manager_dup ();
+
+  tp_account_manager_prepare_async (account_manager, NULL,
+                                    _account_manager_ready_cb, row);
 
   if (G_OBJECT_CLASS (mnb_im_status_row_parent_class)->constructed)
     G_OBJECT_CLASS (mnb_im_status_row_parent_class)->constructed (gobject);
@@ -657,14 +723,14 @@ mnb_im_status_row_class_init (MnbIMStatusRowClass *klass)
 
   pspec = g_param_spec_string ("account-name",
                                "Account Name",
-                               "The unique name of the MissionControl account",
+                               "The unique name of the Telepathy account",
                                NULL,
                                G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
   g_object_class_install_property (gobject_class, PROP_ACCOUNT_NAME, pspec);
 
   pspec = g_param_spec_string ("display-name",
                                "Display Name",
-                               "The display name of the MissionControl account",
+                               "The display name of the Telepathy account",
                                NULL,
                                G_PARAM_READWRITE);
   g_object_class_install_property (gobject_class, PROP_DISPLAY_NAME, pspec);
@@ -675,9 +741,9 @@ mnb_im_status_row_class_init (MnbIMStatusRowClass *klass)
                   G_SIGNAL_RUN_LAST,
                   0,
                   NULL, NULL,
-                  mnb_status_marshal_VOID__INT_STRING,
+                  mnb_status_marshal_VOID__UINT_STRING,
                   G_TYPE_NONE, 2,
-                  G_TYPE_INT,
+                  G_TYPE_UINT,
                   G_TYPE_STRING);
 }
 
@@ -948,31 +1014,11 @@ mnb_im_status_row_update (MnbIMStatusRow *row)
   priv = row->priv;
 
   g_free (priv->display_name);
-  priv->display_name = g_strdup (mc_account_get_display_name (priv->account));
+  priv->display_name = g_strdup (tp_account_get_display_name (priv->account));
 
   str = g_strconcat (" - ", priv->display_name, NULL);
   nbtk_label_set_text (NBTK_LABEL (priv->account_label), str);
   g_free (str);
 
-  if (mc_account_get_avatar (priv->account, &name, NULL, NULL))
-    {
-      GError *error = NULL;
-
-      clutter_texture_set_load_async (CLUTTER_TEXTURE (priv->user_icon), TRUE);
-      clutter_texture_set_from_file (CLUTTER_TEXTURE (priv->user_icon),
-                                     name,
-                                     &error);
-      if (error)
-        {
-          g_warning ("Unable to load avatar image: %s", error->message);
-          g_error_free (error);
-
-          clutter_texture_set_load_async (CLUTTER_TEXTURE (priv->user_icon), FALSE);
-          clutter_texture_set_from_file (CLUTTER_TEXTURE (priv->user_icon),
-                                         priv->no_icon_file,
-                                         NULL);
-        }
-
-      g_free (name);
-    }
+  tp_account_get_avatar_async (priv->account, _account_got_avatar_cb, row);
 }
diff --git a/src/mnb-status-marshal.list b/src/mnb-status-marshal.list
index 7095c6c..844df91 100644
--- a/src/mnb-status-marshal.list
+++ b/src/mnb-status-marshal.list
@@ -1,3 +1,3 @@
-VOID:INT,STRING
+VOID:UINT,STRING
 VOID:STRING
 VOID:VOID

commit 48450fd1db8689547bb3516c1251217f74c6f057
Author: Jonny Lamb <jonny.lamb at collabora.co.uk>
Date:   Sat Sep 26 17:00:04 2009 +0100

    Build with clutter-gtk and telepathy-glib.
    
    Signed-off-by: Jonny Lamb <jonny.lamb at collabora.co.uk>

diff --git a/configure.ac b/configure.ac
index b29fbc1..555a04b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -21,8 +21,9 @@ PKG_CHECK_MODULES([MPL], [moblin-panel])
 PKG_CHECK_MODULES([STATUS],
                   [dbus-glib-1                  dnl
                    clutter-x11-1.0 >= 1.0.0     dnl
-                   libmissioncontrol            dnl
+                   clutter-gtk-0.10
                    mojito-client >= 0.20.1      dnl
+                   telepathy-glib
                    nbtk-1.2])
 
 AC_ARG_ENABLE([cache],


Index: moblin-panel-status.spec
===================================================================
RCS file: /cvs/pkgs/rpms/moblin-panel-status/devel/moblin-panel-status.spec,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- moblin-panel-status.spec	19 Sep 2009 13:53:02 -0000	1.3
+++ moblin-panel-status.spec	28 Sep 2009 21:34:30 -0000	1.4
@@ -1,6 +1,6 @@
 Name:           moblin-panel-status
 Version:        0.0.5
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Moblin Panel for Social Network Status
 
 Group:          System Environment/Libraries
@@ -18,6 +18,11 @@ BuildRequires: nbtk-devel
 BuildRequires: telepathy-mission-control-devel
 BuildRequires: intltool
 
+# Generated with:
+# git show -p 419ffd4e56794e2b5ab068586d55419b7a808356~4..
+# in mc5 branch of git://git.collabora.co.uk/git/user/jonny/moblin-panel-status.git
+Patch0:        mps-mc5-port.patch
+
 # Require these because the git tarball doesn't have the configure built
 BuildRequires: libtool
 BuildRequires: gnome-common
@@ -29,6 +34,7 @@ status.
 
 %prep
 %setup -q
+%patch0 -p1 -b .mc5
 
 # run autogen.sh until we have a proper release, but don't run configure twice.
 NOCONFIGURE=true ./autogen.sh
@@ -54,6 +60,9 @@ rm -rf %{buildroot}
 %{_datadir}/%{name}
 
 %changelog
+* Mon Sep 28 2009 Bastien Nocera <bnocera at redhat.com> 0.0.5-2
+- Add patch for new Mission Control support
+
 * Sun Sep 19 2009 Peter Robinson <pbrobinson at gmail.com> 0.0.5-1
 - New upstream 0.0.5 release
 




More information about the fedora-extras-commits mailing list