static gboolean restore_paned_timeout_handler (gpointer *data);
+static gboolean show_retrieving_banner (gpointer user_data);
+
typedef struct _ModestMainWindowPrivate ModestMainWindowPrivate;
struct _ModestMainWindowPrivate {
GtkWidget *msg_paned;
GtkWidget *updating_banner;
guint updating_banner_timeout;
+ /* "Retrieving" banner for header view */
+ GtkWidget *retrieving_banner;
+ guint retrieving_banner_timeout;
+
/* Display state */
osso_display_state_t display_state;
};
priv->sighandlers = NULL;
priv->updating_banner = NULL;
priv->updating_banner_timeout = 0;
+ priv->retrieving_banner = NULL;
+ priv->retrieving_banner_timeout = 0;
priv->display_state = OSSO_DISPLAY_ON;
modest_window_mgr_register_help_id (modest_runtime_get_window_mgr(),
priv->updating_banner = NULL;
}
+ if (priv->retrieving_banner_timeout > 0) {
+ g_source_remove (priv->retrieving_banner_timeout);
+ priv->retrieving_banner_timeout = 0;
+ }
+
+ if (priv->retrieving_banner) {
+ gtk_widget_destroy (priv->retrieving_banner);
+ priv->retrieving_banner = NULL;
+ }
+
if (priv->restore_paned_timeout > 0) {
g_source_remove (priv->restore_paned_timeout);
priv->restore_paned_timeout = 0;
TnyFolderChange *change,
ModestMainWindow *main_window)
{
+ gboolean refilter = FALSE;
gboolean folder_empty = FALSE;
gboolean all_marked_as_deleted = FALSE;
ModestMainWindowPrivate *priv;
if (changed & TNY_FOLDER_CHANGE_CHANGED_ADDED_HEADERS) {
modest_platform_push_email_notification ();
}
+
+ if ((changed) & TNY_FOLDER_CHANGE_CHANGED_EXPUNGED_HEADERS)
+ refilter = TRUE;
+ } else {
+ folder_empty = (((guint) tny_folder_get_all_count (TNY_FOLDER (folder))) == 0);
}
/* Check if all messages are marked to be deleted */
modest_main_window_set_contents_style (main_window,
MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS);
}
+
+ if (refilter)
+ modest_header_view_refilter (header_view);
}
g_object_unref (account);
if (!is_remote)
return;
+
+ /* Show information banner. Remove old timeout */
+ if (priv->retrieving_banner_timeout > 0) {
+ g_source_remove (priv->retrieving_banner_timeout);
+ priv->retrieving_banner_timeout = 0;
+ }
+ /* Create a new timeout */
+ priv->retrieving_banner_timeout =
+ g_timeout_add (2000, show_retrieving_banner, self);
}
/* Get toolbar mode from operation id*/
tmp = g_slist_next (tmp);
}
}
+
+ /* Update the main menu as well, we need to explicitely do
+ this in order to enable/disable accelerators */
+ modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (self));
}
static void
g_object_unref (account);
if (!is_remote)
return;
+
+ /* Remove old timeout */
+ if (priv->retrieving_banner_timeout > 0) {
+ g_source_remove (priv->retrieving_banner_timeout);
+ priv->retrieving_banner_timeout = 0;
+ }
+
+ /* Remove the banner if exists */
+ if (priv->retrieving_banner) {
+ gtk_widget_destroy (priv->retrieving_banner);
+ priv->retrieving_banner = NULL;
+ }
}
/* Get toolbar mode from operation id*/
/* If account_name == NULL, we must update all (option All) */
if (!account_name)
- modest_ui_actions_do_send_receive_all (win, FALSE);
+ modest_ui_actions_do_send_receive_all (win, TRUE);
else
- modest_ui_actions_do_send_receive (account_name, FALSE, win);
+ modest_ui_actions_do_send_receive (account_name, TRUE, win);
}
return (priv->display_state == OSSO_DISPLAY_ON) ? TRUE : FALSE;
}
+
+static gboolean
+show_retrieving_banner (gpointer user_data)
+{
+ ModestMainWindowPrivate *priv = NULL;
+
+ priv = MODEST_MAIN_WINDOW_GET_PRIVATE (user_data);
+
+ if (priv->retrieving_banner == NULL) {
+
+ /* We're outside the main lock */
+ gdk_threads_enter ();
+ priv->retrieving_banner =
+ modest_platform_animation_banner (GTK_WIDGET (user_data), NULL,
+ _("mcen_ib_getting_items"));
+ gdk_threads_leave ();
+ }
+
+ /* Remove timeout */
+ priv->retrieving_banner_timeout = 0;
+ return FALSE;
+}