* Added show toolbar application wide code
authorSergio Villar Senin <svillar@igalia.com>
Fri, 13 Apr 2007 13:12:06 +0000 (13:12 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Fri, 13 Apr 2007 13:12:06 +0000 (13:12 +0000)
* Added show toolbar code to main window (msgview and msgeditor pending)

pmo-trunk-r1557

src/maemo/modest-main-window-ui.h
src/maemo/modest-main-window.c
src/modest-defs.h
src/modest-main.c
src/modest-runtime.c
src/modest-ui-actions.c
src/modest-ui-actions.h
src/widgets/modest-window-mgr.c
src/widgets/modest-window-mgr.h
src/widgets/modest-window.c
src/widgets/modest-window.h

index e543c7b..6412cdf 100644 (file)
@@ -126,8 +126,8 @@ static const GtkActionEntry modest_action_entries [] = {
 static const GtkToggleActionEntry modest_toggle_action_entries [] = {
        { "ViewToggleFolders",     NULL, N_("mcen_me_inbox_hidefolders"), NULL, NULL, G_CALLBACK (modest_ui_actions_toggle_folders_view), TRUE },
        { "ViewToggleFullscreen",     GTK_STOCK_FULLSCREEN, N_("mcen_me_inbox_fullscreen"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_toggle_fullscreen), FALSE },
 static const GtkToggleActionEntry modest_toggle_action_entries [] = {
        { "ViewToggleFolders",     NULL, N_("mcen_me_inbox_hidefolders"), NULL, NULL, G_CALLBACK (modest_ui_actions_toggle_folders_view), TRUE },
        { "ViewToggleFullscreen",     GTK_STOCK_FULLSCREEN, N_("mcen_me_inbox_fullscreen"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_toggle_fullscreen), FALSE },
-       { "ViewShowToolbarNormalScreen", NULL, N_("mcen_me_inbox_normalview"), NULL, NULL, NULL, TRUE },
-       { "ViewShowToolbarFullScreen", NULL, N_("mcen_me_inbox_optimizedview"), NULL, NULL, NULL, TRUE },
+       { "ViewShowToolbarNormalScreen", NULL, N_("mcen_me_inbox_normalview"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_toggle_toolbar), TRUE },
+       { "ViewShowToolbarFullScreen", NULL, N_("mcen_me_inbox_optimizedview"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_toggle_toolbar), TRUE },
 };
 
 G_END_DECLS
 };
 
 G_END_DECLS
index 74e8542..5affeff 100644 (file)
@@ -64,6 +64,10 @@ static void connect_signals (ModestMainWindow *self);
 static void restore_sizes (ModestMainWindow *self);
 static void save_sizes (ModestMainWindow *self);
 
 static void restore_sizes (ModestMainWindow *self);
 static void save_sizes (ModestMainWindow *self);
 
+static void modest_main_window_create_toolbar (ModestWindow *window);
+static void modest_main_window_show_toolbar   (ModestWindow *window,
+                                              gboolean show_toolbar);
+
 /* list my signals */
 enum {
        /* MY_SIGNAL_1, */
 /* list my signals */
 enum {
        /* MY_SIGNAL_1, */
@@ -132,10 +136,16 @@ modest_main_window_class_init (ModestMainWindowClass *klass)
 {
        GObjectClass *gobject_class;
        gobject_class = (GObjectClass*) klass;
 {
        GObjectClass *gobject_class;
        gobject_class = (GObjectClass*) klass;
+       ModestWindowClass *modest_window_class;
+
+       modest_window_class = (ModestWindowClass *) klass;
 
        parent_class            = g_type_class_peek_parent (klass);
        gobject_class->finalize = modest_main_window_finalize;
 
 
        parent_class            = g_type_class_peek_parent (klass);
        gobject_class->finalize = modest_main_window_finalize;
 
+       modest_window_class->create_toolbar_func = modest_main_window_create_toolbar;
+       modest_window_class->show_toolbar_func = modest_main_window_show_toolbar;
+
        g_type_class_add_private (gobject_class, sizeof(ModestMainWindowPrivate));
 }
 
        g_type_class_add_private (gobject_class, sizeof(ModestMainWindowPrivate));
 }
 
@@ -285,36 +295,6 @@ on_delete_event (GtkWidget *widget, GdkEvent  *event, ModestMainWindow *self)
 }
 
 static void
 }
 
 static void
-set_homogeneous (GtkWidget *widget,
-                gpointer data)
-{
-       gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), TRUE);
-       gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), TRUE);
-}
-
-static GtkWidget*
-get_toolbar (ModestMainWindow *self)
-{
-       GtkWidget   *toolbar, *reply_button, *menu;
-       ModestWindowPrivate *parent_priv;
-       
-       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
-       
-       /* Toolbar */
-       toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar");
-
-       /* 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;
-}
-
-static void
 connect_signals (ModestMainWindow *self)
 {      
        ModestWindowPrivate *parent_priv;
 connect_signals (ModestMainWindow *self)
 {      
        ModestWindowPrivate *parent_priv;
@@ -415,11 +395,6 @@ modest_main_window_new (void)
        gtk_window_add_accel_group (GTK_WINDOW (self), 
                                    gtk_ui_manager_get_accel_group (parent_priv->ui_manager));
 
        gtk_window_add_accel_group (GTK_WINDOW (self), 
                                    gtk_ui_manager_get_accel_group (parent_priv->ui_manager));
 
-       /* add the toolbar */
-       parent_priv->toolbar = get_toolbar(self);
-       hildon_window_add_toolbar (HILDON_WINDOW (self), GTK_TOOLBAR (parent_priv->toolbar));
-
-
        /* Menubar */
        parent_priv->menubar = modest_maemo_utils_menubar_to_menu (parent_priv->ui_manager);
        hildon_window_set_menu (HILDON_WINDOW (self), GTK_MENU (parent_priv->menubar));
        /* Menubar */
        parent_priv->menubar = modest_maemo_utils_menubar_to_menu (parent_priv->ui_manager);
        hildon_window_set_menu (HILDON_WINDOW (self), GTK_MENU (parent_priv->menubar));
@@ -462,10 +437,6 @@ modest_main_window_new (void)
        window_icon = modest_platform_get_icon (MODEST_APP_ICON);
        gtk_window_set_icon (GTK_WINDOW (self), window_icon);
 
        window_icon = modest_platform_get_icon (MODEST_APP_ICON);
        gtk_window_set_icon (GTK_WINDOW (self), window_icon);
 
-/*     /\* should we hide the toolbar? *\/ */
-/*     if (!modest_conf_get_bool (modest_runtime_get_conf (), MODEST_CONF_SHOW_TOOLBAR, NULL)) */
-/*             gtk_widget_hide (parent_priv->toolbar); */
-
        /* Connect signals */
        connect_signals (self);
 
        /* Connect signals */
        connect_signals (self);
 
@@ -477,9 +448,6 @@ modest_main_window_new (void)
 
        g_message ("online? %s",
                   tny_device_is_online (modest_runtime_get_device()) ? "yes" : "no");
 
        g_message ("online? %s",
                   tny_device_is_online (modest_runtime_get_device()) ? "yes" : "no");
-
-       /* Needed to show the contents of the toolbar */
-       gtk_widget_show_all (GTK_WIDGET (self));
                
        return MODEST_WINDOW(self);
 }
                
        return MODEST_WINDOW(self);
 }
