]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-individual-view.c
Merge branch 'folks-async-and-prepare'
[empathy.git] / libempathy-gtk / empathy-individual-view.c
index b2dc22a269f0edc7c9ceb9465be7187ae3c14ecf..7083b238b6973edbf10c846890173ada095e2159 100644 (file)
@@ -143,9 +143,6 @@ individual_view_is_visible_individual (EmpathyIndividualView *self,
   EmpathyIndividualViewPriv *priv = GET_PRIV (self);
   EmpathyLiveSearch *live = EMPATHY_LIVE_SEARCH (priv->search_widget);
   const gchar *str;
-  const gchar *p;
-  gchar *dup_str = NULL;
-  gboolean visible;
   GList *personas, *l;
 
   g_assert (live != NULL);
@@ -159,6 +156,10 @@ individual_view_is_visible_individual (EmpathyIndividualView *self,
   personas = folks_individual_get_personas (individual);
   for (l = personas; l; l = l->next)
     {
+      const gchar *p;
+      gchar *dup_str = NULL;
+      gboolean visible;
+
       str = folks_persona_get_uid (l->data);
       p = strstr (str, "@");
       if (p != NULL)
@@ -242,8 +243,7 @@ individual_view_tooltip_destroy_cb (GtkWidget *widget,
   if (priv->tooltip_widget != NULL)
     {
       DEBUG ("Tooltip destroyed");
-      g_object_unref (priv->tooltip_widget);
-      priv->tooltip_widget = NULL;
+      tp_clear_object (&priv->tooltip_widget);
     }
 }
 
@@ -268,22 +268,17 @@ individual_view_query_tooltip_cb (EmpathyIndividualView *view,
 
   /* Avoid an infinite loop. See GNOME bug #574377 */
   if (running > 0)
-    {
-      return FALSE;
-    }
+    return FALSE;
+
   running++;
 
   /* Don't show the tooltip if there's already a popup menu */
   if (gtk_menu_get_for_attach_widget (GTK_WIDGET (view)) != NULL)
-    {
-      goto OUT;
-    }
+    goto OUT;
 
   if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (view), &x, &y,
           keyboard_mode, &model, &path, &iter))
-    {
-      goto OUT;
-    }
+    goto OUT;
 
   gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (view), tooltip, path);
   gtk_tree_path_free (path);
@@ -292,9 +287,7 @@ individual_view_query_tooltip_cb (EmpathyIndividualView *view,
       EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, &individual,
       -1);
   if (individual == NULL)
-    {
-      goto OUT;
-    }
+    goto OUT;
 
   contact = empathy_contact_dup_from_folks_individual (individual);
   g_object_unref (individual);
@@ -314,9 +307,7 @@ individual_view_query_tooltip_cb (EmpathyIndividualView *view,
       gtk_widget_show (priv->tooltip_widget);
     }
   else
-    {
-      empathy_contact_widget_set_contact (priv->tooltip_widget, contact);
-    }
+    empathy_contact_widget_set_contact (priv->tooltip_widget, contact);
 
   gtk_tooltip_set_custom (tooltip, priv->tooltip_widget);
   ret = TRUE;
@@ -328,6 +319,22 @@ OUT:
   return ret;
 }
 
+static void
+groups_change_group_cb (GObject *source,
+    GAsyncResult *result,
+    gpointer user_data)
+{
+  FolksGroups *groups = FOLKS_GROUPS (source);
+  GError *error = NULL;
+
+  folks_groups_change_group_finish (groups, result, &error);
+  if (error != NULL)
+    {
+      g_warning ("failed to change group: %s", error->message);
+      g_clear_error (&error);
+    }
+}
+
 static void
 individual_view_handle_drag (EmpathyIndividualView *self,
     FolksIndividual *individual,
@@ -358,10 +365,12 @@ individual_view_handle_drag (EmpathyIndividualView *self,
     }
 
   if (new_group != NULL)
-    folks_groups_change_group (FOLKS_GROUPS (individual), new_group, TRUE);
+    folks_groups_change_group (FOLKS_GROUPS (individual), new_group, TRUE,
+        groups_change_group_cb, NULL);
 
   if (old_group != NULL && action == GDK_ACTION_MOVE)
-    folks_groups_change_group (FOLKS_GROUPS (individual), old_group, FALSE);
+    folks_groups_change_group (FOLKS_GROUPS (individual), old_group, FALSE,
+        groups_change_group_cb, NULL);
 }
 
 static gboolean
@@ -480,9 +489,7 @@ individual_view_file_drag_received (GtkWidget *view,
   gtk_tree_model_get (model, &iter,
       EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, &individual, -1);
   if (individual == NULL)
-    {
-      return FALSE;
-    }
+    return FALSE;
 
   contact = empathy_contact_dup_from_folks_individual (individual);
   empathy_send_file_from_uri_list (contact, sel_data);
@@ -576,9 +583,7 @@ individual_view_drag_motion (GtkWidget *widget,
               && gtk_tree_path_compare (dm->path, path) != 0));
     }
   else
