static gint sort_personas (FolksPersona *persona_a, FolksPersona *persona_b) { EmpathyContact *contact; TpAccount *account_a, *account_b; gint ret_val; g_return_val_if_fail (persona_a != NULL || persona_b != NULL, 0); /* alias */ ret_val = g_utf8_collate ( folks_aliasable_get_alias (FOLKS_ALIASABLE (persona_a)), folks_aliasable_get_alias (FOLKS_ALIASABLE (persona_b))); if (ret_val != 0) goto out; /* identifier */ ret_val = g_utf8_collate (folks_persona_get_display_id (persona_a), folks_persona_get_display_id (persona_b)); if (ret_val != 0) goto out; contact = empathy_contact_dup_from_tp_contact (tpf_persona_get_contact ( TPF_PERSONA (persona_a))); account_a = empathy_contact_get_account (contact); g_object_unref (contact); contact = empathy_contact_dup_from_tp_contact (tpf_persona_get_contact ( TPF_PERSONA (persona_b))); account_b = empathy_contact_get_account (contact); g_object_unref (contact); /* protocol */ ret_val = strcmp (tp_account_get_protocol (account_a), tp_account_get_protocol (account_a)); if (ret_val != 0) goto out; /* account ID */ ret_val = strcmp (tp_proxy_get_object_path (account_a), tp_proxy_get_object_path (account_a)); out: return ret_val; }
static void update_join_button_sensitivity (EmpathyNewChatroomDialog *dialog) { const gchar *room; const gchar *protocol; gboolean sensitive = FALSE; room = gtk_entry_get_text (GTK_ENTRY (dialog->entry_room)); protocol = tp_account_get_protocol (dialog->account); if (EMP_STR_EMPTY (room)) goto out; if (!tp_strdiff (protocol, "irc") && (!tp_strdiff (room, "#") || !tp_strdiff (room, "&"))) { goto out; } if (dialog->account == NULL) goto out; if (tp_account_get_connection_status (dialog->account, NULL) != TP_CONNECTION_STATUS_CONNECTED) goto out; sensitive = TRUE; out: gtk_widget_set_sensitive (dialog->button_join, sensitive); }
static void new_chatroom_dialog_update_widgets (EmpathyNewChatroomDialog *dialog) { EmpathyAccountChooser *account_chooser; const gchar *protocol; account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser); if (dialog->account == NULL) return; protocol = tp_account_get_protocol (dialog->account); gtk_entry_set_text (GTK_ENTRY (dialog->entry_server), ""); /* hardcode here known protocols */ if (strcmp (protocol, "jabber") == 0) { gtk_widget_set_sensitive (dialog->entry_server, TRUE); } else if (strcmp (protocol, "local-xmpp") == 0) { gtk_widget_set_sensitive (dialog->entry_server, FALSE); } else if (strcmp (protocol, "irc") == 0) { gtk_widget_set_sensitive (dialog->entry_server, FALSE); } else { gtk_widget_set_sensitive (dialog->entry_server, TRUE); } update_join_button_sensitivity (dialog); /* Final set up of the dialog */ gtk_widget_grab_focus (dialog->entry_room); }
/* Salut account creation. The TpAccountManager first argument * must already be prepared when calling this function. */ static gboolean should_create_salut_account (TpAccountManager *manager) { gboolean salut_created = FALSE; GList *accounts, *l; /* Check if we already created a salut account */ empathy_conf_get_bool (empathy_conf_get (), EMPATHY_PREFS_SALUT_ACCOUNT_CREATED, &salut_created); if (salut_created) { DEBUG ("Gconf says we already created a salut account once"); return FALSE; } accounts = tp_account_manager_get_valid_accounts (manager); for (l = accounts; l != NULL; l = g_list_next (l)) { TpAccount *account = TP_ACCOUNT (l->data); if (!tp_strdiff (tp_account_get_protocol (account), "local-xmpp")) { salut_created = TRUE; break; } } g_list_free (accounts); if (salut_created) { DEBUG ("Existing salut account already exists, flagging so in gconf"); empathy_conf_set_bool (empathy_conf_get (), EMPATHY_PREFS_SALUT_ACCOUNT_CREATED, TRUE); } return !salut_created; }
static gboolean has_non_salut_accounts (TpAccountManager *manager) { gboolean ret = FALSE; GList *accounts, *l; accounts = tp_account_manager_get_valid_accounts (manager); for (l = accounts ; l != NULL; l = g_list_next (l)) { if (tp_strdiff (tp_account_get_protocol (l->data), "local-xmpp")) { ret = TRUE; break; } } g_list_free (accounts); return ret; }
static void new_chatroom_dialog_update_widgets (EmpathyNewChatroomDialog *dialog) { const gchar *protocol; if (dialog->account == NULL) return; protocol = tp_account_get_protocol (dialog->account); gtk_entry_set_text (GTK_ENTRY (dialog->entry_server), ""); /* hardcode here known protocols */ if (strcmp (protocol, "jabber") == 0) { gtk_widget_set_sensitive (dialog->entry_server, TRUE); } else if (strcmp (protocol, "local-xmpp") == 0) { gtk_widget_set_sensitive (dialog->entry_server, FALSE); } else if (strcmp (protocol, "irc") == 0) { gtk_widget_set_sensitive (dialog->entry_server, FALSE); } else { gtk_widget_set_sensitive (dialog->entry_server, TRUE); } if (!tp_strdiff (protocol, "irc")) gtk_entry_set_text (GTK_ENTRY (dialog->entry_room), "#"); else gtk_entry_set_text (GTK_ENTRY (dialog->entry_room), ""); update_join_button_sensitivity (dialog); /* Final set up of the dialog */ gtk_widget_grab_focus (dialog->entry_room); gtk_editable_set_position (GTK_EDITABLE (dialog->entry_room), -1); }