From: Javier Fernandez Garcia-Boente Date: Thu, 28 Jun 2007 15:17:25 +0000 (+0000) Subject: * Fixed some diomming rules. X-Git-Tag: git_migration_finished~3061 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=943ee5c69ef1fc3479c2541532dffc40c46cfc42 * Fixed some diomming rules. * Set flags DELETED just after tny_folder_remove_msg * Add a filter in heder view to hide deleted rows pmo-trunk-r2475 --- diff --git a/src/modest-mail-operation.c b/src/modest-mail-operation.c index 726cf6d..b13d9ef 100644 --- a/src/modest-mail-operation.c +++ b/src/modest-mail-operation.c @@ -1928,8 +1928,10 @@ modest_mail_operation_remove_msg (ModestMailOperation *self, g_object_unref (G_OBJECT (store_account)); } else { tny_folder_remove_msg (folder, header, &(priv->error)); - if (!priv->error) + if (!priv->error) { + tny_header_set_flags (header, TNY_HEADER_FLAG_DELETED); tny_folder_sync(folder, TRUE, &(priv->error)); + } } /* Set status */ diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index 2e88e8f..f0195a2 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -335,6 +335,9 @@ modest_ui_actions_on_delete (GtkAction *action, ModestWindow *win) } } + /* Update toolbar dimming state */ + modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (win)); + /* free */ g_free(message); g_free(desc); diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index d7845c0..b1ebb4f 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -280,6 +280,11 @@ modest_ui_dimming_rules_on_open_msg (ModestWindow *win, gpointer user_data) dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, user_data); } if (!dimmed) { + dimmed = _marked_as_deleted (win); + if (dimmed) + modest_dimming_rule_set_notification (rule, _("mcen_ib_message_already_deleted")); + } + if (!dimmed) { dimmed = _selected_msg_sent_in_progress (win); if (dimmed) modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_open_while_sent")); @@ -410,7 +415,7 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data) if (!dimmed) { dimmed = _marked_as_deleted (win); if (dimmed) - modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_delete")); + modest_dimming_rule_set_notification (rule, _("mcen_ib_message_already_deleted")); } if (!dimmed) { dimmed = _selected_msg_sent_in_progress (win); diff --git a/src/widgets/modest-header-view.c b/src/widgets/modest-header-view.c index 43886b6..d51952e 100644 --- a/src/widgets/modest-header-view.c +++ b/src/widgets/modest-header-view.c @@ -1092,27 +1092,37 @@ on_header_row_activated (GtkTreeView *treeview, GtkTreePath *path, ModestHeaderViewPrivate *priv = NULL; GtkTreeIter iter; GtkTreeModel *model = NULL; - TnyHeader *header; + TnyHeader *header = NULL; + TnyHeaderFlags flags; self = MODEST_HEADER_VIEW (treeview); priv = MODEST_HEADER_VIEW_GET_PRIVATE(self); - model = gtk_tree_view_get_model (treeview); - + model = gtk_tree_view_get_model (treeview); if ((path == NULL) || (!gtk_tree_model_get_iter(model, &iter, path))) - return; - + goto frees; + /* get the first selected item */ gtk_tree_model_get (model, &iter, - TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, - &header, -1); + TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, + TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header, + -1); + + /* Dont open DELETED messages */ + if (flags & TNY_HEADER_FLAG_DELETED) { + modest_platform_information_banner (NULL, NULL, _("mcen_ib_message_already_deleted")); + goto frees; + } + /* Emit signal */ g_signal_emit (G_OBJECT(self), signals[HEADER_ACTIVATED_SIGNAL], 0, header); /* Free */ - g_object_unref (G_OBJECT (header)); + frees: + if (header != NULL) + g_object_unref (G_OBJECT (header)); } @@ -1546,37 +1556,54 @@ filter_row (GtkTreeModel *model, gpointer user_data) { ModestHeaderViewPrivate *priv = NULL; + TnyHeaderFlags flags; TnyHeader *header = NULL; guint i; gchar *id = NULL; + gboolean visible = TRUE; gboolean found = FALSE; g_return_val_if_fail (MODEST_IS_HEADER_VIEW (user_data), FALSE); priv = MODEST_HEADER_VIEW_GET_PRIVATE (user_data); - /* If no data on clipboard, return always TRUE */ - if (modest_email_clipboard_cleared(priv->clipboard)) return TRUE; - /* Get header from model */ gtk_tree_model_get (model, iter, + TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header, -1); + /* Hide mark as deleted heders */ + if (flags & TNY_HEADER_FLAG_DELETED) { + visible = FALSE; + goto frees; + } + + /* If no data on clipboard, return always TRUE */ + if (modest_email_clipboard_cleared(priv->clipboard)) { + visible = TRUE; + goto frees; + } + /* Get message id from header (ensure is a valid id) */ if (!header) return FALSE; id = g_strdup(tny_header_get_message_id (header)); /* Check hiding */ - if (priv->hidding_ids != NULL) + if (priv->hidding_ids != NULL) { for (i=0; i < priv->n_selected && !found; i++) if (priv->hidding_ids[i] != NULL && id != NULL) found = (!strcmp (priv->hidding_ids[i], id)); + visible = !found; + } + /* Free */ - g_object_unref (header); + frees: + if (header) + g_object_unref (header); g_free(id); - return !found; + return visible; } static void