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;
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, \
{
ModestShellPrivate *priv;
GtkWidget *title_vbox;
+ GtkWidget *title_arrow;
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);
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);
gtk_widget_show (priv->top_toolbar);
gtk_box_pack_start (GTK_BOX (top_hbox), priv->top_toolbar, TRUE, TRUE, 0);
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"));
title_vbox = gtk_vbox_new (FALSE, 0);
priv->title_label = gtk_label_new (NULL);
+ gtk_label_set_ellipsize (GTK_LABEL (priv->title_label), PANGO_ELLIPSIZE_END);
gtk_misc_set_alignment (GTK_MISC (priv->title_label), 0.0, 1.0);
priv->subtitle_label = gtk_label_new (NULL);
+ gtk_label_set_ellipsize (GTK_LABEL (priv->subtitle_label), PANGO_ELLIPSIZE_START);
gtk_misc_set_alignment (GTK_MISC (priv->subtitle_label), 0.0, 0.0);
gtk_widget_show (priv->title_label);
gtk_widget_show (priv->subtitle_label);
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);
+ gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (priv->title_button), title_arrow);
gtk_tool_button_set_label_widget (GTK_TOOL_BUTTON (priv->title_button), title_vbox);
gtk_toolbar_insert (GTK_TOOLBAR (priv->top_toolbar), priv->title_button, -1);
gtk_container_child_set (GTK_CONTAINER (priv->top_toolbar), GTK_WIDGET (priv->title_button), "expand", TRUE, NULL);
gtk_container_add (GTK_CONTAINER (obj), priv->main_vbox);
g_signal_connect (G_OBJECT (obj), "style-set", G_CALLBACK (on_style_set), obj);
+
+ guint accel_key;
+ GdkModifierType accel_mods;
+ GtkAccelGroup *accel_group;
+ accel_group = gtk_accel_group_new ();
+ 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
}
}
+
+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);
+}