/* Service (CM, Client) chooser store */
GtkListStore *service_store;
+ /* Counters on services detected and added */
+ guint services_detected;
+ guint name_owner_cb_count;
+
/* Debug to show upon creation */
gchar *select_name;
/* Misc. */
gboolean dispose_run;
TpAccountManager *am;
+ GtkListStore *all_active_buffer;
} EmpathyDebugWindowPriv;
static const gchar *
FillServiceChooserData *data = (FillServiceChooserData *) user_data;
EmpathyDebugWindow *self = EMPATHY_DEBUG_WINDOW (data->debug_window);
EmpathyDebugWindowPriv *priv = GET_PRIV (data->debug_window);
+ GtkTreeIter iter;
+
+ priv->name_owner_cb_count++;
if (error != NULL)
{
if (!debug_window_service_is_in_model (data->debug_window, out, NULL, FALSE))
{
- GtkTreeIter iter;
char *name;
GtkListStore *active_buffer, *pause_buffer;
g_free (name);
}
+ if (priv->services_detected == priv->name_owner_cb_count)
+ {
+ /* Time to add "All" selection to service_store */
+ gtk_list_store_prepend (priv->service_store, &iter);
+ gtk_list_store_set (priv->service_store, &iter,
+ COL_NAME, "All",
+ COL_ACTIVE_BUFFER, NULL,
+ -1);
+
+ priv->all_active_buffer = new_list_store_for_service ();
+
+ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->chooser), 0);
+ }
+
OUT:
fill_service_chooser_data_free (data);
}
GObject *weak_object)
{
EmpathyDebugWindow *debug_window = (EmpathyDebugWindow *) user_data;
+ EmpathyDebugWindowPriv *priv = GET_PRIV (debug_window);
guint i;
TpDBusDaemon *dbus;
GError *error2 = NULL;
tp_cli_dbus_daemon_call_get_name_owner (dbus, -1,
names[i], debug_window_get_name_owner_cb,
data, NULL, NULL);
+
+ priv->services_detected ++;
}
g_object_unref (dbus);
tp_cli_dbus_daemon_call_get_name_owner (priv->dbus, -1,
name, debug_window_get_name_owner_cb, data, NULL, NULL);
+
+ priv->services_detected ++;
}
static void
return;
}
+ /* Keep a count of the services detected and added */
+ priv->services_detected = 0;
+ priv->name_owner_cb_count = 0;
+
/* Add CMs to list */
tp_list_connection_names (priv->dbus, debug_window_list_connection_names_cb,
debug_window, NULL, NULL);
g_object_unref (active_buffer);
g_object_unref (pause_buffer);
- gtk_combo_box_set_active (GTK_COMBO_BOX (priv->chooser), 0);
-
/* add clients */
tp_dbus_daemon_list_names (priv->dbus, 2000,
list_names_cb, NULL, NULL, G_OBJECT (debug_window));
priv->view_visible = FALSE;
+ priv->all_active_buffer = NULL;
+
debug_window_set_toolbar_sensitivity (EMPATHY_DEBUG_WINDOW (object), FALSE);
debug_window_fill_service_chooser (EMPATHY_DEBUG_WINDOW (object));
gtk_widget_show (GTK_WIDGET (object));
priv->am = NULL;
}
+ tp_clear_object (&priv->all_active_buffer);
+
(G_OBJECT_CLASS (empathy_debug_window_parent_class)->dispose) (object);
}