@@ -587,3 +555,57 @@ modest_main_window_window_state_event (GtkWidget *widget, GdkEventWindowState *e
        return FALSE;
 
 }
        return FALSE;
 
 }
+
+static void
+set_homogeneous (GtkWidget *widget,
+                gpointer data)
+{
+       gtk_tool_item_set_expand (GTK_TOOL_ITEM (widget), TRUE);
+       gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (widget), TRUE);
+}
+
+static void 
+modest_main_window_create_toolbar (ModestWindow *self)
+{
+       GtkWidget *reply_button, *menu;
+       ModestWindowPrivate *parent_priv;
+       
+       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+       
+       /* Toolbar */
+       parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager, 
+                                                         "/ToolBar");
+
+       /* Set homogeneous toolbar */
+       gtk_container_foreach (GTK_CONTAINER (parent_priv->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);
+}
+
+static void 
+modest_main_window_show_toolbar (ModestWindow *self,
+                                gboolean show_toolbar)
+{
+       ModestWindowPrivate *parent_priv;
+       
+       parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+
+       if (!parent_priv->toolbar)
+               return;
+
+       if (show_toolbar)
+               hildon_window_add_toolbar (HILDON_WINDOW (self), 
+                                          GTK_TOOLBAR (parent_priv->toolbar));
+       else
+               hildon_window_remove_toolbar (HILDON_WINDOW (self), 
+                                             GTK_TOOLBAR (parent_priv->toolbar));
+
+       /* Needed to show the contents of the toolbar */
+       gtk_widget_show_all (GTK_WIDGET (self));
+}
index 7bd305b..1f4b7c0 100644 (file)
 
 #define MODEST_CONF_CONNECT_AT_STARTUP   MODEST_CONF_NAMESPACE "/connect_at_startup"      
 
 
 #define MODEST_CONF_CONNECT_AT_STARTUP   MODEST_CONF_NAMESPACE "/connect_at_startup"      
 
