* Added window manager calls
authorSergio Villar Senin <svillar@igalia.com>
Tue, 10 Apr 2007 17:45:18 +0000 (17:45 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Tue, 10 Apr 2007 17:45:18 +0000 (17:45 +0000)
* Commented some code in the mail operations that should be reviewed
* Added support to automatically unregister windows when destroyed

pmo-trunk-r1533

src/maemo/easysetup/modest-easysetup-wizard.c
src/maemo/modest-main-window.c
src/modest-mail-operation.c
src/modest-main.c
src/modest-ui-actions.c
src/widgets/modest-window-mgr.c

index c9c13b4..12a8a50 100644 (file)
@@ -596,10 +596,11 @@ on_button_outgoing_smtp_servers (GtkButton *button, gpointer user_data)
         * so we can supply them when creating the connection somehow.
         */
        GtkWidget *window = GTK_WIDGET (modest_connection_specific_smtp_window_new ());
+
        gtk_window_set_transient_for (GTK_WINDOW (self), GTK_WINDOW (window));
        g_signal_connect (G_OBJECT (window), "hide",
                G_CALLBACK (on_smtp_servers_window_hide), self);
-    gtk_widget_show (window);
+       gtk_widget_show (window);
 }
 
 static GtkWidget* create_page_custom_outgoing (ModestEasysetupWizardDialog *self)
index 1d621fb..079111d 100644 (file)
@@ -295,14 +295,15 @@ get_toolbar (ModestMainWindow *self)
        
        /* Toolbar */
        toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar");
-       reply_button = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageReply");
-
-       menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolbarReplyContextMenu");
-       gtk_widget_tap_and_hold_setup (GTK_WIDGET (reply_button), menu, NULL, 0);
 
        /* Set homogeneous toolbar */
        gtk_container_foreach (GTK_CONTAINER (toolbar), set_homogeneous, NULL);
 
+       /* Set reply message tap and hold menu */
+       reply_button = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageReply");
+       menu = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolbarReplyContextMenu");
+       gtk_widget_tap_and_hold_setup (GTK_WIDGET (reply_button), menu, NULL, 0);
+
        return toolbar;
 }
 
index f57bd80..c0bf798 100644 (file)
@@ -758,30 +758,24 @@ on_refresh_folder (TnyFolder   *folder,
        modest_mail_operation_queue_remove (modest_runtime_get_mail_operation_queue (), self);
 }
 
-static void
-on_refresh_folder_status_update (TnyFolder *folder, const gchar *msg,
-                                gint num, gint total,  gpointer user_data)
-{
-       ModestMailOperation *self;
-       ModestMailOperationPrivate *priv;
-
-       /* TODO: if tinymail issues a status update before the
-          callback call then this could happen. If this is true the
-          we must review the design */
-       if (!G_IS_OBJECT (user_data))
-         return;
+/* static void */
+/* on_refresh_folder_status_update (TnyFolder *folder, const gchar *msg, */
+/*                              gint num, gint total,  gpointer user_data) */
+/* { */
+/*     ModestMailOperation *self; */
+/*     ModestMailOperationPrivate *priv; */
 
-       self = MODEST_MAIL_OPERATION (user_data);
-       priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self);
+/*     self = MODEST_MAIL_OPERATION (user_data); */
+/*     priv = MODEST_MAIL_OPERATION_GET_PRIVATE(self); */
 
-       priv->done = num;
-       priv->total = total;
+/*     priv->done = num; */
+/*     priv->total = total; */
 
-       if (num == 1 && total == 100)
-               return;
+/*     if (num == 1 && total == 100) */
+/*             return; */
 
