#include <telepathy-glib/account-manager.h>
#include <telepathy-glib/util.h>
+#include <libempathy/empathy-client-factory.h>
#include <libempathy/empathy-tp-contact-factory.h>
#include <libempathy/empathy-contact-list.h>
#include <libempathy/empathy-contact-groups.h>
#include "empathy-cell-renderer-activatable.h"
#include "empathy-ui-utils.h"
#include "empathy-gtk-enum-types.h"
-#include "empathy-gtk-marshal.h"
#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
#include <libempathy/empathy-debug.h>
list = empathy_contact_list_store_get_list_iface (priv->store);
- if (!tp_strdiff (data->new_group, EMPATHY_CONTACT_LIST_STORE_FAVORITE)) {
- /* Mark contact as favourite */
- empathy_contact_list_add_to_favourites (list, contact);
- return;
- }
-
- if (!tp_strdiff (data->old_group, EMPATHY_CONTACT_LIST_STORE_FAVORITE)) {
- /* Remove contact as favourite */
- empathy_contact_list_remove_from_favourites (list, contact);
- /* Don't try to remove it */
- g_free (data->old_group);
- data->old_group = NULL;
- }
-
if (data->new_group) {
empathy_contact_list_add_to_group (list, contact, data->new_group);
}
}
}
-static gboolean
-group_can_be_modified (const gchar *name,
- gboolean is_fake_group,
- gboolean adding)
-{
- /* Real groups can always be modified */
- if (!is_fake_group)
- return TRUE;
-
- /* The favorite fake group can be modified so users can
- * add/remove favorites using DnD */
- if (!tp_strdiff (name, EMPATHY_CONTACT_LIST_STORE_FAVORITE))
- return TRUE;
-
- /* We can remove contacts from the 'ungrouped' fake group */
- if (!adding && !tp_strdiff (name, EMPATHY_CONTACT_LIST_STORE_UNGROUPED))
- return TRUE;
-
- return FALSE;
-}
-
static gboolean
contact_list_view_contact_drag_received (GtkWidget *view,
GdkDragContext *context,
GtkSelectionData *selection)
{
EmpathyContactListViewPriv *priv;
- TpAccountManager *account_manager;
+ EmpathyClientFactory *factory;
TpConnection *connection = NULL;
TpAccount *account = NULL;
DndGetContactData *data;
new_group = empathy_contact_list_store_get_parent_group (model,
path, NULL, &new_group_is_fake);
- if (!group_can_be_modified (new_group, new_group_is_fake, TRUE))
- return FALSE;
-
/* Get source group information. */
if (priv->drag_row) {
source_path = gtk_tree_row_reference_get_path (priv->drag_row);
}
}
- if (!group_can_be_modified (old_group, old_group_is_fake, FALSE))
- return FALSE;
-
if (!tp_strdiff (old_group, new_group)) {
g_free (new_group);
g_free (old_group);
return FALSE;
}
- account_manager = tp_account_manager_dup ();
+ factory = empathy_client_factory_dup ();
strv = g_strsplit (sel_data, ":", 2);
if (g_strv_length (strv) == 2) {
account_id = strv[0];
contact_id = strv[1];
- account = tp_account_manager_ensure_account (account_manager, account_id);
+ account = tp_simple_client_factory_ensure_account (
+ TP_SIMPLE_CLIENT_FACTORY (factory),
+ account_id, NULL, NULL);
}
if (account) {
connection = tp_account_get_connection (account);
DEBUG ("Failed to get connection for account '%s'", account_id);
g_free (new_group);
g_free (old_group);
- g_object_unref (account_manager);
+ g_object_unref (factory);
return FALSE;
}
data, (GDestroyNotify) contact_list_view_dnd_get_contact_free,
G_OBJECT (view));
g_strfreev (strv);
- g_object_unref (account_manager);
+ g_object_unref (factory);
return TRUE;
}
priv = GET_PRIV (widget);
- GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_begin (widget,
- context);
-
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
return;
}
+ GTK_WIDGET_CLASS (empathy_contact_list_view_parent_class)->drag_begin (widget,
+ context);
+
path = gtk_tree_model_get_path (model, &iter);
priv->drag_row = gtk_tree_row_reference_new (model, path);
gtk_tree_path_free (path);
if (contact) {
DEBUG ("Starting a chat");
empathy_chat_with_contact (contact,
- gtk_get_current_event_time ());
+ empathy_get_current_action_time ());
g_object_unref (contact);
}
}
if (!is_group)
goto out;
- if (!tp_strdiff (name, EMPATHY_CONTACT_LIST_STORE_FAVORITE)) {
- pixbuf = empathy_pixbuf_from_icon_name ("emblem-favorite",
- GTK_ICON_SIZE_MENU);
- }
- else if (!tp_strdiff (name, EMPATHY_CONTACT_LIST_STORE_PEOPLE_NEARBY)) {
- pixbuf = empathy_pixbuf_from_icon_name ("im-local-xmpp",
- GTK_ICON_SIZE_MENU);
- }
-
out:
g_object_set (cell,
"visible", pixbuf != NULL,
GdkEvent *event,
EmpathyContactListView *view)
{
- GdkEventKey *eventkey = ((GdkEventKey *) event);
+ GdkEvent *new_event;
gboolean ret = FALSE;
- if (eventkey->keyval == GDK_KEY_Up || eventkey->keyval == GDK_KEY_Down) {
- GdkEvent *new_event;
-
- new_event = gdk_event_copy (event);
- gtk_widget_grab_focus (GTK_WIDGET (view));
- ret = gtk_widget_event (GTK_WIDGET (view), new_event);
- gtk_widget_grab_focus (search);
+ new_event = gdk_event_copy (event);
+ gtk_widget_grab_focus (GTK_WIDGET (view));
+ ret = gtk_widget_event (GTK_WIDGET (view), new_event);
+ gtk_widget_grab_focus (search);
- gdk_event_free (new_event);
- }
+ gdk_event_free (new_event);
return ret;
}
G_SIGNAL_RUN_LAST,
0,
NULL, NULL,
- _empathy_gtk_marshal_VOID__OBJECT_STRING_STRING,
+ g_cclosure_marshal_generic,
G_TYPE_NONE,
3, EMPATHY_TYPE_CONTACT, G_TYPE_STRING, G_TYPE_STRING);