X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-dimming-rules.c;h=a3a6552b115f489b09c0dc75e96a219e6a93cd8e;hp=6891397aa6459a679962615027cc72e2176728c1;hb=85b45045c6b46f9a8e3f2e4b5d5500be17892e42;hpb=8ebeb00230a8480cd695625b26db8a48882617dc diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 6891397..a3a6552 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -34,6 +34,7 @@ #include #include "modest-ui-dimming-rules.h" #include "modest-ui-actions.h" +#include "modest-account-mgr-helpers.h" #include "modest-dimming-rule.h" #include "modest-debug.h" #include "modest-tny-folder.h" @@ -83,7 +84,7 @@ static gboolean _selected_folder_has_subfolder_with_same_name (ModestWindow *win static void fill_list_of_caches (gpointer key, gpointer value, gpointer userdata); static gboolean _send_receive_in_progress (ModestWindow *win); static gboolean _msgs_send_in_progress (void); -static gboolean _all_msgs_in_sending_status (ModestHeaderView *header_view); +static gboolean _all_msgs_in_sending_status (ModestHeaderView *header_view) G_GNUC_UNUSED; static DimmedState * _define_main_window_dimming_state (ModestMainWindow *window) @@ -489,7 +490,8 @@ modest_ui_dimming_rules_on_delete (ModestWindow *win, gpointer user_data) header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win))); folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view)); if (folder) { - dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0); + dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0) || + modest_header_view_is_empty (MODEST_HEADER_VIEW (header_view)); if (!dimmed && (tny_folder_get_folder_type (TNY_FOLDER (folder)) == TNY_FOLDER_TYPE_OUTBOX)) { @@ -618,11 +620,6 @@ modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data) if (dimmed) modest_dimming_rule_set_notification (rule, ""); } - if (!dimmed) { - dimmed = _transfer_mode_enabled (win); - if (dimmed) - modest_dimming_rule_set_notification (rule, ""); - } return dimmed; } @@ -932,19 +929,24 @@ modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data) if (MODEST_IS_MSG_VIEW_WINDOW (win)) dimmed = _msg_download_in_progress (win); if (dimmed) - modest_dimming_rule_set_notification (rule, ""); - if (!dimmed && MODEST_IS_MSG_VIEW_WINDOW (win)) { - if (!modest_msg_view_window_is_search_result (MODEST_MSG_VIEW_WINDOW(win))) { - dimmed = !modest_msg_view_window_has_headers_model (MODEST_MSG_VIEW_WINDOW (win)); - } - if (dimmed) - modest_dimming_rule_set_notification (rule, ""); - } + modest_dimming_rule_set_notification (rule, ""); } return dimmed; } +gboolean +modest_ui_dimming_rules_on_fetch_images (ModestWindow *win, gpointer user_data) +{ + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE); + + dimmed = !modest_msg_view_window_has_blocked_external_images (MODEST_MSG_VIEW_WINDOW (win)); + + return dimmed; +} + gboolean modest_ui_dimming_rules_on_mark_as_read_msg_in_view (ModestWindow *win, gpointer user_data) @@ -1438,7 +1440,7 @@ modest_ui_dimming_rules_on_save_attachments (ModestWindow *win, gpointer user_da dimmed = _invalid_attach_selected (win, FALSE, FALSE, FALSE, rule); if (!dimmed) { - dimmed = _purged_attach_selected (win, TRUE); + dimmed = _purged_attach_selected (win, TRUE, NULL); if (dimmed) { modest_dimming_rule_set_notification (rule, _("mail_ib_attach_not_local")); } @@ -1469,25 +1471,6 @@ modest_ui_dimming_rules_on_remove_attachments (ModestWindow *win, gpointer user_ dimmed = _invalid_attach_selected (win, FALSE, FALSE, TRUE, NULL); if (dimmed) modest_dimming_rule_set_notification (rule, _("FIXME:no attachment selected")); - - if (!dimmed) { - TnyList *attachments; - TnyIterator *iter; - attachments = modest_msg_view_window_get_attachments (MODEST_MSG_VIEW_WINDOW (win)); - if (attachments) { - iter = tny_list_create_iterator (attachments); - while (!tny_iterator_is_done (iter) && !dimmed) { - TnyMimePart *mime_part = (TnyMimePart *) - tny_iterator_get_current (iter); - if (modest_tny_mime_part_is_msg (mime_part)) - dimmed = TRUE; - g_object_unref (mime_part); - tny_iterator_next (iter); - } - g_object_unref (iter); - g_object_unref (attachments); - } - } } if (!dimmed) { @@ -1910,20 +1893,52 @@ modest_ui_dimming_rules_on_view_next (ModestWindow *win, gpointer user_data) if (!dimmed) { dimmed = modest_msg_view_window_last_message_selected (MODEST_MSG_VIEW_WINDOW (win)); modest_dimming_rule_set_notification (rule, NULL); - } + } return dimmed; } -gboolean +gboolean modest_ui_dimming_rules_on_tools_smtp_servers (ModestWindow *win, gpointer user_data) { - return !modest_account_mgr_has_accounts(modest_runtime_get_account_mgr(), - TRUE); + gboolean dimmed; + ModestAccountMgr *mgr; + + mgr = modest_runtime_get_account_mgr(); + dimmed = !modest_account_mgr_has_accounts(mgr, TRUE); + + /* Dimm it if we only have metaaccounts */ + if (!dimmed) { + ModestProtocolRegistry *reg = modest_runtime_get_protocol_registry (); + GSList *account_names = modest_account_mgr_account_names (mgr, TRUE); + + if (account_names) { + ModestProtocolType store_protocol; + gboolean found = FALSE; + GSList *iter = account_names; + const gchar *tag = MODEST_PROTOCOL_REGISTRY_MULTI_MAILBOX_PROVIDER_PROTOCOLS; + + while (iter && !found) { + gchar* account_name; + + account_name = (gchar *) iter->data; + store_protocol = modest_account_mgr_get_store_protocol (mgr, account_name); + + if (!modest_protocol_registry_protocol_type_has_tag (reg, store_protocol, tag)) + found = TRUE; + else + iter = g_slist_next (iter); + } + modest_account_mgr_free_account_names (account_names); + dimmed = !found; + } + } + + return dimmed; } -gboolean +gboolean modest_ui_dimming_rules_on_cancel_sending (ModestWindow *win, gpointer user_data) { ModestDimmingRule *rule = NULL; @@ -2548,7 +2563,7 @@ _invalid_clipboard_selected (ModestWindow *win, result = !has_selection; } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) { if (focused) { - MODEST_DEBUG_BLOCK (g_message ("FOCUSED %s", g_type_name (G_TYPE_FROM_INSTANCE (focused)));); + MODEST_DEBUG_BLOCK (g_debug ("FOCUSED %s", g_type_name (G_TYPE_FROM_INSTANCE (focused)));); if (GTK_IS_LABEL (focused) && !gtk_label_get_selection_bounds (GTK_LABEL (focused), NULL, NULL)) { result = TRUE; @@ -3094,7 +3109,8 @@ modest_ui_dimming_rules_on_header_window_move_to (ModestWindow *win, gpointer us header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win))); folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view)); if (folder) { - dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0); + dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0) || + modest_header_view_is_empty (MODEST_HEADER_VIEW (header_view)); if (!dimmed && (tny_folder_get_folder_type (TNY_FOLDER (folder)) == TNY_FOLDER_TYPE_OUTBOX)) { @@ -3129,6 +3145,12 @@ modest_ui_dimming_rules_on_folder_window_move_to (ModestWindow *win, gpointer us MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE); } + if (!dimmed) { + dimmed = _transfer_mode_enabled (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + return dimmed; } @@ -3154,6 +3176,12 @@ modest_ui_dimming_rules_on_folder_window_delete (ModestWindow *win, gpointer use MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE); } + if (!dimmed) { + dimmed = _transfer_mode_enabled (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + return dimmed; }