-       g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL);
-}
+/*     g_signal_emit (G_OBJECT (self), signals[PROGRESS_CHANGED_SIGNAL], 0, NULL); */
+/* } */
 
 void 
 modest_mail_operation_refresh_folder  (ModestMailOperation *self,
@@ -796,10 +790,13 @@ modest_mail_operation_refresh_folder  (ModestMailOperation *self,
 
        priv->status = MODEST_MAIL_OPERATION_STATUS_IN_PROGRESS;
 
-       /* Refresh the folder */
+       /* Refresh the folder. TODO: tinymail could issue a status
+          updates before the callback call then this could happen. We
+          must review the design */
        tny_folder_refresh_async (folder,
                                  on_refresh_folder,
-                                 on_refresh_folder_status_update,
+/*                               on_refresh_folder_status_update, */
+                                 NULL,
                                  self);
 }
 
index dc211c7..925b84c 100644 (file)
@@ -220,6 +220,9 @@ start_ui (const gchar *account_name, const gchar* mailto, const gchar *cc, const
        if (!win) {
                g_printerr ("modest: failed to create window\n");
                return MODEST_ERR_UI;
+       } else {
+               ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
+               modest_window_mgr_register_window (mgr, win);
        }
        
        gtk_widget_show (GTK_WIDGET (win));
index e44c0c6..d1e3baa 100644 (file)
@@ -271,6 +271,7 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win)
        gchar *from_str = NULL;
        GError *err = NULL;
        TnyAccount *account;
+       ModestWindowMgr *mgr;
        
        account_name = g_strdup(modest_window_get_active_account (win));
        if (!account_name)
@@ -306,7 +307,11 @@ modest_ui_actions_on_new_msg (GtkAction *action, ModestWindow *win)
                goto cleanup;
        }
 
+       /* Create and register edit window */
        msg_win = modest_msg_edit_window_new (msg, account_name);
+       mgr = modest_runtime_get_window_mgr ();
+       modest_window_mgr_register_window (mgr, msg_win);
+
        if (win)
                gtk_window_set_transient_for (GTK_WINDOW (msg_win),
                                              GTK_WINDOW (win));        
@@ -344,6 +349,7 @@ reply_forward_func (gpointer data, gpointer user_data)
        GError *err = NULL;
        TnyFolder *folder = NULL;
        TnyAccount *account = NULL;
+       ModestWindowMgr *mgr;
        
        msg = TNY_MSG (data);
        helper = (GetMsgAsyncHelper *) user_data;
@@ -401,9 +407,13 @@ reply_forward_func (gpointer data, gpointer user_data)
                g_error_free (err);
                goto cleanup;
        }       
-                       
-       /* Show edit window */
+
+       /* Create and register the windows */                   
        msg_win = modest_msg_edit_window_new (new_msg, rf_helper->account_name);
+       mgr = modest_runtime_get_window_mgr ();
+       modest_window_mgr_register_window (mgr, msg_win);
+
+       /* Show edit window */
        gtk_widget_show_all (GTK_WIDGET (msg_win));
 
 cleanup:
@@ -756,6 +766,7 @@ modest_ui_actions_on_header_activated (ModestHeaderView *folder_view, TnyHeader
        TnyFolder *folder = NULL;
        TnyMsg    *msg    = NULL;
        gchar *account    = NULL;
+       ModestWindowMgr *mgr;
        
        g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window));
        
@@ -778,8 +789,12 @@ modest_ui_actions_on_header_activated (ModestHeaderView *folder_view, TnyHeader
        account =  g_strdup(modest_window_get_active_account(MODEST_WINDOW(main_window)));
        if (!account)
                account = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
-       
+
+       /* Create and register message view window */   
        win = modest_msg_view_window_new (msg, account);
+       mgr = modest_runtime_get_window_mgr ();
+       modest_window_mgr_register_window (mgr, win);
+
        gtk_window_set_transient_for (GTK_WINDOW (win),
                                      GTK_WINDOW (main_window));
 
index 1e40676..64a2dcb 100644 (file)
 static void modest_window_mgr_class_init (ModestWindowMgrClass *klass);
 static void modest_window_mgr_init       (ModestWindowMgr *obj);
 static void modest_window_mgr_finalize   (GObject *obj);
+
+static void on_window_destroy            (ModestWindow *window, 
+                                         ModestWindowMgr *self);
+
 /* list my signals  */
 enum {
        /* MY_SIGNAL_1, */
@@ -145,6 +149,15 @@ modest_window_mgr_register_window (ModestWindowMgr *self,
        /* Add to list. Keep a reference to the window */
        g_object_ref (window);
        priv->window_list = g_list_prepend (priv->window_list, window);
+
+       /* Listen to object destruction */
+       g_signal_connect (window, "destroy", G_CALLBACK (on_window_destroy), self);
+}
+
+static void
+on_window_destroy (ModestWindow *window, ModestWindowMgr *self)
+{
+       modest_window_mgr_unregister_window (self, window);
 }
 
 void