Hide toolbar in editor if we're in plain text mode
[modest] / src / hildon2 / modest-msg-edit-window.c
index 277df5f..1453869 100644 (file)
@@ -92,7 +92,7 @@
 #define IMAGE_MAX_WIDTH 560
 #define DEFAULT_FONT_SCALE 1.5
 #define ATTACHMENT_BUTTON_WIDTH 118
-#define MAX_FROM_VALUE 48
+#define MAX_FROM_VALUE 36
 #define MAX_BODY_LENGTH 4096
 
 static gboolean is_wp_text_buffer_started = FALSE;
@@ -267,6 +267,7 @@ struct _ModestMsgEditWindowPrivate {
        GtkWidget   *attachments_view;
        GtkWidget   *priority_icon;
        GtkWidget   *subject_box;
+       GtkWidget   *send_button;
 
        GtkWidget   *cc_caption;
        GtkWidget   *bcc_caption;
@@ -799,6 +800,8 @@ init_window (ModestMsgEditWindow *obj)
 #if (GTK_MINOR_VERSION >= 10)
        GdkAtom deserialize_type;
 #endif
+       GtkWidget *from_send_hbox;
+       GtkWidget *send_icon;
 
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(obj);
        parent_priv = MODEST_WINDOW_GET_PRIVATE (obj);
@@ -865,7 +868,7 @@ init_window (ModestMsgEditWindow *obj)
                                                          HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
                                                          NULL, g_str_equal);
        modest_selector_picker_set_value_max_chars (MODEST_SELECTOR_PICKER (priv->from_field), MAX_FROM_VALUE);
-       modest_maemo_utils_set_hbutton_layout (title_size_group, value_size_group, 
+       modest_maemo_utils_set_hbutton_layout (title_size_group, NULL, 
                                               _("mail_va_from"), priv->from_field);
        hildon_button_set_alignment (HILDON_BUTTON (priv->from_field), 0.0, 0.5, 1.0, 1.0);
        hildon_button_set_title_alignment (HILDON_BUTTON (priv->from_field), 0.0, 0.5);
@@ -909,13 +912,19 @@ init_window (ModestMsgEditWindow *obj)
                                                                                        priv->attachments_view,
                                                                                        HILDON_SIZE_AUTO_WIDTH |
                                                                                        HILDON_SIZE_AUTO_HEIGHT);
-       /* modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->to_field), value_size_group); */
-       /* modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->cc_field), value_size_group); */
-       /* modest_recpt_editor_set_field_size_group (MODEST_RECPT_EDITOR (priv->bcc_field), value_size_group); */
+       priv->send_button = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT);
+       send_icon = gtk_image_new_from_icon_name (MODEST_TOOLBAR_ICON_MAIL_SEND, HILDON_ICON_SIZE_FINGER);
+       gtk_container_add (GTK_CONTAINER (priv->send_button), send_icon);
+       gtk_widget_set_size_request (GTK_WIDGET (priv->send_button), 118, -1);
+
        g_object_unref (title_size_group);
        g_object_unref (value_size_group);
 
-       gtk_box_pack_start (GTK_BOX (priv->header_box), priv->from_field, FALSE, FALSE, 0);
+       from_send_hbox = gtk_hbox_new (FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (from_send_hbox), priv->from_field, TRUE, TRUE, 0);
+       gtk_box_pack_start (GTK_BOX (from_send_hbox), priv->send_button, FALSE, FALSE, 0);
+
+       gtk_box_pack_start (GTK_BOX (priv->header_box), from_send_hbox, FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (priv->header_box), to_caption, FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (priv->header_box), priv->cc_caption, FALSE, FALSE, 0);
        gtk_box_pack_start (GTK_BOX (priv->header_box), priv->bcc_caption, FALSE, FALSE, 0);
@@ -1634,6 +1643,9 @@ modest_msg_edit_window_new (TnyMsg *msg, const gchar *account_name, const gchar
        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_widget_rule (toolbar_rules_group, priv->send_button,
+                                                   G_CALLBACK (modest_ui_dimming_rules_on_send),
+                                                   MODEST_WINDOW (obj));
        /* Insert dimming rules group for this window */
        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);
@@ -1882,16 +1894,20 @@ modest_msg_edit_window_set_format (ModestMsgEditWindow *self,
                                   ModestMsgEditFormat format)
 {
        ModestMsgEditWindowPrivate *priv;
+       ModestWindowPrivate *parent_priv;
 
        g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
+       parent_priv = MODEST_WINDOW_GET_PRIVATE (self);
 
        switch (format) {
        case MODEST_MSG_EDIT_FORMAT_HTML:
                wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), TRUE);
+               if (parent_priv->toolbar) gtk_widget_show (parent_priv->toolbar);
                break;
        case MODEST_MSG_EDIT_FORMAT_TEXT:
                wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), FALSE);
+               if (parent_priv->toolbar) gtk_widget_hide (parent_priv->toolbar);
                break;
        default:
                g_return_if_reached ();
@@ -2919,17 +2935,27 @@ modest_msg_edit_window_show_toolbar (ModestWindow *self,
                                     gboolean show_toolbar)
 {
        ModestWindowPrivate *parent_priv;
+       ModestMsgEditWindowPrivate *priv;
 
        g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (self));
+       priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
        parent_priv = MODEST_WINDOW_GET_PRIVATE(self);
 
        /* We can not just use the code of
           modest_msg_edit_window_setup_toolbar because it has a
           mixture of both initialization and creation code. */
-       if (show_toolbar)
-               gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
-       else
+       if (show_toolbar) {
+               gint current_format;
+               current_format = wp_text_buffer_is_rich_text (WP_TEXT_BUFFER (priv->text_buffer))
+                       ? MODEST_FILE_FORMAT_FORMATTED_TEXT : MODEST_FILE_FORMAT_PLAIN_TEXT;
+               if (current_format == MODEST_FILE_FORMAT_PLAIN_TEXT) {
+                       gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
+               } else {
+                       gtk_widget_show (GTK_WIDGET (parent_priv->toolbar));
+               }
+       } else {
                gtk_widget_hide (GTK_WIDGET (parent_priv->toolbar));
+       }
 }
 
 void
@@ -2994,6 +3020,12 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window,
        current_format = wp_text_buffer_is_rich_text (WP_TEXT_BUFFER (priv->text_buffer))
                ? MODEST_FILE_FORMAT_FORMATTED_TEXT : MODEST_FILE_FORMAT_PLAIN_TEXT;
 
+       gtk_widget_set_no_show_all (GTK_WIDGET (parent_priv->toolbar), TRUE);
+
+       if (file_format == MODEST_FILE_FORMAT_PLAIN_TEXT) {
+               if (parent_priv->toolbar) gtk_widget_hide (parent_priv->toolbar);
+       }
+
        if (current_format != file_format) {
                switch (file_format) {
                case MODEST_FILE_FORMAT_FORMATTED_TEXT:
@@ -3009,6 +3041,7 @@ modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window,
                        gtk_widget_destroy (dialog);
                        if (response == GTK_RESPONSE_OK) {
                                wp_text_buffer_enable_rich_text (WP_TEXT_BUFFER (priv->text_buffer), FALSE);
+                               if (parent_priv->toolbar) gtk_widget_hide (parent_priv->toolbar);
                        } else {
                                GtkToggleAction *action = GTK_TOGGLE_ACTION (gtk_ui_manager_get_action (parent_priv->ui_manager, "/MenuBar/FormatMenu/FileFormatFormattedTextMenu"));
                                modest_utils_toggle_action_set_active_block_notify (action, TRUE);