-#define MODEST_CONF_SHOW_TOOLBAR         MODEST_CONF_NAMESPACE "/show_toolbar"      
 #define MODEST_CONF_SHOW_CC              MODEST_CONF_NAMESPACE "/show_cc"           
 #define MODEST_CONF_SHOW_BCC             MODEST_CONF_NAMESPACE "/show_bcc"           
 #define MODEST_CONF_SHOW_CC              MODEST_CONF_NAMESPACE "/show_cc"           
 #define MODEST_CONF_SHOW_BCC             MODEST_CONF_NAMESPACE "/show_bcc"           
-
+#define MODEST_CONF_SHOW_TOOLBAR         MODEST_CONF_NAMESPACE "/show_toolbar"
+#define MODEST_CONF_SHOW_TOOLBAR_FULLSCREEN         MODEST_CONF_NAMESPACE "/show_toolbar_fullscreen"
 
 /*
  * in the maemo case, we try to replace this
 
 /*
  * in the maemo case, we try to replace this
index 1b8a440..2021504 100644 (file)
@@ -227,7 +227,7 @@ start_ui (const gchar *account_name, const gchar* mailto, const gchar *cc, const
                modest_window_mgr_register_window (mgr, win);
        }
        
                modest_window_mgr_register_window (mgr, win);
        }
        
-       gtk_widget_show (GTK_WIDGET (win));
+       gtk_widget_show_all (GTK_WIDGET (win));
        gtk_main();
        
        return MODEST_ERR_NONE;
        gtk_main();
        
        return MODEST_ERR_NONE;
index 3121f4e..06ac537 100644 (file)
@@ -683,6 +683,9 @@ init_default_settings (ModestConf *conf)
 {
        if (!modest_conf_key_exists (conf, MODEST_CONF_SHOW_TOOLBAR, NULL))
                modest_conf_set_bool (conf, MODEST_CONF_SHOW_TOOLBAR, TRUE, NULL);
 {
        if (!modest_conf_key_exists (conf, MODEST_CONF_SHOW_TOOLBAR, NULL))
                modest_conf_set_bool (conf, MODEST_CONF_SHOW_TOOLBAR, TRUE, NULL);
+
+       if (!modest_conf_key_exists (conf, MODEST_CONF_SHOW_TOOLBAR_FULLSCREEN, NULL))
+               modest_conf_set_bool (conf, MODEST_CONF_SHOW_TOOLBAR_FULLSCREEN, TRUE, NULL);
        
        if (!modest_conf_key_exists (conf, MODEST_CONF_SHOW_CC, NULL))
                modest_conf_set_bool (conf, MODEST_CONF_SHOW_CC, TRUE, NULL);
        
        if (!modest_conf_key_exists (conf, MODEST_CONF_SHOW_CC, NULL))
                modest_conf_set_bool (conf, MODEST_CONF_SHOW_CC, TRUE, NULL);
index d524a25..d24e0d4 100644 (file)
@@ -1533,7 +1533,7 @@ modest_ui_actions_on_toggle_fullscreen    (GtkToggleAction *toggle,
        mgr = modest_runtime_get_window_mgr ();
 
        active = (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (toggle)))?1:0;
        mgr = modest_runtime_get_window_mgr ();
 
        active = (gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (toggle)))?1:0;
-       fullscreen = (modest_window_mgr_get_fullscreen_mode (mgr))?1:0;
+       fullscreen = modest_window_mgr_get_fullscreen_mode (mgr);
 
        if (active != fullscreen) {
                modest_window_mgr_set_fullscreen_mode (mgr, active);
 
        if (active != fullscreen) {
                modest_window_mgr_set_fullscreen_mode (mgr, active);
@@ -1643,3 +1643,24 @@ modest_ui_actions_toggle_folders_view (GtkAction *action,
        else
                modest_main_window_set_style (main_window, MODEST_MAIN_WINDOW_STYLE_SPLIT);
 }
        else
                modest_main_window_set_style (main_window, MODEST_MAIN_WINDOW_STYLE_SPLIT);
 }
+
+void 
+modest_ui_actions_on_toggle_toolbar (GtkToggleAction *toggle, 
+                                    ModestWindow *window)
+{
+       gboolean active, fullscreen = FALSE;
+       ModestWindowMgr *mgr;
+
+       active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (toggle));
+
+       /* Check if we want to toggle the toolbar vuew in fullscreen
+          or normal mode */
+       if (!strcmp (gtk_action_get_name (GTK_ACTION (toggle)), 
+                    "ViewShowToolbarFullScreen")) {
+               fullscreen = TRUE;
+       }
+
+       /* Toggle toolbar */
+       mgr = modest_runtime_get_window_mgr ();
+       modest_window_mgr_show_toolbars (mgr, active, fullscreen);
+}
index 9cfe252..6ac3ba6 100644 (file)
@@ -208,9 +208,15 @@ void     modest_ui_actions_on_change_zoom              (GtkRadioAction *action,
                                                        GtkRadioAction *selected,
                                                        ModestWindow *window);
 
                                                        GtkRadioAction *selected,
                                                        ModestWindow *window);
 
