* added functions for getting authentication, security protocols
[modest] / src / gtk2 / modest-main-window.c
index 841097c..d53359c 100644 (file)
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <modest-widget-memory.h>
 #include "modest-main-window.h"
 #include "modest-account-view-window.h"
-#include "modest-msg-window.h"
+#include "modest-edit-msg-window.h"
 
 /* 'private'/'protected' functions */
 static void modest_main_window_class_init    (ModestMainWindowClass *klass);
@@ -48,6 +49,7 @@ enum {
 
 typedef struct _ModestMainWindowPrivate ModestMainWindowPrivate;
 struct _ModestMainWindowPrivate {
+
        GtkWidget *toolbar;
        GtkWidget *menubar;
 
@@ -128,15 +130,12 @@ modest_main_window_init (ModestMainWindow *obj)
 static void
 modest_main_window_finalize (GObject *obj)
 {
-       ModestMainWindowPrivate *priv;
-       
+       ModestMainWindowPrivate *priv;  
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj);
-
        if (priv->widget_factory) {
                g_object_unref (G_OBJECT(priv->widget_factory));
                priv->widget_factory = NULL;
        }
-
        if (priv->conf) {
                g_object_unref (G_OBJECT(priv->conf));
                priv->conf = NULL;
@@ -176,6 +175,10 @@ on_menu_accounts (ModestMainWindow *self, guint action, GtkWidget *widget)
        priv        = MODEST_MAIN_WINDOW_GET_PRIVATE(self);     
        account_win = modest_account_view_window_new (priv->conf,
                                                      priv->widget_factory);
+
+       gtk_window_set_transient_for (GTK_WINDOW(account_win),
+                                     GTK_WINDOW(self));
+                                     
        gtk_widget_show (account_win);
 }
 
@@ -184,17 +187,20 @@ static void
 on_menu_new_message (ModestMainWindow *self, guint action, GtkWidget *widget)
 {
        GtkWidget *msg_win;
+       ModestMainWindowPrivate *priv;
 
-       msg_win = modest_msg_window_new (MODEST_MSG_WINDOW_TYPE_NEW,
-                                        NULL);
 
+       priv  = MODEST_MAIN_WINDOW_GET_PRIVATE(self);   
+
+       msg_win = modest_edit_msg_window_new (priv->conf,
+                                             MODEST_EDIT_TYPE_NEW,
+                                             NULL);
        gtk_widget_show (msg_win);
 }
 
 static void
 on_menu_quit (ModestMainWindow *self, guint action, GtkWidget *widget)
 {
-       save_sizes (self);
        gtk_main_quit ();
 }
 
@@ -300,40 +306,18 @@ static void
 restore_sizes (ModestMainWindow *self)
 {
        ModestMainWindowPrivate *priv;
-
-       int fol_x,fol_pos;
-       int msg_x,msg_pos;
-       int main_y;
        
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
-
-       /* heigth of the main paned */
-       main_y =  modest_conf_get_int_or_default (priv->conf,
-                                                 MODEST_MAIN_PANED_HEIGHT,
-                                                 MODEST_MAIN_PANED_HEIGHT_DEFAULT);
-       /* size of the folder pane */
-       fol_x = modest_conf_get_int_or_default (priv->conf,
-                                               MODEST_FOLDER_PANED_WIDTH,
-                                               MODEST_FOLDER_PANED_WIDTH_DEFAULT);
-       fol_pos = modest_conf_get_int_or_default (priv->conf,
-                                                 MODEST_FOLDER_PANED_DIVIDER_POS,
-                                                 MODEST_FOLDER_PANED_DIVIDER_POS_DEFAULT);
-       gtk_paned_set_position (GTK_PANED(priv->folder_paned), fol_pos);
        
-       /* size of the msg pane */
-       msg_x = modest_conf_get_int_or_default (priv->conf,
-                                               MODEST_MSG_PANED_WIDTH,
-                                               MODEST_MSG_PANED_WIDTH_DEFAULT);
-       msg_pos = modest_conf_get_int_or_default (priv->conf,
-                                                 MODEST_MSG_PANED_DIVIDER_POS,
-                                                 MODEST_MSG_PANED_DIVIDER_POS_DEFAULT);
-       gtk_paned_set_position (GTK_PANED(priv->msg_paned), msg_pos);
-
-       g_message ("(%d, %d, %d %d, %d)", main_y, fol_x, fol_pos,  msg_x, msg_pos);
-       
-       //gtk_widget_set_size_request (GTK_WIDGET(self), fol_x + msg_x, main_y+50);
-       gtk_widget_set_size_request (priv->main_paned, fol_x + msg_x, main_y);
-       gtk_paned_set_position      (GTK_PANED(priv->main_paned), fol_x);
+       modest_widget_memory_restore_settings (priv->conf,GTK_WIDGET(self),
+                                              "modest-main-window");
+       modest_widget_memory_restore_settings (priv->conf, GTK_WIDGET(priv->folder_paned),
+                                              "modest-folder-paned");
+       modest_widget_memory_restore_settings (priv->conf, GTK_WIDGET(priv->msg_paned),
+                                              "modest-msg-paned");
+       modest_widget_memory_restore_settings (priv->conf, GTK_WIDGET(priv->main_paned),
+                                              "modest-main-paned");
+
 }
 
 
@@ -341,23 +325,20 @@ static void
 save_sizes (ModestMainWindow *self)
 {
        ModestMainWindowPrivate *priv;
-       int fol_pos, msg_pos;
-       int height, width;
        
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
        
-       height = GTK_WIDGET(priv->main_paned)->allocation.height;
-       modest_conf_set_int (priv->conf, MODEST_MAIN_PANED_HEIGHT, height, NULL);
+       modest_widget_memory_save_settings (priv->conf,GTK_WIDGET(self),
+                                           "modest-main-window");
+       modest_widget_memory_save_settings (priv->conf, GTK_WIDGET(priv->folder_paned),
+                                           "modest-folder-paned");
+       modest_widget_memory_save_settings (priv->conf, GTK_WIDGET(priv->msg_paned),
+                                           "modest-msg-paned");
+       modest_widget_memory_save_settings (priv->conf, GTK_WIDGET(priv->main_paned),
+                                           "modest-main-paned");
 
-       width = GTK_WIDGET(priv->folder_paned)->allocation.width;
-       fol_pos = gtk_paned_get_position (GTK_PANED(priv->folder_paned));
-       modest_conf_set_int (priv->conf, MODEST_FOLDER_PANED_WIDTH, width, NULL);
-       modest_conf_set_int (priv->conf, MODEST_FOLDER_PANED_DIVIDER_POS, fol_pos, NULL);
        
-       width = GTK_WIDGET(priv->msg_paned)->allocation.width;
-       msg_pos = gtk_paned_get_position (GTK_PANED(priv->msg_paned));
-       modest_conf_set_int (priv->conf, MODEST_MSG_PANED_WIDTH, width, NULL);
-       modest_conf_set_int (priv->conf, MODEST_MSG_PANED_DIVIDER_POS, msg_pos, NULL);
+
 }
 
 
@@ -381,6 +362,17 @@ wrapped_in_scrolled_window (GtkWidget *widget, gboolean needs_viewport)
        return win;
 }
 
+
+static gboolean
+on_delete_event (GtkWidget *widget, GdkEvent  *event, ModestMainWindow *self)
+{
+       save_sizes (self);
+       return TRUE;
+}
+
+
+
+
 GtkWidget*
 modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf)
 {
@@ -422,8 +414,8 @@ modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf)
        priv->main_paned = gtk_hpaned_new ();
        gtk_paned_add1 (GTK_PANED(priv->main_paned), priv->folder_paned);
        gtk_paned_add2 (GTK_PANED(priv->main_paned), priv->msg_paned);
