of ModestMainWindow object.
* Add ui manager toolitems for this new widget and Cancel button.
* Sinchronize toolbar items dimming based on toolbar operation
mode (Normal/Transfer).
pmo-trunk-r1672
modest-connection-specific-smtp-window.h \
modest-connection-specific-smtp-window.c \
modest-connection-specific-smtp-edit-window.h \
- modest-connection-specific-smtp-edit-window.c
+ modest-connection-specific-smtp-edit-window.c \
+ modest-progress-bar-widget.c \
+ modest-progress-bar-widget.h
+
libmodest_ui_la_LIBADD = \
$(MODEST_GSTUFF_LIBS) \
#define MODEST_HEADER_ICON_DELETED "qgn_list_messagin_mail_deleted"
#define MODEST_HEADER_ICON_ATTACH "qgn_list_gene_attacpap"
-#define MODEST_HEADER_ICON_ATTACH_HIGH_PRIORITY PIXMAP_PREFIX "qgn_list_gene_high_attacpap,png"
-#define MODEST_HEADER_ICON_ATTACH_LOW_PRIORITY PIXMAP_PREFIX "qgn_list_gene_low_attacpap.png"
-#define MODEST_HEADER_ICON_ATTACH_NORM_PRIORITY PIXMAP_PREFIX "qgn_list_gene_norm_attacpap.png"
+#define MODEST_HEADER_ICON_ATTACH_HIGH_PRIORITY "qgn_list_gene_high_attacpap"
+#define MODEST_HEADER_ICON_ATTACH_LOW_PRIORITY "qgn_list_gene_low_attacpap"
+#define MODEST_HEADER_ICON_ATTACH_NORM_PRIORITY "qgn_list_gene_norm_attacpap"
-#define MODEST_HEADER_ICON_HIGH_PRIORITY PIXMAP_PREFIX "qgn_list_messaging_high_noatt.png"
-#define MODEST_HEADER_ICON_LOW_PRIORITY PIXMAP_PREFIX "qgn_list_messaging_low_noatt.png"
+#define MODEST_HEADER_ICON_HIGH_PRIORITY "qgn_list_messaging_high_noatt"
+#define MODEST_HEADER_ICON_LOW_PRIORITY "qgn_list_messaging_low_noatt"
#define MODEST_FOLDER_ICON_OPEN "qgn_list_gene_fldr_opn"
#define MODEST_FOLDER_ICON_CLOSED "qgn_list_gene_fldr_cls"
{ "ToolbarMessageBack", GTK_STOCK_GO_BACK, N_("qgn_toolb_gene_back"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_prev) },
{ "ToolbarMessageNext", GTK_STOCK_GO_FORWARD, N_("qgn_toolb_gene_forward"), NULL, NULL, G_CALLBACK (modest_ui_actions_on_next) },
{ "ToolbarMessageMoveTo", MODEST_TOOLBAR_ICON_MOVE_TO_FOLDER, N_("qgn_toolb_gene_movetofldr"), NULL, NULL, NULL },
+ { "ToolbarCancel", GTK_STOCK_STOP, "", NULL, NULL, NULL },
};
static const GtkToggleActionEntry modest_toggle_action_entries [] = {
#include "modest-tny-msg.h"
#include "modest-mail-operation.h"
#include "modest-icon-names.h"
+#include "modest-progress-bar-widget.h"
/* 'private'/'protected' functions */
static void modest_main_window_class_init (ModestMainWindowClass *klass);
LAST_SIGNAL
};
+
typedef struct _ModestMainWindowPrivate ModestMainWindowPrivate;
struct _ModestMainWindowPrivate {
GtkWidget *msg_paned;
GtkWidget *main_vbox;
GtkWidget *contents_widget;
+ /* Progress observers */
+ GtkWidget *progress_widget;
+
/* On-demand widgets */
GtkWidget *accounts_popup;
GtkWidget *details_widget;
}
void
+modest_main_window_set_toolbar_mode (ModestMainWindow *self,
+ ModestToolBarModes mode)
+{
+ ModestMainWindowPrivate *priv;
+ ModestWindowPrivate *parent_priv;
+ GtkAction *action;
+ gboolean transfer_mode= FALSE;
+ gboolean normal_mode= FALSE;
+
+
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW (self));
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+ parent_priv = MODEST_WINDOW_GET_PRIVATE (self);
+
+ switch (mode) {
+ case TOOLBAR_MODE_NORMAL:
+ normal_mode = TRUE;
+ transfer_mode = FALSE;
+ gtk_widget_hide (priv->progress_widget);
+ break;
+ case TOOLBAR_MODE_TRANSFER:
+ normal_mode = FALSE;
+ transfer_mode = TRUE;
+ gtk_widget_show (priv->progress_widget);
+ break;
+ default:
+ normal_mode = TRUE;
+ transfer_mode = FALSE;
+ gtk_widget_hide (priv->progress_widget);
+ }
+
+ /* Transfer mode toolitems */
+ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarCancel");
+ if (action != NULL)
+ gtk_action_set_visible (action, transfer_mode);
+
+ /* Normal mode toolitems */
+ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSort");
+ if (action != NULL)
+ gtk_action_set_visible (action, normal_mode);
+ action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSendReceive");
+ if (action != NULL)
+ gtk_action_set_visible (action, normal_mode);
+}
+
+void
modest_main_window_set_style (ModestMainWindow *self,
ModestMainWindowStyle style)
{
modest_main_window_show_toolbar (ModestWindow *self,
gboolean show_toolbar)
{
- ModestWindowPrivate *parent_priv;
+ ModestMainWindowPrivate *priv = NULL;
+ ModestWindowPrivate *parent_priv = NULL;
GtkWidget *reply_button = NULL, *menu = NULL;
-
+ GtkWidget *placeholder = NULL;
+ GtkWidget *tool_item = NULL;
+ gint insert_index;
+
parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
if (!parent_priv->toolbar && show_toolbar) {
parent_priv->toolbar = gtk_ui_manager_get_widget (parent_priv->ui_manager,
gtk_container_foreach (GTK_CONTAINER (parent_priv->toolbar),
set_homogeneous, NULL);
+ /* Add ProgressBar (Transfer toolbar) */
+ priv->progress_widget = modest_progress_bar_widget_new ();
+ gtk_widget_set_no_show_all (priv->progress_widget, TRUE);
+ modest_progress_bar_widget_set_status (MODEST_PROGRESS_BAR_WIDGET(priv->progress_widget), 0);
+ placeholder = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ProgressBarView");
+ insert_index = gtk_toolbar_get_item_index(GTK_TOOLBAR (parent_priv->toolbar), GTK_TOOL_ITEM(placeholder));
+ tool_item = GTK_WIDGET (gtk_tool_item_new ());
+ gtk_container_add (GTK_CONTAINER (tool_item), priv->progress_widget);
+/* gtk_tool_item_set_expand (GTK_TOOL_ITEM (tool_item), TRUE); */
+/* gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (tool_item), TRUE); */
+ gtk_toolbar_insert(GTK_TOOLBAR(parent_priv->toolbar), GTK_TOOL_ITEM (tool_item), insert_index);
+
/* Add to window */
hildon_window_add_toolbar (HILDON_WINDOW (self),
GTK_TOOLBAR (parent_priv->toolbar));
}
- if (show_toolbar)
+ if (show_toolbar) {
gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
- else
+ modest_main_window_set_toolbar_mode (MODEST_MAIN_WINDOW(self), TOOLBAR_MODE_NORMAL);
+ } else
gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
}
--- /dev/null
+/* Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <widgets/modest-combo-box.h>
+#include "modest-progress-bar-widget.h"
+#include <string.h>
+
+/* 'private'/'protected' functions */
+static void modest_progress_bar_widget_class_init (ModestProgressBarWidgetClass *klass);
+static void modest_progress_bar_widget_init (ModestProgressBarWidget *obj);
+static void modest_progress_bar_widget_finalize (GObject *obj);
+/* list my signals */
+/* enum { */
+/* LAST_SIGNAL */
+/* }; */
+
+typedef struct _ModestProgressBarWidgetPrivate ModestProgressBarWidgetPrivate;
+struct _ModestProgressBarWidgetPrivate {
+ GtkWidget *bar;
+
+};
+#define MODEST_PROGRESS_BAR_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+ MODEST_TYPE_PROGRESS_BAR_WIDGET, \
+ ModestProgressBarWidgetPrivate))
+/* globals */
+static GtkContainerClass *parent_class = NULL;
+
+/* uncomment the following if you have defined any signals */
+/* static guint signals[LAST_SIGNAL] = {0}; */
+
+GType
+modest_progress_bar_widget_get_type (void)
+{
+ static GType my_type = 0;
+ if (!my_type) {
+ static const GTypeInfo my_info = {
+ sizeof(ModestProgressBarWidgetClass),
+ NULL, /* base init */
+ NULL, /* base finalize */
+ (GClassInitFunc) modest_progress_bar_widget_class_init,
+ NULL, /* class finalize */
+ NULL, /* class data */
+ sizeof(ModestProgressBarWidget),
+ 1, /* n_preallocs */
+ (GInstanceInitFunc) modest_progress_bar_widget_init,
+ NULL
+ };
+ my_type = g_type_register_static (GTK_TYPE_VBOX,
+ "ModestProgressBarWidget",
+ &my_info, 0);
+ }
+ return my_type;
+}
+
+static void
+modest_progress_bar_widget_class_init (ModestProgressBarWidgetClass *klass)
+{
+ GObjectClass *gobject_class;
+ gobject_class = (GObjectClass*) klass;
+
+ parent_class = g_type_class_peek_parent (klass);
+ gobject_class->finalize = modest_progress_bar_widget_finalize;
+
+ g_type_class_add_private (gobject_class, sizeof(ModestProgressBarWidgetPrivate));
+
+ /* signal definitions go here, e.g.: */
+/* signals[DATA_CHANGED_SIGNAL] = */
+/* g_signal_new ("data_changed", */
+/* G_TYPE_FROM_CLASS (klass), */
+/* G_SIGNAL_RUN_FIRST, */
+/* G_STRUCT_OFFSET(ModestProgressBarWidgetClass, data_changed), */
+/* NULL, NULL, */
+/* g_cclosure_marshal_VOID__VOID, */
+/* G_TYPE_NONE, 0); */
+}
+
+static void
+modest_progress_bar_widget_init (ModestProgressBarWidget *obj)
+{
+ ModestProgressBarWidgetPrivate *priv;
+
+ priv = MODEST_PROGRESS_BAR_WIDGET_GET_PRIVATE(obj);
+ priv->bar = NULL;
+}
+
+
+static void
+modest_progress_bar_widget_finalize (GObject *obj)
+{
+ G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+GtkWidget*
+modest_progress_bar_widget_new ()
+{
+ GObject *obj;
+ ModestProgressBarWidget *self;
+ ModestProgressBarWidgetPrivate *priv;
+ GtkRequisition req;
+
+
+ obj = g_object_new(MODEST_TYPE_PROGRESS_BAR_WIDGET, NULL);
+ self = MODEST_PROGRESS_BAR_WIDGET(obj);
+ priv = MODEST_PROGRESS_BAR_WIDGET_GET_PRIVATE(self);
+
+ /* Build GtkProgressBar */
+ priv->bar = gtk_progress_bar_new ();
+ req.width = 50;
+ req.height = 64;
+ gtk_progress_set_text_alignment (GTK_PROGRESS (priv->bar), 0.0, 0.5);
+ gtk_progress_bar_set_ellipsize (GTK_PROGRESS_BAR (priv->bar), PANGO_ELLIPSIZE_END);
+ gtk_widget_size_request (priv->bar, &req);
+
+ /* Add progress bar widget */
+ gtk_box_pack_start (GTK_BOX(self), priv->bar, TRUE, TRUE, 2);
+ gtk_widget_show_all (GTK_WIDGET(self));
+
+ return GTK_WIDGET(self);
+}
+
+
+void
+modest_progress_bar_widget_set_status (ModestProgressBarWidget *self,
+ guint id)
+{
+ ModestProgressBarWidgetPrivate *priv;
+ gchar *status = NULL;
+ gboolean determined = FALSE;
+ guint d1 = 0, d2 = 0;
+
+ priv = MODEST_PROGRESS_BAR_WIDGET_GET_PRIVATE(self);
+
+ switch (id) {
+ case STATUS_RECEIVING:
+ if (determined)
+ status = g_strdup_printf(_("mcen_me_receiving"), d1, d2);
+ else
+ status = g_strdup(_("mail_me_receiving"));
+ break;
+ case STATUS_SENDING:
+ if (determined)
+ status = g_strdup_printf(_("mcen_me_sending"), d1, d2);
+ else
+ status = g_strdup(_("mail_me_sending"));
+ break;
+
+ case STATUS_OPENING:
+ status = g_strdup(_("mail_me_opening"));
+ break;
+ default:
+ g_return_if_reached();
+ }
+
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR(priv->bar), status);
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR(priv->bar), 0.5);
+
+ /* free*/
+ g_free(status);
+}
--- /dev/null
+/* Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __MODEST_PROGRESS_BAR_WIDGET_H__
+#define __MODEST_PROGRESS_BAR_WIDGET_H__
+
+#include <gtk/gtkvbox.h>
+#include <modest-protocol-info.h>
+
+G_BEGIN_DECLS
+
+/* convenience macros */
+#define MODEST_TYPE_PROGRESS_BAR_WIDGET (modest_progress_bar_widget_get_type())
+#define MODEST_PROGRESS_BAR_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_PROGRESS_BAR_WIDGET,ModestProgressBarWidget))
+#define MODEST_PROGRESS_BAR_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_PROGRESS_BAR_WIDGET,GtkContainer))
+#define MODEST_IS_PROGRESS_BAR_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_PROGRESS_BAR_WIDGET))
+#define MODEST_IS_PROGRESS_BAR_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_PROGRESS_BAR_WIDGET))
+#define MODEST_PROGRESS_BAR_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_PROGRESS_BAR_WIDGET,ModestProgressBarWidgetClass))
+
+typedef struct _ModestProgressBarWidget ModestProgressBarWidget;
+typedef struct _ModestProgressBarWidgetClass ModestProgressBarWidgetClass;
+
+struct _ModestProgressBarWidget {
+ GtkVBox parent;
+ /* insert public members, if any */
+};
+
+struct _ModestProgressBarWidgetClass {
+ GtkVBoxClass parent_class;
+
+};
+
+typedef enum {
+ STATUS_RECEIVING,
+ STATUS_SENDING,
+ STATUS_OPENING
+} ModestProgressStatus;
+
+
+
+/* member functions */
+GType modest_progress_bar_widget_get_type (void) G_GNUC_CONST;
+
+GtkWidget* modest_progress_bar_widget_new ();
+
+void modest_progress_bar_widget_set_status (ModestProgressBarWidget *self, guint id);
+
+
+
+G_END_DECLS
+
+#endif /* __MODEST_PROGRESS_BAR_WIDGET_H__ */
+
<toolitem action="ToolbarToggleView"/>
<toolitem action="ToolbarSort"/>
<toolitem action="ToolbarSendReceive"/>
+ <placeholder name="ProgressBarView">
+ </placeholder>
+ <toolitem action="ToolbarCancel"/>
</toolbar>
<popup name="HeaderViewCSM">