-
-
-
+/**
+ * modest_ui_actions_on_toggle_toolbar:
+ * @toggle: 
+ * @window: 
+ * 
+ * Hides/Shows the toolbars of the #ModestWindow instances
+ **/
+void     modest_ui_actions_on_toggle_toolbar           (GtkToggleAction *toggle, 
+                                                       ModestWindow *window);
 
 G_END_DECLS
 #endif /* __MODEST_UI_ACTIONS_H__ */
 
 G_END_DECLS
 #endif /* __MODEST_UI_ACTIONS_H__ */
index 07e3e25..7758ca5 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <string.h>
 #include "modest-window-mgr.h"
 
 #include <string.h>
 #include "modest-window-mgr.h"
+#include "modest-runtime.h"
 #include "widgets/modest-main-window.h"
 #include "widgets/modest-msg-edit-window.h"
 #include "widgets/modest-msg-view-window.h"
 #include "widgets/modest-main-window.h"
 #include "widgets/modest-msg-edit-window.h"
 #include "widgets/modest-msg-view-window.h"
@@ -53,6 +54,8 @@ typedef struct _ModestWindowMgrPrivate ModestWindowMgrPrivate;
 struct _ModestWindowMgrPrivate {
        GList *window_list;
        gboolean fullscreen_mode;
 struct _ModestWindowMgrPrivate {
        GList *window_list;
        gboolean fullscreen_mode;
+       gboolean show_toolbars;
+       gboolean show_toolbars_fullscreen;
 };
 #define MODEST_WINDOW_MGR_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                MODEST_TYPE_WINDOW_MGR, \
 };
 #define MODEST_WINDOW_MGR_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                MODEST_TYPE_WINDOW_MGR, \
@@ -102,10 +105,16 @@ modest_window_mgr_class_init (ModestWindowMgrClass *klass)
 static void
 modest_window_mgr_init (ModestWindowMgr *obj)
 {
 static void
 modest_window_mgr_init (ModestWindowMgr *obj)
 {
-       ModestWindowMgrPrivate *priv = MODEST_WINDOW_MGR_GET_PRIVATE(obj);
+       ModestWindowMgrPrivate *priv;
 
 
+       priv = MODEST_WINDOW_MGR_GET_PRIVATE(obj);
        priv->window_list = NULL;
        priv->fullscreen_mode = FALSE;
        priv->window_list = NULL;
        priv->fullscreen_mode = FALSE;
+
+       /* Could not initialize it from gconf, singletons are not
+          ready yet */
+       priv->show_toolbars = FALSE;
+       priv->show_toolbars_fullscreen = FALSE;
 }
 
 static void
 }
 
 static void
