]> git.0d.be Git - empathy.git/blobdiff - src/empathy-main-window.c
Merge branch 'debug-window'
[empathy.git] / src / empathy-main-window.c
index a40e2964900f7b504ff7c25e46609dd70ffbe903..8fb127b90c2a6b2a93f653724af3e86d5373d1fa 100644 (file)
 #include <libempathy-gtk/empathy-sound.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 
-#include <libmissioncontrol/mission-control.h>
-
 #include "empathy-accounts-dialog.h"
 #include "empathy-main-window.h"
 #include "ephy-spinner.h"
 #include "empathy-preferences.h"
 #include "empathy-about-dialog.h"
-#include "empathy-debug-dialog.h"
+#include "empathy-debug-window.h"
 #include "empathy-new-chatroom-dialog.h"
 #include "empathy-map-view.h"
 #include "empathy-chatrooms-window.h"
@@ -81,7 +79,6 @@
 typedef struct {
        EmpathyContactListView  *list_view;
        EmpathyContactListStore *list_store;
-       MissionControl          *mc;
        EmpathyAccountManager   *account_manager;
        EmpathyChatroomManager  *chatroom_manager;
        EmpathyEventManager     *event_manager;
@@ -97,8 +94,8 @@ typedef struct {
 
        GtkRadioAction         *sort_by_name;
        GtkRadioAction         *sort_by_status;
+       GtkRadioAction         *normal_with_avatars;
        GtkRadioAction         *normal_size;
-       GtkRadioAction         *normal_without_icons;
        GtkRadioAction         *compact_size;
 
        GtkUIManager           *ui_manager;
@@ -611,7 +608,7 @@ main_window_accels_load (void)
 {
        gchar *filename;
 
-       filename = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, ACCELS_FILENAME, NULL);
+       filename = g_build_filename (g_get_user_config_dir (), PACKAGE_NAME, ACCELS_FILENAME, NULL);
        if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
                DEBUG ("Loading from:'%s'", filename);
                gtk_accel_map_load (filename);
@@ -626,7 +623,7 @@ main_window_accels_save (void)
        gchar *dir;
        gchar *file_with_path;
 
-       dir = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, NULL);
+       dir = g_build_filename (g_get_user_config_dir (), PACKAGE_NAME, NULL);
        g_mkdir_with_parents (dir, S_IRUSR | S_IWUSR | S_IXUSR);
        file_with_path = g_build_filename (dir, ACCELS_FILENAME, NULL);
        g_free (dir);
@@ -654,7 +651,6 @@ main_window_destroy_cb (GtkWidget         *widget,
 
        g_list_free (window->actions_connected);
 
-       g_object_unref (window->mc);
        g_object_unref (window->account_manager);
        g_object_unref (window->list_store);
        g_hash_table_destroy (window->errors);
@@ -723,21 +719,46 @@ main_window_view_show_offline_cb (GtkToggleAction   *action,
        //empathy_sound_set_enabled (TRUE);
 }
 
+static void
+main_window_notify_sort_contact_cb (EmpathyConf       *conf,
+                                   const gchar       *key,
+                                   EmpathyMainWindow *window)
+{
+       gchar *str = NULL;
+
+       if (empathy_conf_get_string (conf, key, &str) && str) {
+               GType       type;
+               GEnumClass *enum_class;
+               GEnumValue *enum_value;
+
+               type = empathy_contact_list_store_sort_get_type ();
+               enum_class = G_ENUM_CLASS (g_type_class_peek (type));
+               enum_value = g_enum_get_value_by_nick (enum_class, str);
+               if (enum_value) {
+                       /* By changing the value of the GtkRadioAction,
+                          it emits a signal that calls main_window_view_sort_contacts_cb
+                          which updates the contacts list */
+                       gtk_radio_action_set_current_value (window->sort_by_name,
+                                                           enum_value->value);
+               } else {
+                       g_warning ("Wrong value for sort_criterium configuration : %s", str);
+               }
+               g_free (str);
+       }
+}
+
 static void
 main_window_view_sort_contacts_cb (GtkRadioAction    *action,
                                   GtkRadioAction    *current,
                                   EmpathyMainWindow *window)
 {
        EmpathyContactListStoreSort value;
-       const gchar *valueStr = NULL;
-
-       value = gtk_radio_action_get_current_value (action);
-
        GSList      *group;
        GType        type;
        GEnumClass  *enum_class;
        GEnumValue  *enum_value;
 
+       value = gtk_radio_action_get_current_value (action);
        group = gtk_radio_action_get_group (action);
 
        /* Get string from index */
@@ -746,22 +767,20 @@ main_window_view_sort_contacts_cb (GtkRadioAction    *action,
        enum_value = g_enum_get_value (enum_class, g_slist_index (group, current));
 
        if (!enum_value) {
-               g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioButton index:%d",
+               g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioAction index:%d",
                           g_slist_index (group, action));
        } else {
-               valueStr = enum_value->value_nick;
-
                empathy_conf_set_string (empathy_conf_get (),
                                         EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
-                                        valueStr);
+                                        enum_value->value_nick);
        }
        empathy_contact_list_store_set_sort_criterium (window->list_store, value);
 }
 
 /* Matches GtkRadioAction values set in empathy-main-window.ui */
-#define CONTACT_LIST_NORMAL_SIZE               0
-#define CONTACT_LIST_NORMAL_WITHOUT_ICONS      1
-#define CONTACT_LIST_COMPACT_SIZE              2
+#define CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS          0
+#define CONTACT_LIST_NORMAL_SIZE                       1
+#define CONTACT_LIST_COMPACT_SIZE                      2
 
 static void
 main_window_view_contacts_list_size_cb (GtkRadioAction    *action,
@@ -774,17 +793,46 @@ main_window_view_contacts_list_size_cb (GtkRadioAction    *action,
 
        empathy_conf_set_bool (empathy_conf_get (),
                               EMPATHY_PREFS_UI_SHOW_AVATARS,
-                              value == CONTACT_LIST_NORMAL_SIZE);
+                              value == CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS);
        empathy_conf_set_bool (empathy_conf_get (),
                               EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
                               value == CONTACT_LIST_COMPACT_SIZE);
 
        empathy_contact_list_store_set_show_avatars (window->list_store,
-                                                    value == CONTACT_LIST_NORMAL_SIZE);
+                                                    value == CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS);
        empathy_contact_list_store_set_is_compact (window->list_store,
                                                   value == CONTACT_LIST_COMPACT_SIZE);
 }
 
