Editor window: update menu dimming rules after
[modest] / src / maemo / modest-msg-edit-window.c
index 7af8f5d..e6cc69f 100644 (file)
@@ -500,6 +500,13 @@ void vadj_changed (GtkAdjustment *adj,
        priv->last_vadj_upper = adj->upper;
 }
 
        priv->last_vadj_upper = adj->upper;
 }
 
+static void window_focus (GtkWindow *window,
+                         GtkWidget *widget,
+                         gpointer userdata)
+{
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (userdata), MODEST_DIMMING_RULES_CLIPBOARD);
+}
+
 
 static void
 connect_signals (ModestMsgEditWindow *obj)
 
 static void
 connect_signals (ModestMsgEditWindow *obj)
@@ -535,6 +542,7 @@ connect_signals (ModestMsgEditWindow *obj)
                          G_CALLBACK (msg_body_focus), obj);
        g_signal_connect (G_OBJECT (priv->msg_body), "focus-out-event",
                          G_CALLBACK (msg_body_focus), obj);
                          G_CALLBACK (msg_body_focus), obj);
        g_signal_connect (G_OBJECT (priv->msg_body), "focus-out-event",
                          G_CALLBACK (msg_body_focus), obj);
+       g_signal_connect (G_OBJECT (obj), "set-focus", G_CALLBACK (window_focus), obj);
        g_signal_connect (G_OBJECT (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->to_field))),
                          "changed", G_CALLBACK (recpt_field_changed), obj);
        g_signal_connect (G_OBJECT (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->cc_field))),
        g_signal_connect (G_OBJECT (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->to_field))),
                          "changed", G_CALLBACK (recpt_field_changed), obj);
        g_signal_connect (G_OBJECT (modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR (priv->cc_field))),
@@ -1053,7 +1061,8 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg, gboolean preserve_is_rich)
 
        modest_msg_edit_window_reset_modified (self);
 
 
        modest_msg_edit_window_reset_modified (self);
 
-       modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (self));
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (self));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (self));
        text_buffer_can_undo (priv->text_buffer, FALSE, self);
        text_buffer_can_redo (priv->text_buffer, FALSE, self);
 
        text_buffer_can_undo (priv->text_buffer, FALSE, self);
        text_buffer_can_redo (priv->text_buffer, FALSE, self);
 
@@ -1277,7 +1286,8 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre
        ModestWindowPrivate *parent_priv;
        ModestMsgEditWindowPrivate *priv;
        ModestPair *account_pair = NULL;
        ModestWindowPrivate *parent_priv;
        ModestMsgEditWindowPrivate *priv;
        ModestPair *account_pair = NULL;
-       ModestDimmingRulesGroup *window_rules_group = NULL;
+       ModestDimmingRulesGroup *menu_rules_group = NULL;
+       ModestDimmingRulesGroup *toolbar_rules_group = NULL;
        ModestDimmingRulesGroup *clipboard_rules_group = NULL;
        ModestWindowMgr *mgr = NULL;
 
        ModestDimmingRulesGroup *clipboard_rules_group = NULL;
        ModestWindowMgr *mgr = NULL;
 
@@ -1311,24 +1321,25 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre
                modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->from_field), account_pair->first);
 
        parent_priv->ui_dimming_manager = modest_ui_dimming_manager_new ();
                modest_combo_box_set_active_id (MODEST_COMBO_BOX (priv->from_field), account_pair->first);
 
        parent_priv->ui_dimming_manager = modest_ui_dimming_manager_new ();
-       window_rules_group = modest_dimming_rules_group_new ("ModestWindowDimmingRules", TRUE);
-       clipboard_rules_group = modest_dimming_rules_group_new ("ModestClipboardDimmingRules", FALSE);
+       menu_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_MENU, FALSE);
+       toolbar_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_TOOLBAR, TRUE);
+       clipboard_rules_group = modest_dimming_rules_group_new (MODEST_DIMMING_RULES_CLIPBOARD, FALSE);
        /* Add common dimming rules */
        /* Add common dimming rules */