@@ -138,7 +147,9 @@ void
 modest_window_mgr_register_window (ModestWindowMgr *self, 
                                   ModestWindow *window)
 {
 modest_window_mgr_register_window (ModestWindowMgr *self, 
                                   ModestWindow *window)
 {
+       static gboolean first_time = TRUE;
        GList *win;
        GList *win;
+       gboolean show;
        ModestWindowMgrPrivate *priv;
 
        g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
        ModestWindowMgrPrivate *priv;
 
        g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
@@ -162,6 +173,23 @@ modest_window_mgr_register_window (ModestWindowMgr *self,
        /* Put into fullscreen if needed */
        if (priv->fullscreen_mode)
                gtk_window_fullscreen (GTK_WINDOW (window));
        /* Put into fullscreen if needed */
        if (priv->fullscreen_mode)
                gtk_window_fullscreen (GTK_WINDOW (window));
+
+       /* Fill caches */
+       if (first_time) {
+               ModestConf *conf = modest_runtime_get_conf ();
+               priv->show_toolbars = 
+                       modest_conf_get_bool (conf, MODEST_CONF_SHOW_TOOLBAR, NULL);
+               priv->show_toolbars_fullscreen = 
+                       modest_conf_get_bool (conf, MODEST_CONF_SHOW_TOOLBAR_FULLSCREEN, NULL);
+               first_time = FALSE;
+       }
+
+       /* Show/hide toolbar */
+       if (priv->fullscreen_mode)
+               show = priv->show_toolbars_fullscreen;
+       else
+               show = priv->show_toolbars;
+       modest_window_view_toolbar (window, show);
 }
 
 static void
 }
 
 static void
@@ -224,8 +252,18 @@ modest_window_mgr_unregister_window (ModestWindowMgr *self,
        priv->window_list = g_list_remove_link (priv->window_list, win);
 
        /* If there are no more windows registered then exit program */
        priv->window_list = g_list_remove_link (priv->window_list, win);
 
        /* If there are no more windows registered then exit program */
-       if (priv->window_list == NULL)
+       if (priv->window_list == NULL) {
+               ModestConf *conf = modest_runtime_get_conf ();
+
+               /* Save show toolbar status */
+               modest_conf_set_bool (conf, MODEST_CONF_SHOW_TOOLBAR_FULLSCREEN, 
+                                     priv->show_toolbars_fullscreen, NULL);
+               modest_conf_set_bool (conf, MODEST_CONF_SHOW_TOOLBAR, 
+                                     priv->show_toolbars, NULL);
+
+               /* Quit main loop */
                gtk_main_quit ();
                gtk_main_quit ();
+       }
 }
 
 static gint
 }
 
 static gint
@@ -289,10 +327,15 @@ modest_window_mgr_set_fullscreen_mode (ModestWindowMgr *self,
        /* Update windows */
        win = priv->window_list;
        while (win) {
        /* Update windows */
        win = priv->window_list;
        while (win) {
-               if (on)
+               if (on) {
                        gtk_window_fullscreen (GTK_WINDOW (win->data));
                        gtk_window_fullscreen (GTK_WINDOW (win->data));
-               else
+                       modest_window_view_toolbar (MODEST_WINDOW (win->data), 
+                                                   priv->show_toolbars_fullscreen);
+               } else {
                        gtk_window_unfullscreen (GTK_WINDOW (win->data));
                        gtk_window_unfullscreen (GTK_WINDOW (win->data));
+                       modest_window_view_toolbar (MODEST_WINDOW (win->data), 
+                                                   priv->show_toolbars);
+               }
                win = g_list_next (win);
        }
 }
                win = g_list_next (win);
        }
 }
@@ -308,3 +351,44 @@ modest_window_mgr_get_fullscreen_mode (ModestWindowMgr *self)
 
        return priv->fullscreen_mode;
 }
 
        return priv->fullscreen_mode;
 }