+static void
+main_window_notify_contact_list_size_cb (EmpathyConf       *conf,
+                                        const gchar       *key,
+                                        EmpathyMainWindow *window)
+{
+       gboolean show_avatars;
+       gboolean compact_contact_list;
+       gint value = CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS;
+
+       if (empathy_conf_get_bool (conf,
+                                  EMPATHY_PREFS_UI_SHOW_AVATARS,
+                                  &show_avatars)
+           && empathy_conf_get_bool (conf,
+                                     EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+                                     &compact_contact_list)) {
+               if (compact_contact_list) {
+                       value = CONTACT_LIST_COMPACT_SIZE;
+               } else if (show_avatars) {
+                       value = CONTACT_LIST_NORMAL_SIZE_WITH_AVATARS;
+               } else {
+                       value = CONTACT_LIST_NORMAL_SIZE;
+               }
+       }
+       /* By changing the value of the GtkRadioAction,
+          it emits a signal that calls main_window_view_contacts_list_size_cb
+          which updates the contacts list */
+       gtk_radio_action_set_current_value (window->normal_with_avatars, value);
+}
+
 static void
 main_window_view_show_map_cb (GtkCheckMenuItem  *item,
                              EmpathyMainWindow *window)
@@ -1016,7 +1064,7 @@ static void
 main_window_help_debug_cb (GtkAction         *action,
                           EmpathyMainWindow *window)
 {
-       empathy_debug_dialog_new (GTK_WINDOW (window->window));
+       empathy_debug_window_new (GTK_WINDOW (window->window));
 }
 
 static void
@@ -1093,68 +1141,6 @@ main_window_notify_show_offline_cb (EmpathyConf *conf,
        }
 }
 
