* Add the MsgView Window dimming rules file.
authorJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Wed, 30 May 2007 12:29:41 +0000 (12:29 +0000)
committerJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Wed, 30 May 2007 12:29:41 +0000 (12:29 +0000)
* 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
src/maemo/modest-msg-view-window-ui-dimming.h [new file with mode: 0644]
src/maemo/modest-msg-view-window.c
src/modest-mail-operation-queue.c
src/modest-mail-operation.c
src/modest-ui-dimming-rules.c
src/modest-ui-dimming-rules.h

index d15c62f..fa0f079 100644 (file)
@@ -555,17 +555,17 @@ static void on_hildon_program_is_topmost_notify(GObject *self,
 ModestWindow*
 modest_main_window_new (void)
 {
 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;
        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);
 
        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 (file)
index 0000000..f9ec059
--- /dev/null
@@ -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__ */
index 572f321..52deb47 100644 (file)
@@ -38,6 +38,7 @@
 #include <modest-msg-view-window.h>
 #include <modest-attachments-view.h>
 #include <modest-main-window-ui.h>
 #include <modest-msg-view-window.h>
 #include <modest-attachments-view.h>
 #include <modest-main-window-ui.h>
+#include "modest-msg-view-window-ui-dimming.h"
 #include <modest-widget-memory.h>
 #include <modest-runtime.h>
 #include <modest-window-priv.h>
 #include <modest-widget-memory.h>
 #include <modest-runtime.h>
 #include <modest-window-priv.h>
@@ -48,6 +49,7 @@
 #include "modest-defs.h"
 #include "modest-hildon-includes.h"
 #include <gtkhtml/gtkhtml-search.h>
 #include "modest-defs.h"
 #include "modest-hildon-includes.h"
 #include <gtkhtml/gtkhtml-search.h>
+#include "modest-ui-dimming-manager.h"
 #include <gdk/gdkkeysyms.h>
 
 #define DEFAULT_FOLDER "MyDocs/.documents"
 #include <gdk/gdkkeysyms.h>
 
 #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)
 {
 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;
        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);
 
        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_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);
 
        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,
        /* 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));
        /* Add accelerators */
        gtk_window_add_accel_group (GTK_WINDOW (obj), 
                                    gtk_ui_manager_get_accel_group (parent_priv->ui_manager));
index 49a592a..9330c0e 100644 (file)
@@ -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);
                   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 */
        }
 
        /* Free object */
index f23c9cc..d3e1402 100644 (file)
@@ -331,8 +331,8 @@ modest_mail_operation_cancel (ModestMailOperation *self)
 
        priv = MODEST_MAIL_OPERATION_GET_PRIVATE (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;
 
        /* Set new status */
        priv->status = MODEST_MAIL_OPERATION_STATUS_CANCELED;
index b7ddb0d..13bc3f2 100644 (file)
@@ -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 _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)
 
 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];
 
        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;
 }
 
        return dimmed;
 }
 
@@ -159,12 +184,21 @@ modest_ui_dimming_rules_on_details_msg (ModestWindow *win, gpointer user_data)
 {
        gboolean dimmed = FALSE;
        
 {
        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;
 }
 
        return dimmed;
 }
 
@@ -535,3 +569,13 @@ _selected_msg_marked_as (ModestWindow *win,
 
        return result;
 }
 
        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;
+}
index f069165..9e9704f 100644 (file)
@@ -37,6 +37,7 @@
 G_BEGIN_DECLS
 
 /* Menu & toolbar dimming rules */
 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);
 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);