+
+void 
+modest_window_mgr_show_toolbars (ModestWindowMgr *self,
+                                gboolean show_toolbars,
+                                gboolean fullscreen)
+{
+       ModestWindowMgrPrivate *priv;
+
+       g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
+
+       priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
+
+       /* If nothing changes then return. Otherwise cache it, do not
+          save to GConf for the moment, it will be done when all
+          windows become unregistered in order to avoid unnecessary
+          ModestConf calls */
+       if (fullscreen) {
+               if (priv->show_toolbars_fullscreen == show_toolbars)
+                       return;
+               else
+                       priv->show_toolbars_fullscreen = show_toolbars;
+       } else {
+               if (priv->show_toolbars == show_toolbars)
+                       return;
+               else
+                       priv->show_toolbars = show_toolbars;
+       }
+
+       /* Apply now if the view mode is the right one */
+       if ((fullscreen && priv->fullscreen_mode) ||
+           (!fullscreen && !priv->fullscreen_mode)) {
+
+               GList *win = priv->window_list;
+
+               while (win) {
+                       modest_window_view_toolbar (MODEST_WINDOW (win->data),
+                                                   show_toolbars);
+                       win = g_list_next (win);
+               }
+       }
+}
index 5598f98..43c636c 100644 (file)
@@ -111,14 +111,32 @@ void           modest_window_mgr_set_fullscreen_mode   (ModestWindowMgr *self,
                                                        gboolean on);
 
 /**
                                                        gboolean on);
 
 /**
- * modest_window_mgr_set_fullscreen_mode:
+ * modest_window_mgr_get_fullscreen_mode:
  * @self: a #ModestWindowMgr
  * 
  * @self: a #ModestWindowMgr
  * 
- * gets the current fullscreen mode of the windows in the application.
+ * gets the application current fullscreen mode
  *
  *
- * Returns: %TRUE if fullscreen mode is enabled, %FALSE if not.
+ * Return value: TRUE is the application is in fullscrenn mode,
+ * otherwise FALSE
  **/
 gboolean       modest_window_mgr_get_fullscreen_mode   (ModestWindowMgr *self);
  **/
 gboolean       modest_window_mgr_get_fullscreen_mode   (ModestWindowMgr *self);
+
+
+/**
+ * modest_window_mgr_show_toolbars:
+ * @self: a #ModestWindowMgr
+ * @show_toolbar: whether or not the toolbars should be shown
+ * @fullscreen: TRUE/FALSE for show/hide in fullscreen mode, otherwise
+ * it applies to normal mode
+ * 
+ * shows or hides the toolbars of the registered windows. Note that if
+ * the #fullscreen attribute is TRUE and the application is in normal
+ * mode, you will not see the changes until the application switches
+ * to fullscreen mode and viceversa
+ **/
+void           modest_window_mgr_show_toolbars         (ModestWindowMgr *self,
+                                                       gboolean show_toolbars,
+                                                       gboolean fullscreen);
 G_END_DECLS
 
 #endif /* __MODEST_WINDOW_MGR_H__ */
 G_END_DECLS
 
 #endif /* __MODEST_WINDOW_MGR_H__ */
index 2aed604..18296bc 100644 (file)
@@ -36,12 +36,14 @@ static void modest_window_class_init (ModestWindowClass *klass);
 static void modest_window_init       (ModestWindow *obj);
 static void modest_window_finalize   (GObject *obj);
 
 static void modest_window_init       (ModestWindow *obj);
 static void modest_window_finalize   (GObject *obj);
 
-static void modest_window_set_zoom_default (ModestWindow *window,
-                                           gdouble zoom);
-static gdouble     modest_window_get_zoom_default (ModestWindow *window);
-static gboolean    modest_window_zoom_plus_default (ModestWindow *window);
-static gboolean    modest_window_zoom_minus_default (ModestWindow *window);
-
+static void        modest_window_set_zoom_default       (ModestWindow *window,
+                                                        gdouble zoom);
+static gdouble     modest_window_get_zoom_default       (ModestWindow *window);
+static gboolean    modest_window_zoom_plus_default      (ModestWindow *window);
+static gboolean    modest_window_zoom_minus_default     (ModestWindow *window);
+static void        modest_window_create_toolbar_default (ModestWindow *window);
+static void        modest_window_show_toolbar_default   (ModestWindow *window,
+                                                        gboolean show_toolbar);
 
 /* list my signals  */
 enum {
 
 /* list my signals  */
 enum {
@@ -98,6 +100,8 @@ modest_window_class_init (ModestWindowClass *klass)
        klass->get_zoom_func = modest_window_get_zoom_default;
        klass->zoom_plus_func = modest_window_zoom_plus_default;
        klass->zoom_minus_func = modest_window_zoom_minus_default;
        klass->get_zoom_func = modest_window_get_zoom_default;
        klass->zoom_plus_func = modest_window_zoom_plus_default;
        klass->zoom_minus_func = modest_window_zoom_minus_default;
+       klass->create_toolbar_func = modest_window_create_toolbar_default;
+       klass->show_toolbar_func = modest_window_show_toolbar_default;
 
        g_type_class_add_private (gobject_class, sizeof(ModestWindowPrivate));
 }
 
        g_type_class_add_private (gobject_class, sizeof(ModestWindowPrivate));
 }
