EmpathyChat * empathy_chat_window_find_chat (McAccount *account, const gchar *id) { GList *l; g_return_val_if_fail (MC_IS_ACCOUNT (account), NULL); g_return_val_if_fail (!G_STR_EMPTY (id), NULL); for (l = chat_windows; l; l = l->next) { EmpathyChatWindowPriv *priv; EmpathyChatWindow *window; GList *ll; window = l->data; priv = GET_PRIV (window); for (ll = priv->chats; ll; ll = ll->next) { EmpathyChat *chat; chat = ll->data; if (empathy_account_equal (account, empathy_chat_get_account (chat)) && !tp_strdiff (id, empathy_chat_get_id (chat))) { return chat; } } } return NULL; }
static void log_window_chats_set_selected (EmpathyLogWindow *window, EmpathyAccount *account, const gchar *chat_id, gboolean is_chatroom) { EmpathyAccountChooser *account_chooser; GtkTreeView *view; GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; GtkTreePath *path; gboolean ok; account_chooser = EMPATHY_ACCOUNT_CHOOSER (window->account_chooser_chats); empathy_account_chooser_set_account (account_chooser, account); view = GTK_TREE_VIEW (window->treeview_chats); model = gtk_tree_view_get_model (view); selection = gtk_tree_view_get_selection (view); if (!gtk_tree_model_get_iter_first (model, &iter)) { return; } for (ok = TRUE; ok; ok = gtk_tree_model_iter_next (model, &iter)) { EmpathyAccount *this_account; gchar *this_chat_id; gboolean this_is_chatroom; gtk_tree_model_get (model, &iter, COL_CHAT_ACCOUNT, &this_account, COL_CHAT_ID, &this_chat_id, COL_CHAT_IS_CHATROOM, &this_is_chatroom, -1); if (empathy_account_equal (this_account, account) && strcmp (this_chat_id, chat_id) == 0 && this_is_chatroom == is_chatroom) { gtk_tree_selection_select_iter (selection, &iter); path = gtk_tree_model_get_path (model, &iter); gtk_tree_view_scroll_to_cell (view, path, NULL, TRUE, 0.5, 0.0); gtk_tree_path_free (path); g_object_unref (this_account); g_free (this_chat_id); break; } g_object_unref (this_account); g_free (this_chat_id); } }
static void megaphone_applet_new_connection_cb (EmpathyAccountManager *manager, TpConnection *connection, EmpathyAccount *account, MegaphoneApplet *applet) { MegaphoneAppletPriv *priv = GET_PRIV (applet); if (priv->contact || !empathy_account_equal (account, priv->account)) { return; } priv->factory = empathy_tp_contact_factory_dup_singleton (connection); empathy_tp_contact_factory_get_from_id (priv->factory, priv->id, megaphone_applet_got_contact_cb, NULL, NULL, G_OBJECT (applet)); }
gboolean empathy_chatroom_equal (gconstpointer v1, gconstpointer v2) { McAccount *account_a; McAccount *account_b; const gchar *room_a; const gchar *room_b; g_return_val_if_fail (EMPATHY_IS_CHATROOM (v1), FALSE); g_return_val_if_fail (EMPATHY_IS_CHATROOM (v2), FALSE); account_a = empathy_chatroom_get_account (EMPATHY_CHATROOM (v1)); account_b = empathy_chatroom_get_account (EMPATHY_CHATROOM (v2)); room_a = empathy_chatroom_get_room (EMPATHY_CHATROOM (v1)); room_b = empathy_chatroom_get_room (EMPATHY_CHATROOM (v2)); return empathy_account_equal (account_a, account_b) && !tp_strdiff (room_a, room_b); }
static gboolean account_chooser_find_account_foreach (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) { FindAccountData *data = user_data; EmpathyAccount *account; gtk_tree_model_get (model, iter, COL_ACCOUNT_POINTER, &account, -1); if (empathy_account_equal (account, data->account)) { data->found = TRUE; *(data->iter) = *iter; g_object_unref (account); return TRUE; } g_object_unref (account); return FALSE; }
static gboolean account_chooser_set_account_foreach (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, SetAccountData *data) { EmpathyAccount *account; gboolean equal; gtk_tree_model_get (model, iter, COL_ACCOUNT_POINTER, &account, -1); /* Special case so we can make it possible to select the All option */ if ((data->account == NULL) != (account == NULL)) { equal = FALSE; } else if (data->account == account) { equal = TRUE; } else { equal = empathy_account_equal (data->account, account); } if (account) { g_object_unref (account); } if (equal) { GtkComboBox *combobox; combobox = GTK_COMBO_BOX (data->chooser); gtk_combo_box_set_active_iter (combobox, iter); data->set = TRUE; } return equal; }