]> git.0d.be Git - empathy.git/blobdiff - src/empathy-debug-window.c
use list_names_cb to find MC
[empathy.git] / src / empathy-debug-window.c
index 98012e875d64f10eafdd944e6312286afc94bcd6..ec59813553754d8d26b34947f91907e629fae274 100644 (file)
@@ -41,6 +41,7 @@ typedef enum
 {
   SERVICE_TYPE_CM = 0,
   SERVICE_TYPE_CLIENT,
+  SERVICE_TYPE_MC,
 } ServiceType;
 
 enum
@@ -857,6 +858,33 @@ fill_service_chooser_data_free (FillServiceChooserData *data)
   g_slice_free (FillServiceChooserData, data);
 }
 
+static const gchar *
+service_type_to_string (ServiceType type)
+{
+  switch (type)
+    {
+      case SERVICE_TYPE_CM:
+        return "CM";
+      case SERVICE_TYPE_CLIENT:
+        return "Client";
+      case SERVICE_TYPE_MC:
+        return "MC";
+    }
+
+  return "other";
+}
+
+static gchar *
+service_dup_display_name (EmpathyDebugWindow *self,
+    ServiceType type,
+    const gchar *name)
+{
+  if (type == SERVICE_TYPE_CM)
+    return get_cm_display_name (self, name);
+  else
+    return g_strdup (name);
+}
+
 static void
 debug_window_get_name_owner_cb (TpDBusDaemon *proxy,
     const gchar *out,
@@ -882,13 +910,10 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy,
       GtkListStore *active_buffer, *pause_buffer;
 
       DEBUG ("Adding %s to list: %s at unique name: %s",
-          data->type == SERVICE_TYPE_CM? "CM": "Client",
+          service_type_to_string (data->type),
           data->name, out);
 
-      if (data->type == SERVICE_TYPE_CM)
-        name = get_cm_display_name (self, data->name);
-      else
-        name = g_strdup (data->name);
+      name = service_dup_display_name (self, data->type, data->name);
 
       active_buffer = new_list_store_for_service ();
       pause_buffer = new_list_store_for_service ();
@@ -968,10 +993,7 @@ debug_window_name_owner_changed_cb (TpDBusDaemon *proxy,
       GtkTreeIter *found_at_iter = NULL;
       gchar *display_name;
 
-      if (type == SERVICE_TYPE_CM)
-        display_name = get_cm_display_name (self, name);
-      else
-        display_name = g_strdup (name);
+      display_name = service_dup_display_name (self, type, name);
 
       /* A service joined */
       if (!debug_window_service_is_in_model (user_data, display_name,
@@ -1107,6 +1129,10 @@ list_names_cb (TpDBusDaemon *bus_daemon,
           add_service (self, names[i],
               names[i] + strlen (TP_CM_BUS_NAME_BASE), SERVICE_TYPE_CM);
         }
+      else if (!tp_strdiff (names[i], TP_ACCOUNT_MANAGER_BUS_NAME))
+        {
+          add_service (self, names[i], "Mission-Control", SERVICE_TYPE_MC);
+        }
     }
 }
 
@@ -1114,8 +1140,6 @@ static void
 debug_window_fill_service_chooser (EmpathyDebugWindow *self)
 {
   GError *error = NULL;
-  GtkTreeIter iter;
-  GtkListStore *active_buffer, *pause_buffer;
 
   self->priv->dbus = tp_dbus_daemon_dup (&error);
 
@@ -1130,22 +1154,6 @@ debug_window_fill_service_chooser (EmpathyDebugWindow *self)
   self->priv->services_detected = 0;
   self->priv->name_owner_cb_count = 0;
 
-  /* add Mission Control */
-  active_buffer= new_list_store_for_service ();
-  pause_buffer = new_list_store_for_service ();
-
-  gtk_list_store_insert_with_values (self->priv->service_store, &iter, -1,
-      COL_NAME, "mission-control",
-      COL_UNIQUE_NAME, "org.freedesktop.Telepathy.MissionControl5",
-      COL_GONE, FALSE,
-      COL_ACTIVE_BUFFER, active_buffer,
-      COL_PAUSE_BUFFER, pause_buffer,
-      COL_PROXY, NULL,
-      -1);
-  g_object_unref (active_buffer);
-  g_object_unref (pause_buffer);
-
-  /* add clients */
   tp_dbus_daemon_list_names (self->priv->dbus, 2000,
       list_names_cb, NULL, NULL, G_OBJECT (self));