X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-dimming-rules.c;h=d0c0124a9227d1c547c46b95cb7fc392df61e517;hp=59d56175d963410c550d98180832c208d0793256;hb=73babb855f21f4a4850afb9722f3e77bac313cf2;hpb=b3e33b42465084b4e1cf2dbf90302bd1b43d05ad diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index 59d5617..d0c0124 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -1004,7 +1004,7 @@ 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, _("mcen_ib_unable_to_move_mail_attachment")); + modest_dimming_rule_set_notification (rule, _("emev_nc_unabletomove_item")); } if (!dimmed) { if (MODEST_IS_MSG_VIEW_WINDOW (win)) { @@ -1018,7 +1018,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; @@ -1091,12 +1091,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; @@ -1733,21 +1733,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))); } @@ -2232,22 +2275,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 */