X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-dimming-rules.c;h=7ebd97d4bb09982a6291e10ef5f99b28b26a09b3;hp=3aa5016f29c0e197801dd9021e35c8b9786bf59f;hb=21b666ae007ad3d154fb0a081a43404529f57896;hpb=5b745b2530945a03a3901d3d93d38fcda48fb163 diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 3aa5016..7ebd97d 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -167,6 +167,40 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data) } gboolean +modest_ui_dimming_rules_on_delete (ModestWindow *win, gpointer user_data) +{ + ModestDimmingRule *rule = NULL; + GtkWidget *folder_view = NULL; + GtkWidget *header_view = NULL; + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); + + if (MODEST_IS_MAIN_WINDOW (win)) { + /* Get the folder view */ + folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), + MODEST_WIDGET_TYPE_FOLDER_VIEW); + + /* Get header view */ + header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), + MODEST_WIDGET_TYPE_HEADER_VIEW); + + if (header_view && gtk_widget_is_focus (header_view)) + dimmed = modest_ui_dimming_rules_on_delete_msg (win, rule); + + if (folder_view && gtk_widget_is_focus (folder_view)) + dimmed = modest_ui_dimming_rules_on_delete_folder (win, rule); + } else { + dimmed = modest_ui_dimming_rules_on_delete_folder (win, rule); + } + + return dimmed; +} + + + +gboolean modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data) { ModestDimmingRule *rule = NULL; @@ -581,6 +615,7 @@ modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user GtkWidget *folder_view = NULL; GtkWidget *header_view = NULL; ModestDimmingRule *rule = NULL; + guint n_messages = 0; gboolean dimmed = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), TRUE); @@ -597,6 +632,14 @@ modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user /* Check diming rules for folders and messages transfer */ if (!dimmed) { + dimmed = _already_opened_msg (win, &n_messages); + if (dimmed) { + gchar *message = g_strdup_printf(_("emev_bd_unabletomove_items"), n_messages); + modest_dimming_rule_set_notification (rule, message); + g_free(message); + } + } + if (!dimmed) { if (!gtk_widget_is_focus (folder_view)) dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data); @@ -656,7 +699,7 @@ modest_ui_dimming_rules_on_paste_msgs (ModestWindow *win, gpointer user_data) ModestDimmingRule *rule = NULL; TnyFolderType types[3]; gboolean dimmed = FALSE; - + g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); rule = MODEST_DIMMING_RULE (user_data); @@ -674,7 +717,13 @@ modest_ui_dimming_rules_on_paste_msgs (ModestWindow *win, gpointer user_data) if (!dimmed) { dimmed = _selected_folder_is_any_of_type (win, types, 3); if (dimmed) - modest_dimming_rule_set_notification (rule, _("ckct_ib_unable_to_paste_here")); + modest_dimming_rule_set_notification (rule, dgettext("hildon-common-strings", "ckct_ib_unable_to_paste_here")); + } + if (!dimmed) { + dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win)); + if (dimmed) { + modest_dimming_rule_set_notification (rule, dgettext("hildon-common-strings", "ckct_ib_unable_to_paste_here")); + } } if (!dimmed) { dimmed = _selected_folder_is_same_as_source (win); @@ -955,12 +1004,34 @@ modest_ui_dimming_rules_on_tools_smtp_servers (ModestWindow *win, gpointer user_ gboolean modest_ui_dimming_rules_on_cancel_sending (ModestWindow *win, gpointer user_data) { + ModestDimmingRule *rule = NULL; + TnyFolderType types[1]; + guint n_messages = 0; gboolean dimmed = FALSE; - /* Check dimmed rule */ - if (!dimmed) + g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); + + types[0] = TNY_FOLDER_TYPE_OUTBOX; + + /* Check dimmed rules */ + if (!dimmed) { + dimmed = _already_opened_msg (win, &n_messages); + if (dimmed) + modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_cancel_send")); + } + if (!dimmed) { + dimmed = !_selected_folder_is_any_of_type (win, types, 1); + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + if (!dimmed) { dimmed = !_sending_in_progress (win); - + if (dimmed) + modest_dimming_rule_set_notification (rule, ""); + } + return dimmed; } @@ -999,7 +1070,7 @@ modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_dat gchar *selection = NULL; selection = gtk_clipboard_wait_for_text (clipboard); - dimmed = !((selection != NULL) && (modest_text_utils_validate_recipient (selection))); + dimmed = !((selection != NULL) && (modest_text_utils_validate_recipient (selection, NULL))); } return dimmed; @@ -1294,7 +1365,7 @@ _selected_folder_is_snd_level (ModestMainWindow *win) GtkTreeModel *model = NULL; GtkTreePath *path = NULL; GtkTreeIter iter; - TnyFolderStore *folder = NULL; + TnyFolderStore *folder = NULL; gboolean result = FALSE; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), TRUE); @@ -1322,7 +1393,7 @@ _selected_folder_is_snd_level (ModestMainWindow *win) frees: if (folder != NULL) g_object_unref (folder); - if (path != NULL) + if (path != NULL) gtk_tree_path_free (path); return result; @@ -1367,7 +1438,7 @@ _invalid_clipboard_selected (ModestWindow *win, (MODEST_IS_ATTACHMENTS_VIEW (focused))); if (result) - modest_dimming_rule_set_notification (rule, _("")); + modest_dimming_rule_set_notification (rule, ""); } else if (MODEST_IS_MAIN_WINDOW (win)) { GtkWidget *header_view = NULL; @@ -1460,7 +1531,7 @@ _invalid_attach_selected (ModestWindow *win, static gboolean _purged_attach_selected (ModestWindow *win, gboolean all, ModestDimmingRule *rule) { - GList *attachments, *node; + GList *attachments = NULL, *node; gint purged = 0; gint n_attachments = 0; gboolean result = FALSE; @@ -1546,13 +1617,13 @@ static gboolean _already_opened_msg (ModestWindow *win, guint *n_messages) { - ModestWindow *window = NULL; + //ModestWindow *window = NULL; ModestWindowMgr *mgr = NULL; GtkWidget *header_view = NULL; TnyList *selected_headers = NULL; TnyIterator *iter = NULL; TnyHeader *header = NULL; - gboolean result = TRUE; + gboolean found; g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); @@ -1575,22 +1646,25 @@ _already_opened_msg (ModestWindow *win, /* Check dimmed rule (TODO: check focus on widgets */ mgr = modest_runtime_get_window_mgr (); iter = tny_list_create_iterator (selected_headers); - while (!tny_iterator_is_done (iter) && result) { + found = FALSE; + while (!tny_iterator_is_done (iter)) { header = TNY_HEADER (tny_iterator_get_current (iter)); - window = modest_window_mgr_find_window_by_header (mgr, header); - result = result && (window != NULL); - + found = modest_window_mgr_find_registered_header (mgr,header, NULL); + g_object_unref (header); tny_iterator_next (iter); + + if (found) + break; } - + /* free */ if (selected_headers != NULL) g_object_unref (selected_headers); if (iter != NULL) g_object_unref (iter); - return result; + return found; } static gboolean @@ -1774,27 +1848,12 @@ _selected_msg_sent_in_progress (ModestWindow *win) static gboolean _sending_in_progress (ModestWindow *win) { - ModestTnySendQueue *send_queue = NULL; - ModestTnyAccountStore *acc_store = NULL; - TnyAccount *account = NULL; - const gchar *account_name = NULL; gboolean result = FALSE; - /* Get transport account */ - acc_store = modest_runtime_get_account_store(); - account_name = modest_window_get_active_account (win); - - /* If no account defined, this action must be always dimmed */ - if (account_name == NULL) return FALSE; - account = modest_tny_account_store_get_transport_account_for_open_connection (acc_store, account_name); - if (!TNY_IS_TRANSPORT_ACCOUNT (account)) return FALSE; - - /* Get send queue for current ransport account */ - send_queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT(account)); - g_return_val_if_fail (MODEST_IS_TNY_SEND_QUEUE (send_queue), FALSE); + g_return_val_if_fail (MODEST_IS_MAIN_WINDOW (win), FALSE); - /* Check if send queue is perfimring any send operation */ - result = modest_tny_send_queue_sending_in_progress (send_queue); + /* Check if send operation is in progress */ + result = modest_main_window_send_receive_in_progress (MODEST_MAIN_WINDOW (win)); return result; }