]> git.0d.be Git - empathy.git/blobdiff - src/empathy-main-window.c
Moved empathy-accounts-dialog from libempathy-gtk to src. (Jonny Lamb)
[empathy.git] / src / empathy-main-window.c
index 6f3ad548119c5211eeddc3608b38c1608ae39b7f..156d2e7cc9708cbfa09b1990670b70a43381b6d8 100644 (file)
@@ -29,7 +29,6 @@
 #include <glib/gi18n.h>
 
 #include <libempathy/empathy-contact.h>
-#include <libempathy/empathy-debug.h>
 #include <libempathy/empathy-utils.h>
 #include <libempathy/empathy-chatroom-manager.h>
 #include <libempathy/empathy-chatroom.h>
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-geometry.h>
 #include <libempathy-gtk/empathy-conf.h>
-#include <libempathy-gtk/empathy-accounts-dialog.h>
 #include <libempathy-gtk/empathy-log-window.h>
 #include <libempathy-gtk/empathy-new-message-dialog.h>
 #include <libempathy-gtk/empathy-gtk-enum-types.h>
 
+#include "empathy-accounts-dialog.h"
 #include "empathy-main-window.h"
 #include "ephy-spinner.h"
 #include "empathy-preferences.h"
@@ -57,7 +56,8 @@
 #include "empathy-new-chatroom-dialog.h"
 #include "empathy-chatrooms-window.h"
 
-#define DEBUG_DOMAIN "MainWindow"
+#define DEBUG_FLAG EMPATHY_DEBUG_OTHER
+#include <libempathy/empathy-debug.h>
 
 /* Minimum width of roster window if something goes wrong. */
 #define MIN_WIDTH 50