-       gtk_paned_add1 (GTK_PANED(priv->folder_paned),
-                       gtk_label_new (_("Favorites")));
+//     gtk_paned_add1 (GTK_PANED(priv->folder_paned),
+//                     gtk_label_new (_("Favorites")));
        gtk_paned_add2 (GTK_PANED(priv->folder_paned), folder_win);
        gtk_paned_add1 (GTK_PANED(priv->msg_paned), header_win);
        gtk_paned_add2 (GTK_PANED(priv->msg_paned), GTK_WIDGET(priv->msg_preview));
@@ -431,27 +423,31 @@ modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf)
        gtk_widget_show (GTK_WIDGET(priv->header_view));
                
        /* status bar / progress */
-       status_hbox = gtk_hbox_new (TRUE, 5);
+       status_hbox = gtk_hbox_new (TRUE, 6);
        gtk_box_pack_start (GTK_BOX(status_hbox),
                            modest_widget_factory_get_status_bar(factory),
-                           FALSE, TRUE, 5);
+                           TRUE, TRUE, 6);
        gtk_box_pack_start (GTK_BOX(status_hbox),
                            modest_widget_factory_get_progress_bar(factory),
-                           FALSE, TRUE, 5);
-       
+                           TRUE, FALSE, 6);
+       gtk_box_pack_end (GTK_BOX(status_hbox),
+                         modest_widget_factory_get_online_toggle(factory),
+                         FALSE, FALSE, 6);
+
        /* putting it all together... */
-       main_vbox = gtk_vbox_new (FALSE, 2);
-       gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 2);
-       gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, TRUE, 5);
-       gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE, 2);
-       gtk_box_pack_start (GTK_BOX(main_vbox), status_hbox, FALSE, FALSE, 5);
+       main_vbox = gtk_vbox_new (FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE, 6);
+       gtk_box_pack_start (GTK_BOX(main_vbox), status_hbox, FALSE, FALSE, 6);
        
        gtk_container_add (GTK_CONTAINER(obj), main_vbox);
+       restore_sizes (MODEST_MAIN_WINDOW(obj));        
+
        gtk_widget_show_all (main_vbox);
-       
-       gtk_window_set_title (GTK_WINDOW(obj), "Modest");
+       g_signal_connect (G_OBJECT(obj), "delete-event",
+                         G_CALLBACK(on_delete_event), obj);
 
-       restore_sizes (MODEST_MAIN_WINDOW(obj));        
        
        return GTK_WIDGET(obj);
 }