X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-dimming-rules.c;h=da4a6712bbd0b707143ec868bc8d0d9869cd68cd;hp=0d1b12608c644b0e7a4bc51f0cf26973c9ded0f3;hb=dbbefa965fe138f1ec092c128c5a49259573abf4;hpb=e01e0d7d2200ea1da0a969e7e138e99e812f1ece diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 0d1b126..da4a671 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -752,6 +752,11 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data) if (dimmed) modest_dimming_rule_set_notification (rule, _("mcen_ib_message_already_deleted")); } + if (!dimmed) { + dimmed = state->sent_in_progress; + if (dimmed) + modest_dimming_rule_set_notification (rule, _CS("ckct_ib_unable_to_delete")); + } /* The delete button should be dimmed when viewing an attachment, * but should be enabled when viewing a message from the list, @@ -835,6 +840,13 @@ modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data) if (dimmed) modest_dimming_rule_set_notification (rule, ""); } + if (!dimmed) { + 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, ""); + } } return dimmed; @@ -997,6 +1009,11 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user } if (!dimmed) { + dimmed = _selected_msg_sent_in_progress (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, _("emev_nc_unabletomove_item")); + } + if (!dimmed) { if (MODEST_IS_MSG_VIEW_WINDOW (win)) { /* The move_to button should be dimmed when viewing an attachment, * but should be enabled when viewing a message from the list, @@ -1008,7 +1025,7 @@ modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user } if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_move_mail_attachment")); + modest_dimming_rule_set_notification (rule, _("emev_nc_unabletomove_item")); } return dimmed; @@ -1081,12 +1098,12 @@ modest_ui_dimming_rules_on_paste (ModestWindow *win, gpointer user_data) if (!dimmed) { dimmed = _selected_folder_is_same_as_source (win); if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_copy_samefolder")); + modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_copy_target_error")); } if (!dimmed) { dimmed = _selected_folder_has_subfolder_with_same_name (win); if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_copy_samefolder")); + modest_dimming_rule_set_notification (rule, _("mail_in_ui_folder_copy_target_error")); } return dimmed; @@ -1723,21 +1740,64 @@ modest_ui_dimming_rules_on_send_receive (ModestWindow *win, gpointer user_data) return dimmed; } +gboolean +modest_ui_dimming_rules_on_send_receive_all (ModestWindow *win, gpointer user_data) +{ + ModestDimmingRule *rule = NULL; + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); + rule = MODEST_DIMMING_RULE (user_data); + + /* Check dimmed rule */ + if (!dimmed) { + GSList *account_names = modest_account_mgr_account_names (modest_runtime_get_account_mgr (), TRUE); + if (g_slist_length (account_names) <= 1) + dimmed = TRUE; + if (dimmed) + modest_dimming_rule_set_notification (rule, _("mcen_nc_no_email_acnts_defined")); + + modest_account_mgr_free_account_names (account_names); + } + + return dimmed; +} + gboolean modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_data) { ModestDimmingRule *rule = NULL; gboolean dimmed = FALSE; + GtkWidget *focused = NULL; g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE); rule = MODEST_DIMMING_RULE (user_data); + focused = gtk_window_get_focus (GTK_WINDOW (win)); + + dimmed = !focused; - /* Check dimmed rule */ if (!dimmed) { - GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); gchar *selection = NULL; - selection = gtk_clipboard_wait_for_text (clipboard); - + if (GTK_IS_TEXT_VIEW (focused)) { + GtkTextIter start, end; + GtkTextBuffer *buffer = NULL; + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused)); + if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end)) { + selection = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); + } + } else if (GTK_IS_LABEL (focused)) { + gint start, end; + if (gtk_label_get_selection_bounds (GTK_LABEL (focused), &start, &end)) { + const gchar *start_offset; + start_offset = gtk_label_get_text (GTK_LABEL (focused)); + start_offset = g_utf8_offset_to_pointer (start_offset, start); + selection = g_new0 (gchar, end - start + 1); + g_utf8_strncpy (selection, start_offset, end - start); + } + } else { + GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); + selection = gtk_clipboard_wait_for_text (clipboard); + } dimmed = !((selection != NULL) && (modest_text_utils_validate_recipient (selection, NULL))); } @@ -2222,22 +2282,32 @@ _invalid_clipboard_selected (ModestWindow *win, } result = !has_selection; } else if (MODEST_IS_MSG_VIEW_WINDOW (win)) { - GtkClipboard *clipboard = NULL; - gchar *selection = NULL; - - /* Get clipboard selection*/ - clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); - selection = gtk_clipboard_wait_for_text (clipboard); - - /* Check dimming */ - result = ((selection == NULL) || - (MODEST_IS_ATTACHMENTS_VIEW (focused))); + if (focused) { + if (GTK_IS_LABEL (focused) && + !gtk_label_get_selection_bounds (GTK_LABEL (focused), NULL, NULL)) { + result = TRUE; + } else if (GTK_IS_TEXT_VIEW (focused)) { + GtkTextBuffer *buffer; + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (focused)); + result = !gtk_text_buffer_get_has_selection (buffer); + } else if (!MODEST_IS_ATTACHMENTS_VIEW (focused)) { + GtkClipboard *clipboard = NULL; + gchar *selection = NULL; + + clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); + /* Get clipboard selection*/ + selection = gtk_clipboard_wait_for_text (clipboard); + /* Check dimming */ + result = (selection == NULL); + g_free (selection); + } + } else { + result = TRUE; + } if (result) modest_dimming_rule_set_notification (rule, ""); - if (selection != NULL) - g_free(selection); } else if (MODEST_IS_MAIN_WINDOW (win)) { /* Check dimming */ @@ -2365,8 +2435,10 @@ _purged_attach_selected (ModestWindow *win, gboolean all, ModestDimmingRule *rul else result = (purged > 0); + /* This string no longer exists, refer to NB#75415 for more info if (result && (rule != NULL)) modest_dimming_rule_set_notification (rule, _("mail_ib_attachment_already_purged")); + */ return result; }