static void set_toolbar_mode (ModestMainWindow *self,
ModestToolBarModes mode);
+static gboolean set_toolbar_transfer_mode (ModestMainWindow *self);
+
static void on_show_account_action_activated (GtkAction *action,
gpointer user_data);
ModestMainWindowStyle style;
ModestMainWindowContentsStyle contents_style;
+
+ guint progress_bar_timeout;
+
};
#define MODEST_MAIN_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
MODEST_TYPE_MAIN_WINDOW, \
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;
priv->contents_style = MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS;
priv->merge_ids = NULL;
+
+ priv->optimized_view = FALSE;
+ priv->progress_bar_timeout = 0;
}
static void
g_byte_array_free (priv->merge_ids, TRUE);
+ if (priv->progress_bar_timeout > 0) {
+ g_source_remove (priv->progress_bar_timeout);
+ priv->progress_bar_timeout = 0;
+ }
+
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
}
if (show_toolbar) {
- /* Quick hack: this prevents toolbar icons "dance" when progress bar show status is changed */
+ /* 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
}
}
+static gboolean
+set_toolbar_transfer_mode (ModestMainWindow *self)
+{
+ set_toolbar_mode (self, TOOLBAR_MODE_TRANSFER);
+
+ return FALSE;
+}
+
static void
set_toolbar_mode (ModestMainWindow *self,
ModestToolBarModes mode)
switch (type) {
case MODEST_MAIL_OPERATION_QUEUE_OPERATION_ADDED:
if (mode_changed)
- set_toolbar_mode (self, mode);
+ priv->progress_bar_timeout = g_timeout_add (1000,
+ (GSourceFunc) set_toolbar_transfer_mode,
+ self);
if (mode == TOOLBAR_MODE_TRANSFER) {
while (tmp) {
modest_progress_object_add_operation (MODEST_PROGRESS_OBJECT (tmp->data),
}
break;
case MODEST_MAIL_OPERATION_QUEUE_OPERATION_REMOVED:
- if (mode == TOOLBAR_MODE_TRANSFER) {
-
+ if (mode == TOOLBAR_MODE_TRANSFER) {
while (tmp) {
modest_progress_object_remove_operation (MODEST_PROGRESS_OBJECT (tmp->data),
mail_op);
}
/* If no more operations are being observed, NORMAL mode is enabled again */
- if (observers_empty (self))
+ if (observers_empty (self)) {
+ if (priv->progress_bar_timeout > 0) {
+ g_source_remove (priv->progress_bar_timeout);
+ priv->progress_bar_timeout = 0;
+ }
+
set_toolbar_mode (self, TOOLBAR_MODE_NORMAL);
+ }
}
break;
}
static void set_toolbar_mode (ModestMsgViewWindow *self,
ModestToolBarModes mode);
+static gboolean set_toolbar_transfer_mode (ModestMsgViewWindow *self);
/* list my signals */
enum {
guint clipboard_change_handler;
guint queue_change_handler;
+
+ guint progress_bar_timeout;
};
#define MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
priv->clipboard_change_handler = 0;
priv->optimized_view = FALSE;
-
+ priv->progress_bar_timeout = 0;
}
+static gboolean
+set_toolbar_transfer_mode (ModestMsgViewWindow *self)
+{
+ set_toolbar_mode (self, TOOLBAR_MODE_TRANSFER);
+
+ return FALSE;
+}
+
static void
set_toolbar_mode (ModestMsgViewWindow *self,
ModestToolBarModes mode)
priv->queue_change_handler = 0;
}
+ if (priv->progress_bar_timeout > 0) {
+ g_source_remove (priv->progress_bar_timeout);
+ priv->progress_bar_timeout = 0;
+ }
+
G_OBJECT_CLASS(parent_class)->finalize (obj);
}
priv->cancel_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarCancel");
priv->next_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageNext");
priv->prev_toolitem = gtk_ui_manager_get_widget (parent_priv->ui_manager, "/ToolBar/ToolbarMessageBack");
- gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), FALSE);
- gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), FALSE);
+ gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE);
+ gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE);
gtk_tool_item_set_homogeneous (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE);
gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->cancel_toolitem), FALSE);
}
/* Enable transfer toolbar mode */
- set_toolbar_mode (MODEST_MSG_VIEW_WINDOW(self), mode);
+ priv->progress_bar_timeout = g_timeout_add (1000,
+ (GSourceFunc) set_toolbar_transfer_mode,
+ self);
}
break;
case MODEST_MAIL_OPERATION_QUEUE_OPERATION_REMOVED:
}
/* If no more operations are being observed, NORMAL mode is enabled again */
- if (observers_empty (self))
+ if (observers_empty (self)) {
+ if (priv->progress_bar_timeout > 0) {
+ g_source_remove (priv->progress_bar_timeout);
+ priv->progress_bar_timeout = 0;
+ }
+
set_toolbar_mode (self, TOOLBAR_MODE_NORMAL);
+ }
}
break;
}