From f9c6f2853bd000cf4554a267235d45e144464ed8 Mon Sep 17 00:00:00 2001 From: Javier Fernandez Garcia-Boente Date: Wed, 30 May 2007 12:29:41 +0000 Subject: [PATCH] * Add the MsgView Window dimming rules file. * Fix bug on mail-operation, cancel operation was commented. * Fix bug on mail_operation_queue_remove, it did not take into account mail op status may be CANCELED. * Implemented some main and msg view windows dimming rules. pmo-trunk-r1996 --- src/maemo/modest-main-window.c | 20 +++---- src/maemo/modest-msg-view-window-ui-dimming.h | 69 ++++++++++++++++++++++ src/maemo/modest-msg-view-window.c | 31 ++++++++-- src/modest-mail-operation-queue.c | 14 +++-- src/modest-mail-operation.c | 4 +- src/modest-ui-dimming-rules.c | 78 +++++++++++++++++++------ src/modest-ui-dimming-rules.h | 1 + 7 files changed, 177 insertions(+), 40 deletions(-) create mode 100644 src/maemo/modest-msg-view-window-ui-dimming.h diff --git a/src/maemo/modest-main-window.c b/src/maemo/modest-main-window.c index d15c62f..fa0f079 100644 --- a/src/maemo/modest-main-window.c +++ b/src/maemo/modest-main-window.c @@ -555,17 +555,17 @@ static void on_hildon_program_is_topmost_notify(GObject *self, ModestWindow* modest_main_window_new (void) { - ModestMainWindow *self; - ModestMainWindowPrivate *priv; - ModestWindowPrivate *parent_priv; - GtkWidget *folder_win; - ModestDimmingRulesGroup *rules_group; - GtkActionGroup *action_group; + ModestMainWindow *self = NULL; + ModestMainWindowPrivate *priv = NULL; + ModestWindowPrivate *parent_priv = NULL; + GtkWidget *folder_win = NULL; + ModestDimmingRulesGroup *rules_group = NULL; + GtkActionGroup *action_group = NULL; GError *error = NULL; - TnyFolderStoreQuery *query; - GdkPixbuf *window_icon; - ModestConf *conf; - GtkAction *action; + TnyFolderStoreQuery *query = NULL; + GdkPixbuf *window_icon = NULL; + ModestConf *conf = NULL; + GtkAction *action = NULL; self = MODEST_MAIN_WINDOW(g_object_new(MODEST_TYPE_MAIN_WINDOW, NULL)); priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self); diff --git a/src/maemo/modest-msg-view-window-ui-dimming.h b/src/maemo/modest-msg-view-window-ui-dimming.h new file mode 100644 index 0000000..f9ec059 --- /dev/null +++ b/src/maemo/modest-msg-view-window-ui-dimming.h @@ -0,0 +1,69 @@ +#ifndef __MODEST_MSG_VIEW_WINDOW_UI_DIMMING_PRIV_H__ +#define __MODEST_MSG_VIEW_WINDOW_UI_DIMMING_PRIV_H__ + +#include "modest-dimming-rules-group.h" +#include "modest-ui-dimming-rules.h" + +G_BEGIN_DECLS + + +/* Dimming rules entries */ +static const ModestDimmingEntry modest_msg_view_dimming_entries [] = { + + /* Message Menu */ + { "/MenuBar/MessageMenu/MessageNewMenu", G_CALLBACK(modest_ui_dimming_rules_on_new_msg) }, + { "/MenuBar/MessageMenu/MessageReplyMenu", G_CALLBACK(modest_ui_dimming_rules_on_reply_msg) }, + { "/MenuBar/MessageMenu/MessageReplyAllMenu", G_CALLBACK(modest_ui_dimming_rules_on_reply_msg) }, + { "/MenuBar/MessageMenu/MessageForwardMenu", G_CALLBACK(modest_ui_dimming_rules_on_reply_msg) }, + { "/MenuBar/MessageMenu/MessageDeleteMenu", NULL }, + { "/MenuBar/MessageMenu/MessageDetailsMenu", G_CALLBACK(modest_ui_dimming_rules_on_details_msg) }, + + /* Edit Menu */ + { "/MenuBar/EditMenu", NULL }, + { "/MenuBar/EditMenu/EditCutMenu", G_CALLBACK(modest_ui_dimming_rules_always_dimmed) }, + { "/MenuBar/EditMenu/EditCopyMenu", NULL }, + { "/MenuBar/EditMenu/EditPasteMenu", G_CALLBACK(modest_ui_dimming_rules_always_dimmed) }, + { "/MenuBar/EditMenu/EditSelectAllMenu", NULL }, + { "/MenuBar/EditMenu/EditMoveToMenu", G_CALLBACK(modest_ui_dimming_rules_on_move_to) }, + + /* View Menu */ + { "/MenuBar/ViewMenu", NULL }, + { "/MenuBar/ViewMenu/ZoomMenu", NULL }, + { "/MenuBar/ViewMenu/ViewToggleFullscreenMenu", NULL }, + { "/MenuBar/ViewMenu/ViewPreviousMessageMenu", NULL }, + { "/MenuBar/ViewMenu/ViewNextMessageMenu", NULL }, + + /* Attachments Menu */ + { "/MenuBar/AttachmentsMenu", NULL }, + { "/MenuBar/AttachmentsMenu/ViewAttachmentMenu", NULL }, + { "/MenuBar/AttachmentsMenu/SaveAttachmentMenu", NULL }, + { "/MenuBar/AttachmentsMenu/RemoveAttachmentMenu", NULL }, + + /* Tools Menu */ + { "/MenuBar/ToolsMenu", NULL }, + { "/MenuBar/ToolsMenu/ToolsContactsMenu", NULL }, + + /* Close Menu */ + { "/MenuBar/CloseMenu", NULL }, + { "/MenuBar/ToolsMenu/CloseWindowMenu", NULL }, + { "/MenuBar/ToolsMenu/CloseAllWindowsMenu", NULL }, + + /* Toolbar */ + { "/Toolbar/ToolbarMessageNew", NULL }, + { "/Toolbar/ToolbarMessageReply", NULL }, + { "/Toolbar/ToolbarDeleteMessage", NULL }, + { "/Toolbar/ToolbarMoveTo", NULL }, + { "/Toolbar/ToolbarFindInMessage", NULL }, + { "/Toolbar/ToolbarMessageBack", NULL }, + { "/Toolbar/ToolbarMessageNext", NULL }, + { "/Toolbar/ToolbarCancel", NULL }, + + /* Contextual Menus (Toolbar) */ + { "/ToolbarReplyCSM/MessageForwardMenu", NULL }, + { "/ToolbarReplyCSM/MessageReplyAllMenu", NULL }, + { "/ToolbarReplyCSM/MessageReplyMenu", NULL }, + +}; + +G_END_DECLS +#endif /* __MODEST_MSG_VIEW_WINDOW_UI_PRIV_H__ */ diff --git a/src/maemo/modest-msg-view-window.c b/src/maemo/modest-msg-view-window.c index 572f321..52deb47 100644 --- a/src/maemo/modest-msg-view-window.c +++ b/src/maemo/modest-msg-view-window.c @@ -38,6 +38,7 @@ #include #include #include +#include "modest-msg-view-window-ui-dimming.h" #include #include #include @@ -48,6 +49,7 @@ #include "modest-defs.h" #include "modest-hildon-includes.h" #include +#include "modest-ui-dimming-manager.h" #include #define DEFAULT_FOLDER "MyDocs/.documents" @@ -480,24 +482,31 @@ modest_msg_view_window_new_with_header_model (TnyMsg *msg, const gchar *account_ ModestWindow * modest_msg_view_window_new (TnyMsg *msg, const gchar *account_name) { - GObject *obj; - ModestMsgViewWindowPrivate *priv; - ModestWindowPrivate *parent_priv; - GtkActionGroup *action_group; + ModestMsgViewWindow *self = NULL; + GObject *obj = NULL; + ModestMsgViewWindowPrivate *priv = NULL; + ModestWindowPrivate *parent_priv = NULL; + ModestDimmingRulesGroup *rules_group = NULL; + GtkActionGroup *action_group = NULL; GError *error = NULL; GdkPixbuf *window_icon = NULL; - GtkAction *action; + GtkAction *action = NULL; g_return_val_if_fail (msg, NULL); obj = g_object_new(MODEST_TYPE_MSG_VIEW_WINDOW, NULL); priv = MODEST_MSG_VIEW_WINDOW_GET_PRIVATE(obj); parent_priv = MODEST_WINDOW_GET_PRIVATE(obj); - + self = MODEST_MSG_VIEW_WINDOW (obj); + parent_priv->ui_manager = gtk_ui_manager_new(); + parent_priv->ui_dimming_manager = modest_ui_dimming_manager_new(); + action_group = gtk_action_group_new ("ModestMsgViewWindowActions"); gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE); + rules_group = modest_dimming_rules_group_new ("ModestCommonDimmingRules"); + /* Add common actions */ gtk_action_group_add_actions (action_group, modest_action_entries, @@ -531,6 +540,16 @@ modest_msg_view_window_new (TnyMsg *msg, const gchar *account_name) } /* ****** */ + /* Add common dimming rules */ + modest_dimming_rules_group_add_rules (rules_group, + modest_msg_view_dimming_entries, + G_N_ELEMENTS (modest_msg_view_dimming_entries), + self); + + /* Insert dimming rules group for this window */ + modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, rules_group); + g_object_unref (rules_group); + /* Add accelerators */ gtk_window_add_accel_group (GTK_WINDOW (obj), gtk_ui_manager_get_accel_group (parent_priv->ui_manager)); diff --git a/src/modest-mail-operation-queue.c b/src/modest-mail-operation-queue.c index 49a592a..9330c0e 100644 --- a/src/modest-mail-operation-queue.c +++ b/src/modest-mail-operation-queue.c @@ -211,11 +211,15 @@ modest_mail_operation_queue_remove (ModestMailOperationQueue *self, status and error handling */ if (modest_mail_operation_get_error (mail_op) != NULL) modest_mail_operation_execute_error_handler (mail_op); - else - g_warning ("%s: possible error in a mail operation "\ - "implementation. The status is not succesful"\ - "but the mail operation does not have any "\ - "error set\n", __FUNCTION__); + else { + if (status == MODEST_MAIL_OPERATION_STATUS_CANCELED) + g_warning ("%s: operation canceled \n", __FUNCTION__); + else + g_warning ("%s: possible error in a mail operation " \ + "implementation. The status is not succesful" \ + "but the mail operation does not have any " \ + "error set\n", __FUNCTION__); + } } /* Free object */ diff --git a/src/modest-mail-operation.c b/src/modest-mail-operation.c index f23c9cc..d3e1402 100644 --- a/src/modest-mail-operation.c +++ b/src/modest-mail-operation.c @@ -331,8 +331,8 @@ modest_mail_operation_cancel (ModestMailOperation *self) priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self); - /* TODO: Tinymail does not support cancel operation */ -/* tny_account_cancel (); */ + /* cancel current operation in account */ + tny_account_cancel (priv->account); /* Set new status */ priv->status = MODEST_MAIL_OPERATION_STATUS_CANCELED; diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index b7ddb0d..13bc3f2 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -43,6 +43,22 @@ static gboolean _selected_msg_marked_as (ModestWindow *win, TnyHeaderFlags mask, static gboolean _selected_folder_not_writeable (ModestMainWindow *win); static gboolean _selected_folder_is_any_of_type (ModestMainWindow *win, TnyFolderType types[], guint ntypes); static gboolean _selected_folder_is_root (ModestMainWindow *win); +static gboolean _msg_download_in_progress (ModestMsgViewWindow *win); + + +gboolean +modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data) +{ + gboolean dimmed = FALSE; + + g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE); + + /* Check dimmed rule */ + if (!dimmed) + dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win)); + + return dimmed; +} gboolean modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data) @@ -94,19 +110,28 @@ modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data) gboolean dimmed = FALSE; TnyFolderType types[3]; - g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); - - types[0] = TNY_FOLDER_TYPE_DRAFTS; - types[1] = TNY_FOLDER_TYPE_OUTBOX; - types[2] = TNY_FOLDER_TYPE_ROOT; + /* main window dimming rules */ + if (MODEST_IS_MAIN_WINDOW(win)) { + + types[0] = TNY_FOLDER_TYPE_DRAFTS; + types[1] = TNY_FOLDER_TYPE_OUTBOX; + types[2] = TNY_FOLDER_TYPE_ROOT; + + /* Check dimmed rule */ + if (!dimmed) + dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3); + + if (!dimmed) + dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE); - /* Check dimmed rule */ - if (!dimmed) - dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3); + /* msg view window dimming rules */ + } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) { + + /* Check dimmed rule */ + if (!dimmed) + dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win)); + } - if (!dimmed) - dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE); - return dimmed; } @@ -159,12 +184,21 @@ modest_ui_dimming_rules_on_details_msg (ModestWindow *win, gpointer user_data) { gboolean dimmed = FALSE; - g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE); - - /* Check dimmed rule */ - if (!dimmed) - dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE); - + /* main window dimming rules */ + if (MODEST_IS_MAIN_WINDOW(win)) { + + /* Check dimmed rule */ + if (!dimmed) + dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE); + + /* msg view window dimming rules */ + } else { + + /* Check dimmed rule */ + if (!dimmed) + dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win)); + } + return dimmed; } @@ -535,3 +569,13 @@ _selected_msg_marked_as (ModestWindow *win, return result; } + +static gboolean +_msg_download_in_progress (ModestMsgViewWindow *win) +{ + gboolean result = FALSE; + + g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE); + + return result; +} diff --git a/src/modest-ui-dimming-rules.h b/src/modest-ui-dimming-rules.h index f069165..9e9704f 100644 --- a/src/modest-ui-dimming-rules.h +++ b/src/modest-ui-dimming-rules.h @@ -37,6 +37,7 @@ G_BEGIN_DECLS /* Menu & toolbar dimming rules */ +gboolean modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data); gboolean modest_ui_dimming_rules_on_open_msg (ModestWindow *win, gpointer user_data); -- 1.7.9.5