Autorefresh every N minutes also in GTK.
[modest] / src / gtk / modest-shell.c
index d5d5e78..31415c8 100644 (file)
@@ -44,6 +44,7 @@ static void on_back_button_clicked (GtkToolButton *button, ModestShell *self);
 static void on_title_button_clicked (GtkToolButton *button, ModestShell *self);
 static void on_new_msg_button_clicked (GtkToolButton *button, ModestShell *self);
 static void on_style_set (GtkWidget *widget, GtkStyle *old_style, ModestShell *shell);
+static gboolean on_key_pressed (GtkWidget *widget, GdkEventKey *event, ModestShell *shell);
 
 
 typedef struct _ModestShellPrivate ModestShellPrivate;
@@ -61,6 +62,8 @@ struct _ModestShellPrivate {
        GdkPixbuf **progress_frames;
        gint next_frame;
        guint progress_timeout_id;
+
+       GtkWidget *banners_box;
 };
 #define MODEST_SHELL_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                                      MODEST_TYPE_SHELL, \
@@ -115,6 +118,7 @@ modest_shell_instance_init (ModestShell *obj)
        GtkWidget *new_message_icon;
        GtkToolItem *separator_toolitem;
        GtkWidget *top_hbox;
+       GtkWidget *separator;
 
        priv = MODEST_SHELL_GET_PRIVATE(obj);
        priv->progress_frames = g_malloc0 (sizeof(GdkPixbuf *)*31);
@@ -128,6 +132,10 @@ modest_shell_instance_init (ModestShell *obj)
        gtk_widget_show (top_hbox);
        gtk_box_pack_start (GTK_BOX (priv->main_vbox), top_hbox, FALSE, FALSE, 0);
 
+       separator = gtk_hseparator_new ();
+       gtk_widget_show (separator);
+       gtk_box_pack_start (GTK_BOX (priv->main_vbox), separator, FALSE, FALSE, 0);
+
        priv->top_toolbar = gtk_toolbar_new ();
        gtk_toolbar_set_style (GTK_TOOLBAR (priv->top_toolbar), GTK_TOOLBAR_BOTH_HORIZ);
        gtk_toolbar_set_show_arrow (GTK_TOOLBAR (priv->top_toolbar), FALSE);
@@ -138,6 +146,10 @@ modest_shell_instance_init (ModestShell *obj)
        gtk_widget_show (priv->progress_icon);
        gtk_box_pack_start (GTK_BOX (top_hbox), priv->progress_icon, FALSE, FALSE, 0);
 
+       priv->banners_box = gtk_vbox_new (FALSE, 0);
+       gtk_widget_show (priv->banners_box);
+       gtk_box_pack_start (GTK_BOX (priv->main_vbox), priv->banners_box, FALSE, FALSE, 0);
+
        new_message_icon = gtk_image_new_from_icon_name (MODEST_TOOLBAR_ICON_NEW_MAIL, GTK_ICON_SIZE_LARGE_TOOLBAR);
        gtk_widget_show (new_message_icon);
        priv->new_message_button = gtk_tool_button_new (new_message_icon, _("mcen_va_new_email"));
@@ -169,7 +181,7 @@ modest_shell_instance_init (ModestShell *obj)
        gtk_box_pack_start (GTK_BOX (title_vbox), priv->subtitle_label, FALSE, FALSE, 0);
        gtk_widget_show (title_vbox);
 
-       priv->title_button = gtk_tool_button_new (NULL, NULL);
+       priv->title_button = gtk_tool_button_new (NULL, "");
        gtk_widget_show (GTK_WIDGET (priv->title_button));
        title_arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
        gtk_widget_show (title_arrow);
@@ -196,8 +208,22 @@ modest_shell_instance_init (ModestShell *obj)
        gtk_accelerator_parse ("<Control>n", &accel_key, &accel_mods);
        gtk_widget_add_accelerator (GTK_WIDGET (priv->new_message_button), "clicked", accel_group,
                                    accel_key, accel_mods, 0);
+       gtk_accelerator_parse ("Escape", &accel_key, &accel_mods);
+       gtk_widget_add_accelerator (GTK_WIDGET (priv->back_button), "clicked", accel_group,
+                                   accel_key, accel_mods, 0);
+       gtk_accelerator_parse ("F10", &accel_key, &accel_mods);
+       gtk_widget_add_accelerator (GTK_WIDGET (priv->title_button), "clicked", accel_group,
+                                   accel_key, accel_mods, 0);
        gtk_window_add_accel_group (GTK_WINDOW (obj), accel_group);
 
+       g_signal_connect (G_OBJECT (obj), 
+                         "key-press-event", 
+                         G_CALLBACK (on_key_pressed), obj);
+
+       gtk_window_set_default_size (GTK_WINDOW (obj), 
+                                    640, 480);
+
+
 }
 
 static void
@@ -525,3 +551,31 @@ on_style_set (GtkWidget *widget,
        }
 
 }
+
+static gboolean
+on_key_pressed (GtkWidget *widget,
+               GdkEventKey *event,
+               ModestShell *shell)
+{
+       ModestShellPrivate *priv;
+       gboolean retval;
+       GtkWidget *current_window;
+
+       priv = MODEST_SHELL_GET_PRIVATE (shell);
+
+       current_window = gtk_notebook_get_nth_page (GTK_NOTEBOOK (priv->notebook), -1);
+
+       g_signal_emit_by_name (current_window, "key-press-event", event, &retval);
+
+       return retval;
+       
+}
+
+void
+modest_shell_add_banner (ModestShell *shell, ModestShellBanner *banner)
+{
+       ModestShellPrivate *priv;
+
+       priv = MODEST_SHELL_GET_PRIVATE (shell);
+       gtk_box_pack_start (GTK_BOX (priv->banners_box), GTK_WIDGET (banner), FALSE, FALSE, 0);
+}