@@ -184,27 +188,78 @@ modest_window_zoom_minus (ModestWindow *window)
        return MODEST_WINDOW_GET_CLASS (window)->zoom_minus_func (window);
 }
 
        return MODEST_WINDOW_GET_CLASS (window)->zoom_minus_func (window);
 }
 
+static void 
+modest_window_create_toolbar (ModestWindow *window)
+{
+       MODEST_WINDOW_GET_CLASS (window)->create_toolbar_func (window);
+}
+
+static void 
+modest_window_show_toolbar (ModestWindow *window,
+                           gboolean show_toolbar)
+{
+       MODEST_WINDOW_GET_CLASS (window)->show_toolbar_func (window,
+                                                            show_toolbar);
+}
+
+void 
+modest_window_view_toolbar (ModestWindow *window,
+                           gboolean show_toolbar)
+{
+       ModestWindowPrivate *priv;      
+
+       priv = MODEST_WINDOW_GET_PRIVATE(window);
+
+       /* Lazy strategy, we create the toolbar just when there is no
+          toolbar and we want to show it */
+       if (!priv->toolbar && show_toolbar)
+               modest_window_create_toolbar (window);
+
+       if (priv->toolbar)
+               modest_window_show_toolbar (window, show_toolbar);
+}
+
+
+/* Default implementations */
+
 static void
 modest_window_set_zoom_default (ModestWindow *window,
                                gdouble zoom)
 {
 static void
 modest_window_set_zoom_default (ModestWindow *window,
                                gdouble zoom)
 {
-       return;
+       g_warning ("modest: You should implement %s", __FUNCTION__);
+
 }
 
 static gdouble
 modest_window_get_zoom_default (ModestWindow *window)
 {
 }
 
 static gdouble
 modest_window_get_zoom_default (ModestWindow *window)
 {
+       g_warning ("modest: You should implement %s", __FUNCTION__);
        return 1.0;
 }
 
 static gboolean
 modest_window_zoom_plus_default (ModestWindow *window)
 {
        return 1.0;
 }
 
 static gboolean
 modest_window_zoom_plus_default (ModestWindow *window)
 {
+       g_warning ("modest: You should implement %s", __FUNCTION__);
        return FALSE;
 }
 
 static gboolean
 modest_window_zoom_minus_default (ModestWindow *window)
 {
        return FALSE;
 }
 
 static gboolean
 modest_window_zoom_minus_default (ModestWindow *window)
 {
+       g_warning ("modest: You should implement %s", __FUNCTION__);
        return FALSE;
 }
        return FALSE;
 }
+
+static void 
+modest_window_create_toolbar_default (ModestWindow *window)
+{
+       g_warning ("modest: You should implement %s", __FUNCTION__);
+}
+
+static void 
+modest_window_show_toolbar_default (ModestWindow *window,
+                                   gboolean show_toolbar)
+{
+       g_warning ("modest: You should implement %s", __FUNCTION__);
+}
index 2cf0993..1868382 100644 (file)
@@ -78,6 +78,9 @@ struct _ModestWindowClass {
        gdouble (*get_zoom_func) (ModestWindow *self);
        gboolean (*zoom_plus_func) (ModestWindow *self);
        gboolean (*zoom_minus_func) (ModestWindow *self);
        gdouble (*get_zoom_func) (ModestWindow *self);
        gboolean (*zoom_plus_func) (ModestWindow *self);
        gboolean (*zoom_minus_func) (ModestWindow *self);
+       /* Used by view_toolbar, with no public interface */
+       void (*create_toolbar_func) (ModestWindow *self);
+       void (*show_toolbar_func) (ModestWindow *self, gboolean show_toolbar);
 };
 
 /**
 };
 
 /**
@@ -152,6 +155,17 @@ gboolean modest_window_zoom_plus (ModestWindow *window);
  */
 gboolean modest_window_zoom_minus (ModestWindow *window);
 
  */
 gboolean modest_window_zoom_minus (ModestWindow *window);
 
+
+/**
+ * modest_window_view_toolbar:
+ * @window: 
+ * @view_toolbar: whether or not the toolbar should be shown
+ * 
+ * shows/hides the window toolbar
+ **/
+void     modest_window_view_toolbar (ModestWindow *window, 
+                                    gboolean view_toolbar);
+
 G_END_DECLS
 
 #endif /* __MODEST_WINDOW_H__ */
 G_END_DECLS
 
 #endif /* __MODEST_WINDOW_H__ */