* Fix some detected memory leaks
[modest] / src / maemo / modest-main-window.c
index 7f0b1aa..68bf108 100644 (file)
 #include "modest-mail-operation.h"
 #include "modest-icon-names.h"
 #include "modest-progress-bar-widget.h"
-#include <hildon-widgets/hildon-program.h>
 #include "maemo/modest-osso-state-saving.h"
 
+#ifdef MODEST_HILDON_VERSION_0
+#include <hildon-widgets/hildon-program.h>
+#else
+#include <hildon/hildon-program.h>
+#endif /*MODEST_HILDON_VERSION_0*/
+
+
 /* 'private'/'protected' functions */
 static void modest_main_window_class_init    (ModestMainWindowClass *klass);
 static void modest_main_window_init          (ModestMainWindow *obj);
@@ -126,6 +132,8 @@ struct _ModestMainWindowPrivate {
        GtkWidget *accounts_popup;
        GtkWidget *details_widget;
 
+       /* Optimized view enabled */
+       gboolean optimized_view;
 
        ModestHeaderView *header_view;
        ModestFolderView *folder_view;
@@ -228,6 +236,8 @@ modest_main_window_init (ModestMainWindow *obj)
        priv->accounts_popup  = NULL;
        priv->details_widget  = NULL;
 
+       priv->optimized_view  = FALSE;
+
        priv->progress_widgets  = NULL;
        priv->progress_bar = NULL;
        priv->current_toolbar_mode = TOOLBAR_MODE_NORMAL;
@@ -757,10 +767,14 @@ modest_main_window_show_toolbar (ModestWindow *self,
        GtkWidget *placeholder = NULL;
        gint insert_index;
 
-       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+       g_return_if_fail (MODEST_IS_MAIN_WINDOW (self));
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+
+       /* Set optimized view status */
+       priv->optimized_view = !show_toolbar;
 
-       if (!parent_priv->toolbar && show_toolbar) {
+       if (!parent_priv->toolbar) {
                parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, 
                                                                  "/ToolBar");
 
@@ -809,18 +823,16 @@ modest_main_window_show_toolbar (ModestWindow *self,
                                   NULL, self);
        }
 
-       /* TODO: Why is this sometimes NULL? murrayc */
-       if (parent_priv->toolbar) {
-               if (show_toolbar) {
-                       /* Quick hack: this prevents toolbar icons "dance" when progress bar show status is changed */
-                       /* TODO: resize mode migth be GTK_RESIZE_QUEUE, in order to avoid unneccesary shows */
-                       gtk_container_set_resize_mode (GTK_CONTAINER(parent_priv->toolbar), GTK_RESIZE_IMMEDIATE);
+       if (show_toolbar) {
+               /* Quick hack: this prevents toolbar icons "dance" when progress bar show status is changed */
+               /* TODO: resize mode migth be GTK_RESIZE_QUEUE, in order to avoid unneccesary shows */
+               gtk_container_set_resize_mode (GTK_CONTAINER(parent_priv->toolbar), GTK_RESIZE_IMMEDIATE);
+               
+               gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
+               set_toolbar_mode (MODEST_MAIN_WINDOW(self), TOOLBAR_MODE_NORMAL);
+       } else
+               gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
 
-                       gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
-                       set_toolbar_mode (MODEST_MAIN_WINDOW(self), TOOLBAR_MODE_NORMAL);
-               } else
-                       gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
-       }
 }
 
 /*
@@ -1145,14 +1157,16 @@ static void
 set_toolbar_mode (ModestMainWindow *self, 
                  ModestToolBarModes mode)
 {
-       ModestWindowPrivate *parent_priv;
-       ModestMainWindowPrivate *priv;
-       GtkAction *sort_action, *refresh_action, *cancel_action;
-
+       ModestWindowPrivate *parent_priv = NULL;
+       ModestMainWindowPrivate *priv = NULL;
+       GtkAction *sort_action = NULL, *refresh_action = NULL, *cancel_action = NULL;
+       
        g_return_if_fail (MODEST_IS_MAIN_WINDOW (self));
 
        parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+       g_return_if_fail (GTK_IS_TOOLBAR(parent_priv->toolbar)); 
        
        sort_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSort");
        refresh_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSendReceive");
@@ -1177,6 +1191,10 @@ set_toolbar_mode (ModestMainWindow *self,
                
                if (cancel_action)
                        gtk_action_set_visible (cancel_action, FALSE);
+
+               /* Hide toolbar if optimized view is enabled */
+               if (priv->optimized_view)
+                       gtk_widget_hide (GTK_WIDGET(parent_priv->toolbar));
                break;
        case TOOLBAR_MODE_TRANSFER:
                if (sort_action)
@@ -1191,12 +1209,14 @@ set_toolbar_mode (ModestMainWindow *self,
                }
                if (priv->progress_bar)
                        gtk_widget_show (priv->progress_bar);                   
+
+               /* Show toolbar if it's hiden (optimized view ) */
+               if (priv->optimized_view)
+                       gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
                break;
        default:
                g_return_if_reached ();
        }
-
-       gtk_widget_show_all (GTK_WIDGET (self));
 }
 
 static void