]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/gossip-accounts-dialog.c
[darcs-to-svn @ Use icon-name API instead of stock icons and update tango icons]
[empathy.git] / libempathy-gtk / gossip-accounts-dialog.c
index 6f61dfb36191d216b2a7836d6ad760197ac80b11..449577aec7de56b9be8078e797519edd3ba12443 100644 (file)
@@ -37,8 +37,8 @@
 #include <libmissioncontrol/mission-control.h>
 #include <libmissioncontrol/mc-account-monitor.h>
 #include <libtelepathy/tp-constants.h>
+#include <libtelepathy/tp-helpers.h>
 
-#include <libempathy/empathy-session.h>
 #include <libempathy/gossip-debug.h>
 #include <libempathy/gossip-paths.h>
 #include <libempathy/gossip-utils.h>
 #define FLASH_TIMEOUT 500
 
 typedef struct {
-       GtkWidget *window;
+       GtkWidget        *window;
 
-       GtkWidget *alignment_settings;
+       GtkWidget        *alignment_settings;
 
-       GtkWidget *vbox_details;
-       GtkWidget *frame_no_account;
-       GtkWidget *label_no_account;
-       GtkWidget *label_no_account_blurb;
+       GtkWidget        *vbox_details;
+       GtkWidget        *frame_no_account;
+       GtkWidget        *label_no_account;
+       GtkWidget        *label_no_account_blurb;
 
-       GtkWidget *treeview;
+       GtkWidget        *treeview;
 
-       GtkWidget *button_remove;
-       GtkWidget *button_connect;
+       GtkWidget        *button_remove;
+       GtkWidget        *button_connect;
 
-       GtkWidget *frame_new_account;
-       GtkWidget *combobox_profile;
-       GtkWidget *entry_name;
-       GtkWidget *table_new_account;
-       GtkWidget *button_create;
-       GtkWidget *button_cancel;
+       GtkWidget        *frame_new_account;
+       GtkWidget        *combobox_profile;
+       GtkWidget        *entry_name;
+       GtkWidget        *table_new_account;
+       GtkWidget        *button_create;
+       GtkWidget        *button_back;
 
-       GtkWidget *image_type;
-       GtkWidget *label_name;
-       GtkWidget *label_type;
-       GtkWidget *settings_widget;
+       GtkWidget        *image_type;
+       GtkWidget        *label_name;
+       GtkWidget        *label_type;
+       GtkWidget        *settings_widget;
 
-       gboolean   connecting_show;
-       guint      connecting_id;
-       gboolean   account_changed;
+       gboolean          connecting_show;
+       guint             connecting_id;
+       gboolean          account_changed;
+
+       MissionControl   *mc;
+       McAccountMonitor *monitor;
 } GossipAccountsDialog;
 
 enum {
@@ -133,7 +136,7 @@ static void       accounts_dialog_entry_name_changed_cb     (GtkWidget
                                                             GossipAccountsDialog            *dialog);
 static void       accounts_dialog_button_create_clicked_cb  (GtkWidget                       *button,
                                                             GossipAccountsDialog            *dialog);
-static void       accounts_dialog_button_cancel_clicked_cb  (GtkWidget                       *button,
+static void       accounts_dialog_button_back_clicked_cb    (GtkWidget                       *button,
                                                             GossipAccountsDialog            *dialog);
 static void       accounts_dialog_button_connect_clicked_cb (GtkWidget                       *button,
                                                             GossipAccountsDialog            *dialog);
@@ -162,13 +165,11 @@ accounts_dialog_setup (GossipAccountsDialog *dialog)
        GtkTreeSelection *selection;
        GtkTreeIter       iter;
        GList            *accounts, *l;
-       MissionControl   *mc;
 
        view = GTK_TREE_VIEW (dialog->treeview);
        store = GTK_LIST_STORE (gtk_tree_view_get_model (view));
        selection = gtk_tree_view_get_selection (view);
 
-       mc = empathy_session_get_mission_control ();
        accounts = mc_accounts_list ();
 
        for (l = accounts; l; l = l->next) {
@@ -183,7 +184,7 @@ accounts_dialog_setup (GossipAccountsDialog *dialog)
                        continue;
                }
 
-               status = mission_control_get_connection_status (mc, account, NULL);
+               status = mission_control_get_connection_status (dialog->mc, account, NULL);
 
                gtk_list_store_append (store, &iter);
                gtk_list_store_set (store, &iter,
@@ -192,7 +193,7 @@ accounts_dialog_setup (GossipAccountsDialog *dialog)
                                    COL_ACCOUNT_POINTER, account,
                                    -1);
 
-               accounts_dialog_status_changed_cb (mc,
+               accounts_dialog_status_changed_cb (dialog->mc,
                                                   status,
                                                   MC_PRESENCE_UNSET,
                                                   TP_CONN_STATUS_REASON_NONE_SPECIFIED,
@@ -304,15 +305,12 @@ accounts_dialog_update_account (GossipAccountsDialog *dialog,
 
        if (account) {
                McProfile *profile;
-               GdkPixbuf *pixbuf;
-
-               pixbuf = gossip_pixbuf_from_account (account, GTK_ICON_SIZE_DIALOG);
-               gtk_image_set_from_pixbuf (GTK_IMAGE (dialog->image_type), pixbuf);
-               if (pixbuf) {
-                       g_object_unref (pixbuf);
-               }
 
                profile = mc_account_get_profile (account);
+               gtk_image_set_from_icon_name (GTK_IMAGE (dialog->image_type),
+                                             mc_profile_get_icon_name (profile),
+                                             GTK_ICON_SIZE_DIALOG);
+               
 
                gtk_label_set_text (GTK_LABEL (dialog->label_type),
                                    mc_profile_get_display_name (profile));
@@ -411,6 +409,7 @@ accounts_dialog_model_pixbuf_data_func (GtkTreeViewColumn    *tree_column,
                                        GossipAccountsDialog *dialog)
 {
        McAccount                 *account;
+       const gchar               *icon_name;
        GdkPixbuf                 *pixbuf;
        TelepathyConnectionStatus  status;
 
@@ -419,7 +418,8 @@ accounts_dialog_model_pixbuf_data_func (GtkTreeViewColumn    *tree_column,
                            COL_ACCOUNT_POINTER, &account,
                            -1);
 
-       pixbuf = gossip_pixbuf_from_account (account, GTK_ICON_SIZE_BUTTON);
+       icon_name = gossip_icon_name_from_account (account);
+       pixbuf = gossip_pixbuf_from_icon_name (icon_name, GTK_ICON_SIZE_BUTTON);
 
        if (pixbuf) {
                if (status == TP_CONN_STATUS_DISCONNECTED ||
@@ -554,7 +554,6 @@ static void
 accounts_dialog_add_account (GossipAccountsDialog *dialog,
                             McAccount            *account)
 {
-       MissionControl            *mc;
        TelepathyConnectionStatus  status;
        const gchar               *name;
        GtkTreeView               *view;
@@ -585,8 +584,7 @@ accounts_dialog_add_account (GossipAccountsDialog *dialog,
                }
        }
 
-       mc = empathy_session_get_mission_control ();
-       status = mission_control_get_connection_status (mc, account, NULL);
+       status = mission_control_get_connection_status (dialog->mc, account, NULL);
        name = mc_account_get_display_name (account);
 
        g_return_if_fail (name != NULL);
@@ -618,10 +616,8 @@ accounts_dialog_account_removed_cb (McAccountMonitor     *monitor,
                                    gchar                *unique_name,
                                    GossipAccountsDialog *dialog)
 {
-       MissionControl *mc;
-       McAccount      *account;
+       McAccount *account;
 
-       mc = empathy_session_get_mission_control ();
        account = mc_account_lookup (unique_name);
 
        accounts_dialog_model_set_selected (dialog, account);
@@ -782,8 +778,8 @@ accounts_dialog_button_create_clicked_cb (GtkWidget             *button,
 }
 
 static void
-accounts_dialog_button_cancel_clicked_cb (GtkWidget             *button,
-                                         GossipAccountsDialog  *dialog)
+accounts_dialog_button_back_clicked_cb (GtkWidget             *button,
+                                       GossipAccountsDialog  *dialog)
 {
        McAccount *account;
 
@@ -902,23 +898,19 @@ static void
 accounts_dialog_destroy_cb (GtkWidget            *widget,
                            GossipAccountsDialog *dialog)
 {
-       MissionControl   *mc;
-       McAccountMonitor *monitor;
-       GList            *accounts, *l;
-
-       mc = empathy_session_get_mission_control ();
-       monitor = mc_account_monitor_new ();
+       GList *accounts, *l;
 
        /* Disconnect signals */
-       g_signal_handlers_disconnect_by_func (monitor,
+       g_signal_handlers_disconnect_by_func (dialog->monitor,
                                              accounts_dialog_account_added_cb,
                                              dialog);
-       g_signal_handlers_disconnect_by_func (monitor,
+       g_signal_handlers_disconnect_by_func (dialog->monitor,
                                              accounts_dialog_account_removed_cb,
                                              dialog);
-       dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (mc), "AccountStatusChanged",
-                                    G_CALLBACK (accounts_dialog_status_changed_cb),
-                                    dialog);
+       dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (dialog->mc),
+                                       "AccountStatusChanged",
+                                       G_CALLBACK (accounts_dialog_status_changed_cb),
+                                       dialog);
 
        /* Delete incomplete accounts */
        accounts = mc_accounts_list ();
@@ -940,6 +932,9 @@ accounts_dialog_destroy_cb (GtkWidget            *widget,
                g_source_remove (dialog->connecting_id);
        }
 
+       g_object_unref (dialog->mc);
+       g_object_unref (dialog->monitor);
+       
        g_free (dialog);
 }
 
@@ -947,8 +942,6 @@ GtkWidget *
 gossip_accounts_dialog_show (void)
 {
        static GossipAccountsDialog *dialog = NULL;
-       MissionControl              *mc;
-       McAccountMonitor            *monitor;
        GladeXML                    *glade;
        GtkWidget                   *bbox;
        GtkWidget                   *button_close;
@@ -975,7 +968,7 @@ gossip_accounts_dialog_show (void)
                                       "entry_name", &dialog->entry_name,
                                       "table_new_account", &dialog->table_new_account,
                                       "button_create", &dialog->button_create,
-                                      "button_cancel", &dialog->button_cancel,
+                                      "button_back", &dialog->button_back,
                                       "image_type", &dialog->image_type,
                                       "label_type", &dialog->label_type,
                                       "label_name", &dialog->label_name,
@@ -989,7 +982,7 @@ gossip_accounts_dialog_show (void)
                              "accounts_dialog", "destroy", accounts_dialog_destroy_cb,
                              "accounts_dialog", "response", accounts_dialog_response_cb,
                              "button_create", "clicked", accounts_dialog_button_create_clicked_cb,
-                             "button_cancel", "clicked", accounts_dialog_button_cancel_clicked_cb,
+                             "button_back", "clicked", accounts_dialog_button_back_clicked_cb,
                              "entry_name", "changed", accounts_dialog_entry_name_changed_cb,
                              "treeview", "row-activated", accounts_dialog_treeview_row_activated_cb,
                              "button_connect", "clicked", accounts_dialog_button_connect_clicked_cb,
@@ -1010,17 +1003,17 @@ gossip_accounts_dialog_show (void)
        gtk_widget_show (dialog->combobox_profile);
 
        /* Set up signalling */
-       mc = empathy_session_get_mission_control ();
-       monitor = mc_account_monitor_new ();
+       dialog->mc = mission_control_new (tp_get_bus ());
+       dialog->monitor = mc_account_monitor_new ();
 
        /* FIXME: connect account-enabled/disabled too */
-       g_signal_connect (monitor, "account-created",
+       g_signal_connect (dialog->monitor, "account-created",
                          G_CALLBACK (accounts_dialog_account_added_cb),
                          dialog);
-       g_signal_connect (monitor, "account-deleted",
+       g_signal_connect (dialog->monitor, "account-deleted",
                          G_CALLBACK (accounts_dialog_account_removed_cb),
                          dialog);
-       dbus_g_proxy_connect_signal (DBUS_G_PROXY (mc), "AccountStatusChanged",
+       dbus_g_proxy_connect_signal (DBUS_G_PROXY (dialog->mc), "AccountStatusChanged",
                                     G_CALLBACK (accounts_dialog_status_changed_cb),
                                     dialog, NULL);