[darcs-to-svn @ Save/Resore the visibility of main window and show account dialog...
authorXavier Claessens <xclaesse@src.gnome.org>
Sat, 12 May 2007 19:42:35 +0000 (19:42 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Sat, 12 May 2007 19:42:35 +0000 (19:42 +0000)
svn path=/trunk/; revision=48

libempathy-gtk/empathy-main-window.c
libempathy-gtk/empathy-status-icon.c
src/empathy-main.c

index dcee740..b53f666 100644 (file)
@@ -331,7 +331,6 @@ empathy_main_window_show (void)
                                              window);
 
        main_window_update_status (window);
-       gtk_widget_show (window->window);
 
        return window->window;
 }
index 0aa0a76..5b764c6 100644 (file)
@@ -38,6 +38,7 @@
 #include "gossip-presence-chooser.h"
 #include "gossip-preferences.h"
 #include "gossip-ui-utils.h"
+#include "gossip-accounts-dialog.h"
 
 #define GET_PRIV(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), \
                       EMPATHY_TYPE_STATUS_ICON, EmpathyStatusIconPriv))
@@ -141,6 +142,8 @@ empathy_status_icon_new (GtkWindow *window)
 {
        EmpathyStatusIconPriv *priv;
        EmpathyStatusIcon     *icon;
+       gboolean               should_hide;
+       gboolean               visible;
 
        g_return_val_if_fail (GTK_IS_WINDOW (window), NULL);
 
@@ -153,6 +156,15 @@ empathy_status_icon_new (GtkWindow *window)
                          G_CALLBACK (status_icon_delete_event_cb),
                          icon);
 
+       gossip_conf_get_bool (gossip_conf_get (),
+                             GOSSIP_PREFS_UI_MAIN_WINDOW_HIDDEN,
+                             &should_hide);
+       visible = gossip_window_get_is_visible (window);
+
+       if ((!should_hide && !visible) || (should_hide && visible)) {
+               status_icon_toggle_visibility (icon);
+       }
+
        return icon;
 }
 
@@ -201,9 +213,21 @@ status_icon_toggle_visibility (EmpathyStatusIcon *icon)
                gossip_conf_set_bool (gossip_conf_get (),
                                      GOSSIP_PREFS_UI_MAIN_WINDOW_HIDDEN, TRUE);
        } else {
+               GList *accounts;
+
                gossip_window_present (GTK_WINDOW (priv->window), TRUE);
                gossip_conf_set_bool (gossip_conf_get (),
                                      GOSSIP_PREFS_UI_MAIN_WINDOW_HIDDEN, FALSE);
+       
+               /* Show the accounts dialog if there is no enabled accounts */
+               accounts = mc_accounts_list_by_enabled (TRUE);
+               if (accounts) {
+                       mc_accounts_list_free (accounts);
+               } else {
+                       gossip_debug (DEBUG_DOMAIN,
+                                     "No enabled account, Showing account dialog");
+                       gossip_accounts_dialog_show ();
+               }
        }
 }
 
index c632fa6..d693ba6 100644 (file)
@@ -36,7 +36,6 @@
 #include <libempathy/gossip-presence.h>
 #include <libempathy-gtk/empathy-main-window.h>
 #include <libempathy-gtk/empathy-status-icon.h>
-#include <libempathy-gtk/gossip-accounts-dialog.h>
 
 #include "empathy-filter.h"
 
@@ -126,7 +125,6 @@ new_channel_cb (EmpathyFilter *filter,
 int
 main (int argc, char *argv[])
 {
-       GList             *accounts;
        EmpathyStatusIcon *icon;
        GtkWidget         *window;
        MissionControl    *mc;
@@ -159,14 +157,6 @@ main (int argc, char *argv[])
        window = empathy_main_window_show ();
        icon = empathy_status_icon_new (GTK_WINDOW (window));
 
-       /* Show the accounts dialog if there is no enabled accounts */
-       accounts = mc_accounts_list_by_enabled (TRUE);
-       if (accounts) {
-               mc_accounts_list_free (accounts);
-       } else {
-               gossip_accounts_dialog_show ();
-       }
-
        gtk_main ();
 
        mission_control_set_presence (mc,