-       modest_dimming_rules_group_add_rules (window_rules_group, 
-                                             modest_msg_edit_window_toolbar_dimming_entries,
-                                             G_N_ELEMENTS (modest_msg_edit_window_toolbar_dimming_entries),
-                                             MODEST_WINDOW (obj));
-       modest_dimming_rules_group_add_rules (window_rules_group,
+       modest_dimming_rules_group_add_rules (menu_rules_group, 
                                              modest_msg_edit_window_menu_dimming_entries,
                                              G_N_ELEMENTS (modest_msg_edit_window_menu_dimming_entries),
                                              MODEST_WINDOW (obj));
                                              modest_msg_edit_window_menu_dimming_entries,
                                              G_N_ELEMENTS (modest_msg_edit_window_menu_dimming_entries),
                                              MODEST_WINDOW (obj));
-       modest_dimming_rules_group_add_widget_rule (window_rules_group, priv->font_color_button,
+       modest_dimming_rules_group_add_rules (toolbar_rules_group, 
+                                             modest_msg_edit_window_toolbar_dimming_entries,
+                                             G_N_ELEMENTS (modest_msg_edit_window_toolbar_dimming_entries),
+                                             MODEST_WINDOW (obj));
+       modest_dimming_rules_group_add_widget_rule (toolbar_rules_group, priv->font_color_button,
                                                    G_CALLBACK (modest_ui_dimming_rules_on_set_style),
                                                    MODEST_WINDOW (obj));
                                                    G_CALLBACK (modest_ui_dimming_rules_on_set_style),
                                                    MODEST_WINDOW (obj));
-       modest_dimming_rules_group_add_widget_rule (window_rules_group, priv->font_size_toolitem,
+       modest_dimming_rules_group_add_widget_rule (toolbar_rules_group, priv->font_size_toolitem,
                                                    G_CALLBACK (modest_ui_dimming_rules_on_set_style),
                                                    MODEST_WINDOW (obj));
                                                    G_CALLBACK (modest_ui_dimming_rules_on_set_style),
                                                    MODEST_WINDOW (obj));
-       modest_dimming_rules_group_add_widget_rule (window_rules_group, priv->font_face_toolitem,
+       modest_dimming_rules_group_add_widget_rule (toolbar_rules_group, priv->font_face_toolitem,
                                                    G_CALLBACK (modest_ui_dimming_rules_on_set_style),
                                                    MODEST_WINDOW (obj));
        modest_dimming_rules_group_add_rules (clipboard_rules_group, 
                                                    G_CALLBACK (modest_ui_dimming_rules_on_set_style),
                                                    MODEST_WINDOW (obj));
        modest_dimming_rules_group_add_rules (clipboard_rules_group, 
@@ -1336,10 +1347,12 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre
                                              G_N_ELEMENTS (modest_msg_edit_window_clipboard_dimming_entries),
                                              MODEST_WINDOW (obj));
        /* Insert dimming rules group for this window */
                                              G_N_ELEMENTS (modest_msg_edit_window_clipboard_dimming_entries),
                                              MODEST_WINDOW (obj));
        /* Insert dimming rules group for this window */
-       modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, window_rules_group);
+       modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, menu_rules_group);
+       modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, toolbar_rules_group);
        modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, clipboard_rules_group);
         /* Checks the dimming rules */
        modest_ui_dimming_manager_insert_rules_group (parent_priv->ui_dimming_manager, clipboard_rules_group);
         /* Checks the dimming rules */
-       g_object_unref (window_rules_group);
+       g_object_unref (menu_rules_group);
+       g_object_unref (toolbar_rules_group);
        g_object_unref (clipboard_rules_group);
        gtk_widget_show_all (GTK_WIDGET (obj));
 
        g_object_unref (clipboard_rules_group);
        gtk_widget_show_all (GTK_WIDGET (obj));
 
@@ -1347,8 +1360,9 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, gboolean pre
 
        text_buffer_refresh_attributes (WP_TEXT_BUFFER (priv->text_buffer), MODEST_MSG_EDIT_WINDOW (obj));
 
 
        text_buffer_refresh_attributes (WP_TEXT_BUFFER (priv->text_buffer), MODEST_MSG_EDIT_WINDOW (obj));
 
-        modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (obj));
-       modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), "ModestClipboardDimmingRules");
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (obj));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (obj));
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (obj), MODEST_DIMMING_RULES_CLIPBOARD);
        priv->update_caption_visibility = TRUE;
 
        modest_msg_edit_window_reset_modified (MODEST_MSG_EDIT_WINDOW (obj));
        priv->update_caption_visibility = TRUE;
 
        modest_msg_edit_window_reset_modified (MODEST_MSG_EDIT_WINDOW (obj));
