static gboolean set_toolbar_transfer_mode (ModestMsgViewWindow *self);
+
+
/* list my signals */
enum {
/* MY_SIGNAL_1, */
GtkWidget *cancel_toolitem;
GtkWidget *prev_toolitem;
GtkWidget *next_toolitem;
+ ModestToolBarModes current_toolbar_mode;
/* Optimized view enabled */
gboolean optimized_view;
priv->msg_view = NULL;
priv->header_model = NULL;
priv->clipboard_change_handler = 0;
+ priv->current_toolbar_mode = TOOLBAR_MODE_NORMAL;
priv->optimized_view = FALSE;
priv->progress_bar_timeout = 0;
parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(self);
+ /* Sets current toolbar mode */
+ priv->current_toolbar_mode = mode;
+
switch (mode) {
case TOOLBAR_MODE_NORMAL:
widget = gtk_ui_manager_get_action (parent_priv->ui_manager, "/ToolBar/ToolbarMessageNew");
}
+gboolean
+modest_msg_view_window_toolbar_on_transfer_mode (ModestMsgViewWindow *self)
+{
+ ModestMsgViewWindowPrivate *priv= NULL;
+
+ g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (self), FALSE);
+ priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE (self);
+
+ return priv->current_toolbar_mode == TOOLBAR_MODE_TRANSFER;
+}
TnyHeader*
modest_msg_view_window_get_header (ModestMsgViewWindow *self)
if (!(flags & TNY_HEADER_FLAG_SEEN))
tny_header_set_flags (header, flags | TNY_HEADER_FLAG_SEEN);
+ /* Msg download initied */
+
/* New mail operation */
mail_op = modest_mail_operation_new (MODEST_MAIL_OPERATION_TYPE_RECEIVE, G_OBJECT(window));
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op);
{
/* g_message ("not implemented %s", __FUNCTION__); */
}
+
+
static gboolean _selected_folder_is_root (ModestMainWindow *win);
static gboolean _selected_folder_is_empty (ModestMainWindow *win);
static gboolean _msg_download_in_progress (ModestMsgViewWindow *win);
+static gboolean _msg_download_completed (ModestMainWindow *win);
static gboolean _msg_sent_in_progress (ModestWindow *win);
static gboolean _marked_as_deleted (ModestWindow *win);
dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, user_data);
if (!dimmed) {
dimmed = _msg_sent_in_progress (win);
- modest_dimming_rule_set_notification (rule, _("TEST"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("TEST"));
}
return dimmed;
/* Check dimmed rule */
if (!dimmed) {
dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3);
- modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
}
if (!dimmed) {
dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
- modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply"));
}
if (!dimmed)
dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, rule);
g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
/* Check dimmed rule */
- dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
+ if (!dimmed)
+ dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
+ if (!dimmed)
+ dimmed = _msg_download_completed (MODEST_MAIN_WINDOW(win));
return dimmed;
}
/* Check dimmed rule */
if (!dimmed) {
dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
- modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_del"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_del"));
}
if (!dimmed) {
dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
- modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
}
if (!dimmed) {
dimmed = _already_opened_msg (win);
- modest_dimming_rule_set_notification (rule, _("mcen_nc_unable_to_delete_n_messages"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mcen_nc_unable_to_delete_n_messages"));
}
if (!dimmed) {
dimmed = _marked_as_deleted (win);
- modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_delete"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_delete"));
}
if (!dimmed) {
dimmed = _msg_sent_in_progress (win);
- modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_delete"));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_delete"));
}
return dimmed;
if (!result) {
result = ((selected_headers == NULL) ||
(GTK_WIDGET_HAS_FOCUS (folder_view)));
- modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
+ if (result)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
}
if (!result && unique) {
result = tny_list_get_length (selected_headers) > 1;
- modest_dimming_rule_set_notification (rule, _("mcen_ib_select_one_message"));
+ if (result)
+ modest_dimming_rule_set_notification (rule, _("mcen_ib_select_one_message"));
}
/* free */
g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE);
+ result = modest_msg_view_window_toolbar_on_transfer_mode (win);
+
+ return result;
+}
+
+static gboolean
+_msg_download_completed (ModestMainWindow *win)
+{
+ GtkWidget *header_view = NULL;
+ TnyList *selected_headers = NULL;
+ TnyIterator *iter = NULL;
+ TnyHeader *header = NULL;
+ TnyHeaderFlags flags;
+ gboolean result = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW (win), FALSE);
+
+
+ /* Get header view to check selected messages */
+ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+
+ /* Get selected headers */
+ selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
+ if (selected_headers == NULL)
+ return TRUE;
+
+ /* Check dimmed rule */
+ result = TRUE;
+ iter = tny_list_create_iterator (selected_headers);
+ while (!tny_iterator_is_done (iter) && result) {
+ header = TNY_HEADER (tny_iterator_get_current (iter));
+
+ flags = tny_header_get_flags (header);
+ /* TODO: is this the right flag?, it seems that some
+ headers that have been previously downloaded do not
+ come with it */
+ result = (flags & TNY_HEADER_FLAG_CACHED);
+
+ g_object_unref (header);
+ tny_iterator_next (iter);
+ }
+
+ g_object_unref (iter);
+
return result;
}