-    {
-      cleanup &= FALSE;
-    }
+    cleanup &= FALSE;
 
   if (path == NULL)
     {
@@ -638,12 +643,23 @@ individual_view_drag_motion (GtkWidget *widget,
          not groups.
        */
       FolksIndividual *individual;
+      EmpathyCapabilities caps = EMPATHY_CAPABILITIES_NONE;
+
       gtk_tree_model_get (model, &iter,
           EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, &individual, -1);
+      if (individual != NULL)
+        {
+          EmpathyContact *contact = NULL;
+
+          contact = empathy_contact_dup_from_folks_individual (individual);
+          caps = empathy_contact_get_capabilities (contact);
+
+          tp_clear_object (&contact);
+        }
+
       if (individual != NULL &&
           folks_individual_is_online (individual) &&
-          (folks_individual_get_capabilities (individual) &
-              FOLKS_CAPABILITIES_FLAGS_FILE_TRANSFER))
+          (caps & EMPATHY_CAPABILITIES_FT))
         {
           gdk_drag_status (context, GDK_ACTION_COPY, time_);
           gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (widget),
@@ -661,9 +677,7 @@ individual_view_drag_motion (GtkWidget *widget,
     }
 
   if (!is_different && !cleanup)
-    {
-      return retval;
-    }
+    return retval;
 
   if (dm)
     {
@@ -709,9 +723,7 @@ individual_view_drag_begin (GtkWidget *widget,
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
   if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-      return;
-    }
+    return;
 
   path = gtk_tree_model_get_path (model, &iter);
   priv->drag_row = gtk_tree_row_reference_new (model, path);
@@ -736,15 +748,11 @@ individual_view_drag_data_get (GtkWidget *widget,
 
   model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget));
   if (priv->drag_row == NULL)
-    {
-      return;
-    }
+    return;
 
   src_path = gtk_tree_row_reference_get_path (priv->drag_row);
   if (src_path == NULL)
-    {
-      return;
-    }
+    return;
 
   if (!gtk_tree_model_get_iter (model, &iter, src_path))
     {
@@ -757,9 +765,7 @@ individual_view_drag_data_get (GtkWidget *widget,
   individual =
       empathy_individual_view_dup_selected (EMPATHY_INDIVIDUAL_VIEW (widget));
   if (individual == NULL)
-    {
-      return;
-    }
+    return;
 
   individual_id = folks_individual_get_id (individual);
 
@@ -886,9 +892,7 @@ individual_view_row_activated (GtkTreeView *view,
   GtkTreeIter iter;
 
   if (!(priv->individual_features & EMPATHY_CONTACT_FEATURE_CHAT))
-    {
-      return;
-    }
+    return;
 
   model = gtk_tree_view_get_model (GTK_TREE_VIEW (view));
   gtk_tree_model_get_iter (model, &iter, path);
@@ -986,9 +990,7 @@ individual_view_cell_set_background (EmpathyIndividualView *view,
       g_object_set (cell, "cell-background-gdk", &color, NULL);
     }
   else
-    {
-      g_object_set (cell, "cell-background-gdk", NULL, NULL);
-    }
+    g_object_set (cell, "cell-background-gdk", NULL, NULL);
 }
 
 static void
@@ -1159,9 +1161,7 @@ individual_view_expander_cell_data_func (GtkTreeViewColumn *column,
           NULL);
     }
   else
-    {
-      g_object_set (cell, "visible", FALSE, NULL);
-    }
+    g_object_set (cell, "visible", FALSE, NULL);
 
   individual_view_cell_set_background (view, cell, is_group, is_active);
 }
@@ -1858,9 +1858,7 @@ empathy_individual_view_dup_selected (EmpathyIndividualView *view)
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
   if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-      return NULL;
-    }
+    return NULL;
 
   gtk_tree_model_get (model, &iter,
       EMPATHY_INDIVIDUAL_STORE_COL_INDIVIDUAL, &individual, -1);
@@ -1883,9 +1881,7 @@ empathy_individual_view_get_flags (EmpathyIndividualView *view)
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
   if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-      return 0;
-    }
+    return 0;
 
   gtk_tree_model_get (model, &iter,
       EMPATHY_INDIVIDUAL_STORE_COL_FLAGS, &flags, -1);
@@ -1911,9 +1907,7 @@ empathy_individual_view_get_selected_group (EmpathyIndividualView *view,
 
   selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
   if (!gtk_tree_selection_get_selected (selection, &model, &iter))
-    {
-      return NULL;
-    }
+    return NULL;
 
   gtk_tree_model_get (model, &iter,
       EMPATHY_INDIVIDUAL_STORE_COL_IS_GROUP, &is_group,
@@ -2001,9 +1995,7 @@ empathy_individual_view_get_group_menu (EmpathyIndividualView *view)
 
   if (!(priv->view_features & (EMPATHY_INDIVIDUAL_VIEW_FEATURE_GROUPS_RENAME |
               EMPATHY_INDIVIDUAL_VIEW_FEATURE_GROUPS_REMOVE)))
-    {
-      return NULL;
-    }
+    return NULL;
 
   group = empathy_individual_view_get_selected_group (view, &is_fake_group);
   if (!group || is_fake_group)
@@ -2090,9 +2082,7 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
 
   individual = empathy_individual_view_dup_selected (view);
   if (individual == NULL)
-    {
-      return NULL;
-    }
+    return NULL;
 
   flags = empathy_individual_view_get_flags (view);
 
@@ -2106,9 +2096,7 @@ empathy_individual_view_get_individual_menu (EmpathyIndividualView *view)
 
       /* create the menu if required, or just add a separator */
       if (menu == NULL)
-        {
-          menu = gtk_menu_new ();
-        }
+        menu = gtk_menu_new ();
       else
         {
           item = gtk_separator_menu_item_new ();