@@ -1964,7 +1978,7 @@ modest_msg_edit_window_insert_image (ModestMsgEditWindow *window)
                                (modest_runtime_get_platform_factory ());
                                
                        TnyStream *stream = create_stream_for_uri (uri);
                                (modest_runtime_get_platform_factory ());
                                
                        TnyStream *stream = create_stream_for_uri (uri);
-                       tny_mime_part_construct_from_stream (mime_part, stream, mime_type);
+                       tny_mime_part_construct (mime_part, stream, mime_type, "base64");
                        
                        content_id = g_strdup_printf ("%d", priv->last_cid);
                        tny_mime_part_set_content_id (mime_part, content_id);
                        
                        content_id = g_strdup_printf ("%d", priv->last_cid);
                        tny_mime_part_set_content_id (mime_part, content_id);
@@ -2065,7 +2079,7 @@ modest_msg_edit_window_attach_file_one (
                        (modest_runtime_get_platform_factory ());
                stream = TNY_STREAM (tny_vfs_stream_new (handle));
                
                        (modest_runtime_get_platform_factory ());
                stream = TNY_STREAM (tny_vfs_stream_new (handle));
                
-               tny_mime_part_construct_from_stream (mime_part, stream, mime_type);
+               tny_mime_part_construct (mime_part, stream, mime_type, "base64");
 
                g_object_unref (stream);
                
 
                g_object_unref (stream);
                
@@ -2494,7 +2508,7 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window,
                }
                        break;
                }
                }
                        break;
                }
-               modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+               modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
        }
 }
 
        }
 }
 
@@ -2640,7 +2654,8 @@ modest_msg_edit_window_undo (ModestMsgEditWindow *window)
        
        wp_text_buffer_undo (WP_TEXT_BUFFER (priv->text_buffer));
 
        
        wp_text_buffer_undo (WP_TEXT_BUFFER (priv->text_buffer));
 
-       modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
 
 }
 
 
 }
 
@@ -2654,7 +2669,8 @@ modest_msg_edit_window_redo (ModestMsgEditWindow *window)
        
        wp_text_buffer_redo (WP_TEXT_BUFFER (priv->text_buffer));
 
        
        wp_text_buffer_redo (WP_TEXT_BUFFER (priv->text_buffer));
 
-       modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
 
 }
 
 
 }
 
@@ -2750,7 +2766,9 @@ msg_body_focus (GtkWidget *focus,
                gpointer userdata)
 {
        
                gpointer userdata)
 {
        
-       modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (userdata));
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (userdata));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (userdata));
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (userdata), MODEST_DIMMING_RULES_CLIPBOARD);
        return FALSE;
 }
 
        return FALSE;
 }
 
@@ -2758,13 +2776,15 @@ static void
 recpt_field_changed (GtkTextBuffer *buffer,
                  ModestMsgEditWindow *editor)
 {
 recpt_field_changed (GtkTextBuffer *buffer,
                  ModestMsgEditWindow *editor)
 {
-       modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (editor));
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (editor));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (editor));
 }
 
 static void
 body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor)
 {
 }
 
 static void
 body_changed (GtkTextBuffer *buffer, ModestMsgEditWindow *editor)
 {
-       modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (editor));
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (editor));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (editor));
 }
 
 void
 }
 
 void
@@ -2877,7 +2897,7 @@ modest_msg_edit_window_clipboard_owner_change (GtkClipboard *clipboard,
        }
        priv->clipboard_text = text;
 
        }
        priv->clipboard_text = text;
 
-       modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules");
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD);
 }
 static void 
 subject_field_move_cursor (GtkEntry *entry,
 }
 static void 
 subject_field_move_cursor (GtkEntry *entry,
@@ -2889,7 +2909,7 @@ subject_field_move_cursor (GtkEntry *entry,
        if (!GTK_WIDGET_VISIBLE (window))
                return;
 
        if (!GTK_WIDGET_VISIBLE (window))
                return;
 
-       modest_window_check_dimming_rules_group (MODEST_WINDOW (window), "ModestClipboardDimmingRules");
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (window), MODEST_DIMMING_RULES_CLIPBOARD);
 }
 
 static void 
 }
 
 static void 
@@ -2914,7 +2934,8 @@ subject_field_changed (GtkEditable *editable,
        ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        update_window_title (window);
        gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
        ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        update_window_title (window);
        gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
-       modest_ui_actions_check_window_dimming_rules (MODEST_WINDOW (window));
+       modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (window));
+       modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (window));
 }
 
 static void  
 }
 
 static void