static void new_chatroom_dialog_join (EmpathyNewChatroomDialog *dialog) { EmpathyAccountChooser *account_chooser; McAccount *account; const gchar *room; const gchar *server = NULL; gchar *room_name = NULL; room = gtk_entry_get_text (GTK_ENTRY (dialog->entry_room)); server = gtk_entry_get_text (GTK_ENTRY (dialog->entry_server)); account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser); account = empathy_account_chooser_get_account (account_chooser); if (!EMP_STR_EMPTY (server)) { room_name = g_strconcat (room, "@", server, NULL); } else { room_name = g_strdup (room); } DEBUG ("Requesting channel for '%s'", room_name); empathy_dispatcher_join_muc (account, room_name, NULL, NULL); g_free (room_name); }
static void contact_blocking_dialog_refilter_account_chooser ( EmpathyContactBlockingDialog *self) { EmpathyAccountChooser *chooser = EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser); TpConnection *conn; gboolean enabled; DEBUG ("Refiltering account chooser"); /* set the filter to refilter the account chooser */ self->priv->block_account_changed++; empathy_account_chooser_set_filter (chooser, contact_blocking_dialog_filter_account_chooser, self); self->priv->block_account_changed--; conn = empathy_account_chooser_get_connection (chooser); enabled = (empathy_account_chooser_get_account (chooser) != NULL && conn != NULL && tp_proxy_has_interface_by_id (conn, TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)); if (!enabled) DEBUG ("No account selected"); gtk_widget_set_sensitive (self->priv->add_button, enabled); gtk_widget_set_sensitive (self->priv->add_contact_entry, enabled); contact_blocking_dialog_account_changed (self->priv->account_chooser, self); }
static void update_avatar_chooser_account_cb (EmpathyAccountChooser *account_chooser, EmpathyAvatarChooser *avatar_chooser) { TpAccount *account; account = empathy_account_chooser_get_account (account_chooser); if (account == NULL) return; empathy_avatar_chooser_set_account (avatar_chooser, account); }
static void new_chatroom_dialog_store_last_account (GSettings *gsettings, EmpathyAccountChooser *account_chooser) { TpAccount *account; const char *account_path; account = empathy_account_chooser_get_account (account_chooser); if (account == NULL) return; account_path = tp_proxy_get_object_path (account); DEBUG ("Storing account path '%s'", account_path); g_settings_set (gsettings, EMPATHY_PREFS_CHAT_ROOM_LAST_ACCOUNT, "o", account_path); }
static void new_chatroom_dialog_update_widgets (EmpathyNewChatroomDialog *dialog) { EmpathyAccountChooser *account_chooser; McAccount *account; McProfile *profile; const gchar *protocol; const gchar *room; account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser); account = empathy_account_chooser_get_account (account_chooser); profile = mc_account_get_profile (account); protocol = mc_profile_get_protocol_name (profile); 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); gtk_widget_show (dialog->vbox_browse); } else if (strcmp (protocol, "local-xmpp") == 0) { gtk_widget_set_sensitive (dialog->entry_server, FALSE); gtk_widget_show (dialog->vbox_browse); } else if (strcmp (protocol, "irc") == 0) { gtk_widget_set_sensitive (dialog->entry_server, FALSE); gtk_widget_show (dialog->vbox_browse); } else { gtk_widget_set_sensitive (dialog->entry_server, TRUE); gtk_widget_show (dialog->vbox_browse); } room = gtk_entry_get_text (GTK_ENTRY (dialog->entry_room)); gtk_widget_set_sensitive (dialog->button_join, !EMP_STR_EMPTY (room)); /* Final set up of the dialog */ gtk_widget_grab_focus (dialog->entry_room); g_object_unref (account); g_object_unref (profile); }
static void new_chatroom_dialog_account_changed_cb (GtkComboBox *combobox, EmpathyNewChatroomDialog *dialog) { EmpathyAccountChooser *account_chooser; McAccount *account; gboolean listing = FALSE; if (dialog->room_list) { g_object_unref (dialog->room_list); } ephy_spinner_stop (EPHY_SPINNER (dialog->throbber)); new_chatroom_dialog_model_clear (dialog); account_chooser = EMPATHY_ACCOUNT_CHOOSER (dialog->account_chooser); account = empathy_account_chooser_get_account (account_chooser); dialog->room_list = empathy_tp_roomlist_new (account); if (dialog->room_list) { g_signal_connect (dialog->room_list, "destroy", G_CALLBACK (new_chatroom_dialog_roomlist_destroy_cb), dialog); g_signal_connect (dialog->room_list, "new-room", G_CALLBACK (new_chatroom_dialog_new_room_cb), dialog); g_signal_connect (dialog->room_list, "notify::is-listing", G_CALLBACK (new_chatroom_dialog_listing_cb), dialog); listing = empathy_tp_roomlist_is_listing (dialog->room_list); if (listing) { ephy_spinner_start (EPHY_SPINNER (dialog->throbber)); } } new_chatroom_dialog_update_widgets (dialog); }