]> git.0d.be Git - empathy.git/blobdiff - src/empathy-debug-window.c
Use gtk_list_store_insert_with_values ()
[empathy.git] / src / empathy-debug-window.c
index beab6616074666a896bacf3d9da754e7097e39e1..3aa8c1502f7a5b15dc347b90419b4dfef891ec39 100644 (file)
@@ -189,8 +189,7 @@ copy_buffered_messages (GtkTreeModel *buffer,
       COL_DEBUG_MESSAGE, &message,
       COL_DEBUG_LEVEL_VALUE, &level,
       -1);
-  gtk_list_store_append (active_buffer, &active_buffer_iter);
-  gtk_list_store_set (active_buffer, &active_buffer_iter,
+  gtk_list_store_insert_with_values (active_buffer, &active_buffer_iter, -1,
       COL_DEBUG_TIMESTAMP, timestamp,
       COL_DEBUG_DOMAIN, domain,
       COL_DEBUG_CATEGORY, category,
@@ -207,6 +206,26 @@ copy_buffered_messages (GtkTreeModel *buffer,
   return FALSE;
 }
 
+static void
+insert_values_in_buffer (GtkListStore *store,
+        gdouble timestamp,
+        const gchar *domain,
+        const gchar *category,
+        guint level,
+        const gchar *string)
+{
+  GtkTreeIter iter;
+
+  gtk_list_store_insert_with_values (store, &iter, -1,
+      COL_DEBUG_TIMESTAMP, timestamp,
+      COL_DEBUG_DOMAIN, domain,
+      COL_DEBUG_CATEGORY, category,
+      COL_DEBUG_LEVEL_STRING, log_level_to_string (level),
+      COL_DEBUG_MESSAGE, string,
+      COL_DEBUG_LEVEL_VALUE, level,
+      -1); 
+}
+
 static void
 debug_window_add_message (EmpathyDebugWindow *debug_window,
     TpProxy *proxy,
@@ -217,7 +236,6 @@ debug_window_add_message (EmpathyDebugWindow *debug_window,
 {
   EmpathyDebugWindowPriv *priv = GET_PRIV (debug_window);
   gchar *domain, *category;
-  GtkTreeIter iter;
   gchar *string;
   GtkListStore *active_buffer, *pause_buffer;
 
@@ -242,16 +260,23 @@ debug_window_add_message (EmpathyDebugWindow *debug_window,
   pause_buffer = g_object_get_data (G_OBJECT (proxy), "pause-buffer");
   active_buffer = g_object_get_data (G_OBJECT (proxy), "active-buffer");
 
-  gtk_list_store_append (priv->paused ? pause_buffer : active_buffer,
-      &iter);
-  gtk_list_store_set (priv->paused ? pause_buffer : active_buffer, &iter,
-      COL_DEBUG_TIMESTAMP, timestamp,
-      COL_DEBUG_DOMAIN, domain,
-      COL_DEBUG_CATEGORY, category,
-      COL_DEBUG_LEVEL_STRING, log_level_to_string (level),
-      COL_DEBUG_MESSAGE, string,
-      COL_DEBUG_LEVEL_VALUE, level,
-      -1);
+  if (priv->paused)
+    {
+      insert_values_in_buffer (pause_buffer, timestamp,
+          domain, category, level,
+          string);
+    }
+  else
+    {
+      /* Append 'this' message to this service's and All's active-buffers */
+      insert_values_in_buffer (active_buffer, timestamp,
+          domain, category, level,
+          string);
+
+      insert_values_in_buffer (priv->all_active_buffer, timestamp,
+          domain, category, level,
+          string);
+    }
 
   g_free (string);
   g_free (domain);
@@ -398,29 +423,39 @@ debug_window_get_messages_cb (TpProxy *proxy,
 {
   EmpathyDebugWindow *debug_window = (EmpathyDebugWindow *) user_data;
   EmpathyDebugWindowPriv *priv = GET_PRIV (debug_window);
-  gchar *name;
+  gchar *active_service_name;
   guint i;
   GtkListStore *active_buffer;
   gboolean valid_iter;
   GtkTreeIter iter;
+  gchar *proxy_service_name;
 
   active_buffer = g_object_get_data (G_OBJECT (proxy), "active-buffer");
   valid_iter = debug_window_get_iter_for_active_buffer (active_buffer, &iter,
       debug_window);
+  gtk_tree_model_get (GTK_TREE_MODEL (priv->service_store), &iter,
+      COL_NAME, &proxy_service_name,
+      -1);
 
+  active_service_name = get_active_service_name (debug_window);
   if (error != NULL)
     {
       DEBUG ("GetMessages failed: %s", error->message);
-      debug_window_set_toolbar_sensitivity (debug_window, FALSE);
+
+      /* We want to set the window sensitivity to false only when proxy for the
+       * selected service is unable to fetch debug messages */
+      if (!tp_strdiff (active_service_name, proxy_service_name))
+        debug_window_set_toolbar_sensitivity (debug_window, FALSE);
 
       /* We created the proxy for GetMessages call. Now destroy it. */
       tp_clear_object (&proxy);
       return;
     }
 
-  name = get_active_service_name (debug_window);
-  DEBUG ("Retrieved debug messages for %s", name);
-  g_free (name);
+  DEBUG ("Retrieved debug messages for %s", active_service_name);
+  g_free (active_service_name);
+  debug_window_set_toolbar_sensitivity (debug_window, TRUE);
+
 
   for (i = 0; i < messages->len; i++)
     {
@@ -436,21 +471,16 @@ debug_window_get_messages_cb (TpProxy *proxy,
   /* Now we save this precious proxy in the service_store along its service */
   if (valid_iter)
     {
-      gchar *proxy_service_name;
-
-      gtk_tree_model_get (GTK_TREE_MODEL (priv->service_store), &iter,
-          COL_NAME, &proxy_service_name,
-          -1);
-
       DEBUG ("Proxy for service: %s was successful in fetching debug"
           " messages. Saving it.", proxy_service_name);
-      g_free (proxy_service_name);
 
       gtk_list_store_set (priv->service_store, &iter,
           COL_PROXY, proxy,
           -1);
     }
 
+  g_free (proxy_service_name);
+
   /* Connect to "invalidated" signal */
   g_signal_connect (proxy, "invalidated",
       G_CALLBACK (proxy_invalidated_cb), debug_window);
@@ -934,8 +964,7 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy,
       active_buffer = new_list_store_for_service ();
       pause_buffer = new_list_store_for_service ();
 
-      gtk_list_store_append (priv->service_store, &iter);
-      gtk_list_store_set (priv->service_store, &iter,
+      gtk_list_store_insert_with_values (priv->service_store, &iter, -1,
           COL_NAME, name,
           COL_UNIQUE_NAME, out,
           COL_GONE, FALSE,
@@ -960,8 +989,7 @@ debug_window_get_name_owner_cb (TpDBusDaemon *proxy,
     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,
+        gtk_list_store_insert_with_values (priv->service_store, &iter, 0,
             COL_NAME, "All",
             COL_ACTIVE_BUFFER, NULL,
             -1);
@@ -1073,8 +1101,7 @@ debug_window_name_owner_changed_cb (TpDBusDaemon *proxy,
           active_buffer = new_list_store_for_service ();
           pause_buffer = new_list_store_for_service ();
 
-          gtk_list_store_append (priv->service_store, &iter);
-          gtk_list_store_set (priv->service_store, &iter,
+          gtk_list_store_insert_with_values (priv->service_store, &iter, -1,
               COL_NAME, display_name,
               COL_UNIQUE_NAME, arg2,
               COL_GONE, FALSE,
@@ -1223,8 +1250,7 @@ debug_window_fill_service_chooser (EmpathyDebugWindow *debug_window)
   active_buffer= new_list_store_for_service ();
   pause_buffer = new_list_store_for_service ();
 
-  gtk_list_store_append (priv->service_store, &iter);
-  gtk_list_store_set (priv->service_store, &iter,
+  gtk_list_store_insert_with_values (priv->service_store, &iter, -1,
       COL_NAME, "mission-control",
       COL_UNIQUE_NAME, "org.freedesktop.Telepathy.MissionControl5",
       COL_GONE, FALSE,
@@ -1258,12 +1284,14 @@ debug_window_pause_toggled_cb (GtkToggleToolButton *pause_,
   if (!priv->paused)
     {
       /* Pause has been released - flush all pause buffers */
+      GtkTreeModel *service_store = GTK_TREE_MODEL (priv->service_store);
 
-      for (valid_iter = gtk_tree_model_get_iter_first (model, &iter);
+      /* Skipping the first iter which is reserved for "All" */
+      gtk_tree_model_get_iter_first (model, &iter);
+      for (valid_iter = gtk_tree_model_iter_next (model, &iter);
            valid_iter;
            valid_iter = gtk_tree_model_iter_next (model, &iter))
         {
-          GtkTreeModel *service_store = GTK_TREE_MODEL (priv->service_store);
           GtkListStore *pause_buffer, *active_buffer;
 
           gtk_tree_model_get (service_store, &iter,
@@ -1273,11 +1301,14 @@ debug_window_pause_toggled_cb (GtkToggleToolButton *pause_,
 
           gtk_tree_model_foreach (GTK_TREE_MODEL (pause_buffer),
               copy_buffered_messages, active_buffer);
+          gtk_tree_model_foreach (GTK_TREE_MODEL (pause_buffer),
+              copy_buffered_messages, priv->all_active_buffer);
+
           gtk_list_store_clear (pause_buffer);
 
           g_object_unref (active_buffer);
           g_object_unref (pause_buffer);
-       }
+        }
     }
 }
 
@@ -1844,38 +1875,32 @@ am_prepared_cb (GObject *am,
   gtk_combo_box_set_model (GTK_COMBO_BOX (priv->level_filter),
       GTK_TREE_MODEL (level_store));
 
-  gtk_list_store_append (level_store, &iter);
-  gtk_list_store_set (level_store, &iter,
+  gtk_list_store_insert_with_values (level_store, &iter, -1,
       COL_LEVEL_NAME, _("Debug"),
       COL_LEVEL_VALUE, TP_DEBUG_LEVEL_DEBUG,
       -1);
 
-  gtk_list_store_append (level_store, &iter);
-  gtk_list_store_set (level_store, &iter,
+  gtk_list_store_insert_with_values (level_store, &iter, -1,
       COL_LEVEL_NAME, _("Info"),
       COL_LEVEL_VALUE, TP_DEBUG_LEVEL_INFO,
       -1);
 
-  gtk_list_store_append (level_store, &iter);
-  gtk_list_store_set (level_store, &iter,
+  gtk_list_store_insert_with_values (level_store, &iter, -1,
       COL_LEVEL_NAME, _("Message"),
       COL_LEVEL_VALUE, TP_DEBUG_LEVEL_MESSAGE,
       -1);
 
-  gtk_list_store_append (level_store, &iter);
-  gtk_list_store_set (level_store, &iter,
+  gtk_list_store_insert_with_values (level_store, &iter, -1,
       COL_LEVEL_NAME, _("Warning"),
       COL_LEVEL_VALUE, TP_DEBUG_LEVEL_WARNING,
       -1);
 
-  gtk_list_store_append (level_store, &iter);
-  gtk_list_store_set (level_store, &iter,
+  gtk_list_store_insert_with_values (level_store, &iter, -1,
       COL_LEVEL_NAME, _("Critical"),
       COL_LEVEL_VALUE, TP_DEBUG_LEVEL_CRITICAL,
       -1);
 
-  gtk_list_store_append (level_store, &iter);
-  gtk_list_store_set (level_store, &iter,
+  gtk_list_store_insert_with_values (level_store, &iter, -1,
       COL_LEVEL_NAME, _("Error"),
       COL_LEVEL_VALUE, TP_DEBUG_LEVEL_ERROR,
       -1);