-static void
-main_window_notify_contact_list_size_cb (EmpathyConf       *conf,
-                                        const gchar       *key,
-                                        EmpathyMainWindow *window)
-{
-       gboolean show_avatars;
-       gboolean compact_contact_list;
-       gint value = CONTACT_LIST_NORMAL_SIZE;
-
-       if (empathy_conf_get_bool (conf,
-                                  EMPATHY_PREFS_UI_SHOW_AVATARS,
-                                  &show_avatars)
-           && empathy_conf_get_bool (conf,
-                                     EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-                                     &compact_contact_list)) {
-               if (compact_contact_list) {
-                       value = CONTACT_LIST_COMPACT_SIZE;
-               } else if (show_avatars) {
-                       value = CONTACT_LIST_NORMAL_SIZE;
-               } else {
-                       value = CONTACT_LIST_NORMAL_WITHOUT_ICONS;
-               }
-       }
-       gtk_radio_action_set_current_value (window->normal_size, value);
-}
-
-
-/* Matches GtkRadioAction values set in empathy-main-window.ui */
-#define CONTACT_LIST_SORT_BY_STATUS            0
-#define CONTACT_LIST_SORT_BY_NAME              1
-
-static void
-main_window_notify_sort_contact_cb (EmpathyConf       *conf,
-                                   const gchar       *key,
-                                   EmpathyMainWindow *window)
-{
-       gchar *str = NULL;
-
-       if (empathy_conf_get_string (conf, key, &str) && str) {
-               GType       type;
-               GEnumClass *enum_class;
-               GEnumValue *enum_value;
-
-               type = empathy_contact_list_store_sort_get_type ();
-               enum_class = G_ENUM_CLASS (g_type_class_peek (type));
-               enum_value = g_enum_get_value_by_nick (enum_class, str);
-
-               if (enum_value) {
-                       if (enum_value->value == EMPATHY_CONTACT_LIST_STORE_SORT_STATE) {
-                               gtk_radio_action_set_current_value (window->sort_by_name,
-                                                                   CONTACT_LIST_SORT_BY_STATUS);
-                       } else {
-                               gtk_radio_action_set_current_value (window->sort_by_name,
-                                                                   CONTACT_LIST_SORT_BY_NAME);
-                       }
-               } else {
-                       g_warning ("Wrong value for sort_criterium configuration : %s", str);
-               }
-               g_free (str);
-       }
-}
-
 static void
 main_window_connection_items_setup (EmpathyMainWindow *window,
                                    GtkBuilder        *gui)
@@ -1217,8 +1203,8 @@ empathy_main_window_show (void)
                                       "view_show_offline", &show_offline_widget,
                                       "view_sort_by_name", &window->sort_by_name,
                                       "view_sort_by_status", &window->sort_by_status,
+                                      "view_normal_size_with_avatars", &window->normal_with_avatars,
                                       "view_normal_size", &window->normal_size,
-                                      "view_normal_without_icons", &window->normal_without_icons,
                                       "view_compact_size", &window->compact_size,
                                       "view_history", &window->view_history,
                                       "view_show_map", &show_map_widget,
@@ -1241,7 +1227,7 @@ empathy_main_window_show (void)
                              "view_show_ft_manager", "activate", main_window_view_show_ft_manager,
                              "view_show_offline", "toggled", main_window_view_show_offline_cb,
                              "view_sort_by_name", "changed", main_window_view_sort_contacts_cb,
-                             "view_normal_size", "changed", main_window_view_contacts_list_size_cb,
+                             "view_normal_size_with_avatars", "changed", main_window_view_contacts_list_size_cb,
                              "view_show_map", "activate", main_window_view_show_map_cb,
                              "edit", "activate", main_window_edit_cb,
                              "edit_accounts", "activate", main_window_edit_accounts_cb,
@@ -1262,15 +1248,14 @@ empathy_main_window_show (void)
        gtk_action_set_visible (show_map_widget, FALSE);
 #endif
 
-       window->mc = empathy_mission_control_dup_singleton ();
        window->account_manager = empathy_account_manager_dup_singleton ();
 
        g_signal_connect (window->account_manager,
                          "account-connection-changed",
                          G_CALLBACK (main_window_connection_changed_cb), window);
 
-       window->errors = g_hash_table_new_full (empathy_account_hash,
-                                               empathy_account_equal,
+       window->errors = g_hash_table_new_full (g_direct_hash,
+                                               g_direct_equal,
                                                g_object_unref,
                                                NULL);
 
@@ -1419,6 +1404,8 @@ empathy_main_window_show (void)
 
        main_window_update_status (window, window->account_manager);
 
+       gtk_widget_show (window->window);
+
        return window->window;
 }