+ account = (TnyAccount *) modest_folder_view_get_selected (priv->folder_view);
+ if (TNY_IS_ACCOUNT (account) &&
+ !strcmp (tny_account_get_id (account), MODEST_ACTUAL_LOCAL_FOLDERS_ACCOUNT_ID)) {
+ GList *children;
+ GtkLabel *label;
+ const gchar *device_name;
+ gchar *new_text;
+
+ /* Get label */
+ children = gtk_container_get_children (GTK_CONTAINER (priv->details_widget));
+ label = GTK_LABEL (children->data);
+
+ device_name = modest_conf_get_string (modest_runtime_get_conf(),
+ MODEST_CONF_DEVICE_NAME, NULL);
+
+ new_text = g_strdup_printf ("%s: %s",
+ _("mcen_fi_localroot_description"),
+ device_name);
+
+ gtk_label_set_text (label, new_text);
+ gtk_widget_show (GTK_WIDGET (label));
+
+ g_free (new_text);
+ g_list_free (children);
+ }
+}
+
+static gboolean
+set_toolbar_transfer_mode (ModestMainWindow *self)
+{
+ ModestMainWindowPrivate *priv = NULL;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW (self), FALSE);
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+ set_toolbar_mode (self, TOOLBAR_MODE_TRANSFER);
+
+ if (priv->progress_bar_timeout > 0) {
+ g_source_remove (priv->progress_bar_timeout);
+ priv->progress_bar_timeout = 0;
+ }
+
+ return FALSE;
+}
+
+static void
+set_toolbar_mode (ModestMainWindow *self,
+ ModestToolBarModes mode)
+{
+ ModestWindowPrivate *parent_priv = NULL;
+ ModestMainWindowPrivate *priv = NULL;
+ GtkAction *sort_action = NULL, *refresh_action = NULL, *cancel_action = NULL;
+
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW (self));
+
+ parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+ g_return_if_fail (GTK_IS_TOOLBAR(parent_priv->toolbar));
+
+ sort_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSort");
+ refresh_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarSendReceive");
+ cancel_action = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarCancel");
+
+ /* Sets current toolbar mode */
+ priv->current_toolbar_mode = mode;
+
+ /* Show and hide toolbar items */
+ switch (mode) {
+ case TOOLBAR_MODE_NORMAL:
+ if (sort_action)
+ gtk_action_set_visible (sort_action, TRUE);
+ if (refresh_action)
+ gtk_action_set_visible (refresh_action, TRUE);
+ if (priv->progress_toolitem) {
+ gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), FALSE);
+ gtk_widget_hide (priv->progress_toolitem);
+ }
+ if (priv->progress_bar)
+ gtk_widget_hide (priv->progress_bar);
+
+ if (cancel_action)
+ gtk_action_set_visible (cancel_action, FALSE);
+
+ /* Hide toolbar if optimized view is enabled */
+ if (priv->optimized_view)
+ gtk_widget_hide (GTK_WIDGET(parent_priv->toolbar));
+ break;
+ case TOOLBAR_MODE_TRANSFER:
+ if (sort_action)
+ gtk_action_set_visible (sort_action, FALSE);
+ if (refresh_action)
+ gtk_action_set_visible (refresh_action, FALSE);
+ if (cancel_action)
+ gtk_action_set_visible (cancel_action, TRUE);
+ if (priv->progress_toolitem) {
+ gtk_tool_item_set_expand (GTK_TOOL_ITEM (priv->progress_toolitem), TRUE);
+ gtk_widget_show (priv->progress_toolitem);
+ }
+ if (priv->progress_bar)
+ gtk_widget_show (priv->progress_bar);
+
+ /* Show toolbar if it's hiden (optimized view ) */
+ if (priv->optimized_view)
+ gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
+ break;
+ default:
+ g_return_if_reached ();
+ }
+}
+
+static void
+cancel_progressbar (GtkToolButton *toolbutton,
+ ModestMainWindow *self)
+{
+ GSList *tmp;
+ ModestMainWindowPrivate *priv;
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+ /* Get operation observers and cancel its current operation */
+ tmp = priv->progress_widgets;
+ while (tmp) {
+ modest_progress_object_cancel_current_operation (MODEST_PROGRESS_OBJECT(tmp->data));
+ tmp=g_slist_next(tmp);
+ }
+}
+
+static gboolean
+observers_empty (ModestMainWindow *self)
+{
+ GSList *tmp = NULL;
+ ModestMainWindowPrivate *priv;
+ gboolean is_empty = TRUE;
+ guint pending_ops = 0;
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+ tmp = priv->progress_widgets;
+
+ /* Check all observers */
+ while (tmp && is_empty) {
+ pending_ops = modest_progress_object_num_pending_operations (MODEST_PROGRESS_OBJECT(tmp->data));
+ is_empty = pending_ops == 0;
+
+ tmp = g_slist_next(tmp);
+ }
+
+ return is_empty;
+}
+
+static void
+on_queue_changed (ModestMailOperationQueue *queue,
+ ModestMailOperation *mail_op,
+ ModestMailOperationQueueNotification type,
+ ModestMainWindow *self)
+{
+ ModestMainWindowPrivate *priv;
+ ModestMailOperationId op_id;
+ ModestToolBarModes mode;
+ GSList *tmp;
+ gboolean mode_changed = FALSE;
+ ModestMailOperationStatus status;
+
+ g_return_if_fail (MODEST_IS_MAIN_WINDOW (self));
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
+
+ /* Get toolbar mode from operation id*/
+ op_id = modest_mail_operation_get_id (mail_op);
+ switch (op_id) {
+ case MODEST_MAIL_OPERATION_ID_SEND:
+ case MODEST_MAIL_OPERATION_ID_RECEIVE:
+ mode = TOOLBAR_MODE_TRANSFER;
+ if (priv->current_toolbar_mode == TOOLBAR_MODE_NORMAL)
+ mode_changed = TRUE;
+ break;
+ default:
+ mode = TOOLBAR_MODE_NORMAL;
+