@@ -73,6 +73,7 @@ typedef struct {
        EmpathyContactListStore *list_store;
        MissionControl          *mc;
        EmpathyChatroomManager  *chatroom_manager;
+       gpointer                 token;
 
        GtkWidget              *window;
        GtkWidget              *main_vbox;
@@ -186,6 +187,7 @@ empathy_main_window_show (void)
        gboolean                  show_avatars;
        gboolean                  compact_contact_list;
        gint                      x, y, w, h;
+       gchar                    *filename;
 
        if (window) {
                empathy_window_present (GTK_WINDOW (window->window), TRUE);
@@ -195,7 +197,8 @@ empathy_main_window_show (void)
        window = g_new0 (EmpathyMainWindow, 1);
 
        /* Set up interface */
-       glade = empathy_glade_get_file ("empathy-main-window.glade",
+       filename = empathy_file_lookup ("empathy-main-window.glade", "src");
+       glade = empathy_glade_get_file (filename,
                                       "main_window",
                                       NULL,
                                       "main_window", &window->window,
@@ -210,6 +213,7 @@ empathy_main_window_show (void)
                                       "presence_toolbar", &window->presence_toolbar,
                                       "roster_scrolledwindow", &sw,
                                       NULL);
+       g_free (filename);
 
        empathy_glade_connect (glade,
                              window,
@@ -236,9 +240,9 @@ empathy_main_window_show (void)
        g_object_unref (glade);
 
        window->mc = empathy_mission_control_new ();
-       dbus_g_proxy_connect_signal (DBUS_G_PROXY (window->mc), "AccountStatusChanged",
-                                    G_CALLBACK (main_window_status_changed_cb),
-                                    window, NULL);
+       window->token = empathy_connect_to_account_status_changed (window->mc,
+                                                  G_CALLBACK (main_window_status_changed_cb),
+                                                  window, NULL);
 
        window->errors = g_hash_table_new_full (empathy_account_hash,
                                                empathy_account_equal,
@@ -287,7 +291,8 @@ empathy_main_window_show (void)
        list_iface = EMPATHY_CONTACT_LIST (empathy_contact_manager_new ());
        window->list_store = empathy_contact_list_store_new (list_iface);
        window->list_view = empathy_contact_list_view_new (window->list_store,
-                                                          EMPATHY_CONTACT_LIST_FEATURE_ALL);
+                                                          EMPATHY_CONTACT_LIST_FEATURE_ALL,
+                                                          EMPATHY_CONTACT_FEATURE_ALL);
        g_object_unref (list_iface);
 
        gtk_widget_show (GTK_WIDGET (window->list_view));
@@ -304,7 +309,7 @@ empathy_main_window_show (void)
                /* Use the defaults from the glade file if we
                 * don't have good w, h geometry.
                 */
-               empathy_debug (DEBUG_DOMAIN, "Configuring window default size w:%d, h:%d", w, h);
+               DEBUG ("Configuring window default size w:%d, h:%d", w, h);
                gtk_window_set_default_size (GTK_WINDOW (window->window), w, h);
        }
 
@@ -312,7 +317,7 @@ empathy_main_window_show (void)
                /* Let the window manager position it if we
                 * don't have good x, y coordinates.
                 */
-               empathy_debug (DEBUG_DOMAIN, "Configuring window default position x:%d, y:%d", x, y);
+               DEBUG ("Configuring window default position x:%d, y:%d", x, y);
                gtk_window_move (GTK_WINDOW (window->window), x, y);
        }
 
@@ -371,9 +376,7 @@ main_window_destroy_cb (GtkWidget         *widget,
        /* Save user-defined accelerators. */
        main_window_accels_save ();
 
-       dbus_g_proxy_disconnect_signal (DBUS_G_PROXY (window->mc), "AccountStatusChanged",
-                                       G_CALLBACK (main_window_status_changed_cb),
-                                       window);
+       empathy_disconnect_account_status_changed (window->token);
 
        if (window->size_timeout_id) {
                g_source_remove (window->size_timeout_id);
@@ -503,7 +506,7 @@ main_window_favorite_chatroom_join (EmpathyChatroom *chatroom)
        account = empathy_chatroom_get_account (chatroom);
        room = empathy_chatroom_get_room (chatroom);
 
-       empathy_debug (DEBUG_DOMAIN, "Requesting channel for '%s'", room);
+       DEBUG ("Requesting channel for '%s'", room);
 
        mission_control_request_channel_with_string_handle (mc,
                                                            account,
@@ -592,53 +595,43 @@ main_window_edit_button_press_event_cb (GtkWidget         *widget,
                                        GdkEventButton    *event,
                                        EmpathyMainWindow *window)
 {
-       EmpathyContact *contact;
-       gchar         *group;
+       GtkWidget *submenu;
 
        if (!event->button == 1) {
                return FALSE;
        }
 
-       group = empathy_contact_list_view_get_selected_group (window->list_view);
-       if (group) {
+       submenu = empathy_contact_list_view_get_contact_menu (window->list_view);
+       if (submenu) {
                GtkMenuItem *item;
                GtkWidget   *label;
-               GtkWidget   *submenu;
 
                item = GTK_MENU_ITEM (window->edit_context);
                label = gtk_bin_get_child (GTK_BIN (item));
-               gtk_label_set_text (GTK_LABEL (label), _("Group"));
+               gtk_label_set_text (GTK_LABEL (label), _("Contact"));
 
                gtk_widget_show (window->edit_context);
                gtk_widget_show (window->edit_context_separator);
 
-               submenu = empathy_contact_list_view_get_group_menu (window->list_view);
                gtk_menu_item_set_submenu (item, submenu);
 
-               g_free (group);
-
                return FALSE;
        }
 
-       contact = empathy_contact_list_view_get_selected (window->list_view);
-       if (contact) {
+       submenu = empathy_contact_list_view_get_group_menu (window->list_view);
+       if (submenu) {
                GtkMenuItem *item;
                GtkWidget   *label;
-               GtkWidget   *submenu;
 
                item = GTK_MENU_ITEM (window->edit_context);
                label = gtk_bin_get_child (GTK_BIN (item));
-               gtk_label_set_text (GTK_LABEL (label), _("Contact"));
+               gtk_label_set_text (GTK_LABEL (label), _("Group"));
 
                gtk_widget_show (window->edit_context);
                gtk_widget_show (window->edit_context_separator);
 
-               submenu = empathy_contact_list_view_get_contact_menu (window->list_view,
-                                                                    contact);
                gtk_menu_item_set_submenu (item, submenu);
 
-               g_object_unref (contact);
-
                return FALSE;
        }
 
@@ -652,7 +645,7 @@ static void
 main_window_edit_accounts_cb (GtkWidget         *widget,
                              EmpathyMainWindow *window)
 {
-       empathy_accounts_dialog_show (GTK_WINDOW (window->window));
+       empathy_accounts_dialog_show (GTK_WINDOW (window->window), NULL);
 }
 
 static void
@@ -704,7 +697,7 @@ static void
 main_window_help_contents_cb (GtkWidget         *widget,
                              EmpathyMainWindow *window)
 {
-       //empathy_help_show ();
+       empathy_url_show ("ghelp:empathy");
 }
 
 static gboolean
@@ -717,7 +710,7 @@ main_window_throbber_button_press_event_cb (GtkWidget         *throbber_ebox,
                return FALSE;
        }
 
-       empathy_accounts_dialog_show (GTK_WINDOW (window->window));
+       empathy_accounts_dialog_show (GTK_WINDOW (window->window), NULL);
 
        return FALSE;
 }
@@ -729,9 +722,9 @@ main_window_error_edit_clicked_cb (GtkButton         *button,
        McAccount *account;
        GtkWidget *error_widget;
 
-       empathy_accounts_dialog_show (GTK_WINDOW (window->window));
-
        account = g_object_get_data (G_OBJECT (button), "account");
+       empathy_accounts_dialog_show (GTK_WINDOW (window->window), account);
+
        error_widget = g_hash_table_lookup (window->errors, account);
        gtk_widget_destroy (error_widget);
        g_hash_table_remove (window->errors, account);
@@ -930,7 +923,7 @@ main_window_status_changed_cb (MissionControl           *mc,
                        message = _("Certificate fingerprint mismatch");
                        break;
                case TP_CONNECTION_STATUS_REASON_CERT_SELF_SIGNED:
-                       message = _("Certificate self signed");
+                       message = _("Certificate self-signed");
                        break;
                case TP_CONNECTION_STATUS_REASON_CERT_OTHER_ERROR:
                        message = _("Certificate error");
@@ -1016,7 +1009,7 @@ main_window_accels_load (void)
 
        filename = g_build_filename (g_get_home_dir (), ".gnome2", PACKAGE_NAME, ACCELS_FILENAME, NULL);
        if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
-               empathy_debug (DEBUG_DOMAIN, "Loading from:'%s'", filename);
+               DEBUG ("Loading from:'%s'", filename);
                gtk_accel_map_load (filename);
        }
 
@@ -1034,7 +1027,7 @@ main_window_accels_save (void)
        file_with_path = g_build_filename (dir, ACCELS_FILENAME, NULL);
        g_free (dir);
 
-       empathy_debug (DEBUG_DOMAIN, "Saving to:'%s'", file_with_path);
+       DEBUG ("Saving to:'%s'", file_with_path);
        gtk_accel_map_save (file_with_path);
 
        g_free (file_with_path);