X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-dimming-rules.c;h=03ae7213524da4f66cca68b19dc6d09f0a5d5549;hp=66ee5db1f462bb187ff504801f7fdc9051ccf219;hb=362784ce756b3f0e31cd451d9ac5e69b909d4053;hpb=1fc74b1bc1eeb2a64a26747e815c12f4bcf4598e diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 66ee5db..03ae721 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -35,6 +35,7 @@ #include "modest-ui-dimming-rules.h" #include "modest-dimming-rule.h" #include "modest-tny-folder.h" +#include "modest-tny-account.h" #include "modest-text-utils.h" #include #include @@ -265,7 +266,12 @@ modest_ui_dimming_rules_on_sort (ModestWindow *win, gpointer user_data) /* Check dimmed rule */ if (!dimmed) { dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win)); - modest_dimming_rule_set_notification (rule, NULL); + modest_dimming_rule_set_notification (rule, _CS("ckdg_ib_nothing_to_sort")); + } + + if (!dimmed) { + dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win)); + modest_dimming_rule_set_notification (rule, _CS("ckdg_ib_nothing_to_sort")); } return dimmed; @@ -276,7 +282,7 @@ gboolean modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data) { ModestDimmingRule *rule = NULL; - TnyFolderType types[3]; + TnyFolderType types[4]; gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); @@ -286,6 +292,7 @@ modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data) types[0] = TNY_FOLDER_TYPE_DRAFTS; types[1] = TNY_FOLDER_TYPE_OUTBOX; types[2] = TNY_FOLDER_TYPE_SENT; + types[3] = TNY_FOLDER_TYPE_ARCHIVE; /* Check dimmed rule */ if (!dimmed) { @@ -299,7 +306,7 @@ modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data) modest_dimming_rule_set_notification (rule, ""); } if (!dimmed) { - dimmed = _selected_folder_is_any_of_type (win, types, 3); + dimmed = _selected_folder_is_any_of_type (win, types, 4); if (dimmed) modest_dimming_rule_set_notification (rule, ""); } @@ -463,7 +470,7 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data) if (!dimmed) { dimmed = _selected_msg_sent_in_progress (win); if (dimmed) - modest_dimming_rule_set_notification (rule, _("ckct_ib_unable_to_delete")); + modest_dimming_rule_set_notification (rule, _CS("ckct_ib_unable_to_delete")); } } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) { @@ -480,7 +487,7 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data) if (!dimmed) { dimmed = !modest_msg_view_window_has_headers_model (MODEST_MSG_VIEW_WINDOW(win)); if (dimmed) { - modest_dimming_rule_set_notification (rule, _("ckct_ib_unable_to_delete")); + modest_dimming_rule_set_notification (rule, _CS("ckct_ib_unable_to_delete")); } } } @@ -1167,12 +1174,15 @@ _selected_folder_is_root (ModestMainWindow *win) /* All accounts are root items: */ GtkWidget *folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), MODEST_WIDGET_TYPE_FOLDER_VIEW); - if (folder_view) { + if (folder_view) { + gboolean is_account = FALSE; TnyFolderStore *folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view)); - const gboolean is_account = TNY_IS_ACCOUNT (folder_store); - g_object_unref (folder_store); - folder_store = NULL; + if (folder_store) { + is_account = TNY_IS_ACCOUNT (folder_store); + g_object_unref (folder_store); + folder_store = NULL; + } if (is_account) return TRUE; @@ -1663,9 +1673,12 @@ _already_opened_msg (ModestWindow *win, found = FALSE; while (!tny_iterator_is_done (iter)) { header = TNY_HEADER (tny_iterator_get_current (iter)); - found = modest_window_mgr_find_registered_header (mgr,header, NULL); + if (header) { + found = modest_window_mgr_find_registered_header (mgr,header, NULL); - g_object_unref (header); + g_object_unref (header); + } + tny_iterator_next (iter); if (found) @@ -1691,16 +1704,19 @@ _selected_msg_marked_as (ModestWindow *win, TnyList *selected_headers = NULL; TnyIterator *iter = NULL; TnyHeader *header = NULL; - TnyHeaderFlags flags; + TnyHeaderFlags flags = 0; gboolean result = FALSE; if (MODEST_IS_MAIN_WINDOW (win)) main_window = win; - else { + else main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr ()); - } - + + /* TODO: Javi, what about if the main window does not + exist?. Adding some code to avoid CRITICALs */ + if (!main_window) + return FALSE; /* Get header view to check selected messages */ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(main_window), @@ -1719,14 +1735,16 @@ _selected_msg_marked_as (ModestWindow *win, iter = tny_list_create_iterator (selected_headers); while (!tny_iterator_is_done (iter) && !result) { header = TNY_HEADER (tny_iterator_get_current (iter)); + if (header) { + flags = tny_header_get_flags (header); + if (opposite) + result = (flags & mask) == 0; + else + result = (flags & mask) != 0; - flags = tny_header_get_flags (header); - if (opposite) - result = (flags & mask) == 0; - else - result = (flags & mask) != 0; + g_object_unref (header); + } - g_object_unref (header); tny_iterator_next (iter); } @@ -1758,7 +1776,7 @@ _msg_download_completed (ModestMainWindow *win) TnyList *selected_headers = NULL; TnyIterator *iter = NULL; TnyHeader *header = NULL; - TnyHeaderFlags flags; + TnyHeaderFlags flags = 0; gboolean result = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW (win), FALSE); @@ -1782,14 +1800,16 @@ _msg_download_completed (ModestMainWindow *win) 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); + if (header) { + 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); + } - g_object_unref (header); tny_iterator_next (iter); } @@ -1842,17 +1862,22 @@ _selected_msg_sent_in_progress (ModestWindow *win) if (!header_list) return FALSE; iter = tny_list_create_iterator (header_list); header = TNY_HEADER (tny_iterator_get_current (iter)); - - /* Get message id */ - id = g_strdup(tny_header_get_message_id (header)); + if (header) { + /* Get message id */ + id = g_strdup(tny_header_get_message_id (header)); + g_object_unref (header); + } } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) { /* Get message header */ header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW(win)); + if (header) { + /* Get message id */ + id = g_strdup(tny_header_get_message_id (header)); - /* Get message id */ - id = g_strdup(tny_header_get_message_id (header)); + g_object_unref (header); + } } /* Check if msg id is being processed inside send queue */ @@ -1860,7 +1885,6 @@ _selected_msg_sent_in_progress (ModestWindow *win) /* Free */ g_free(id); - g_object_unref (header); g_object_unref(header_list); g_object_unref(iter);