* src/maemo/modest-signature-editor-dialog.c:
[modest] / src / maemo / modest-signature-editor-dialog.c
index c90e340..c0a2614 100644 (file)
@@ -1,21 +1,49 @@
-/* connection-specific-smtp-window.c */
+/* Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ *   contributors may be used to endorse or promote products derived from
+ *   this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
 
 #include "modest-signature-editor-dialog.h"
-#include "maemo/modest-maemo-ui-constants.h"
-#include <hildon-widgets/hildon-caption.h>
-#include <hildon-widgets/hildon-number-editor.h>
+#include "widgets/modest-ui-constants.h"
+#include "modest-hildon-includes.h"
 #include "widgets/modest-serversecurity-combo-box.h"
 #include "widgets/modest-secureauth-combo-box.h"
 #include "widgets/modest-validating-entry.h"
+#include "modest-runtime.h"
 #include <modest-account-mgr-helpers.h>
 #include <gtk/gtkcheckbutton.h>
 #include <gtk/gtkhbox.h>
 #include <gtk/gtkvbox.h>
 #include <gtk/gtktextview.h>
 #include <gtk/gtklabel.h>
+#include <gtk/gtkscrolledwindow.h>
 #include <gtk/gtkstock.h>
-
 #include <glib/gi18n.h>
+#include <modest-maemo-utils.h>
 
 G_DEFINE_TYPE (ModestSignatureEditorDialog, modest_signature_editor_dialog, GTK_TYPE_DIALOG);
 
@@ -28,6 +56,7 @@ struct _ModestSignatureEditorDialogPrivate
 {
        GtkWidget *checkbox_use;
        GtkWidget *label;
+       GtkWidget *scrolledwindow;
        GtkWidget *textview;
 };
 
@@ -78,6 +107,25 @@ modest_signature_editor_dialog_class_init (ModestSignatureEditorDialogClass *kla
 }
 
 static void
+enable_widgets (ModestSignatureEditorDialog *self)
+{
+       ModestSignatureEditorDialogPrivate *priv = 
+               SIGNATURE_EDITOR_DIALOG_GET_PRIVATE (self);
+               
+       const gboolean enable = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->checkbox_use));
+       gtk_widget_set_sensitive (priv->label, enable);
+       gtk_widget_set_sensitive (priv->scrolledwindow, enable);
+       gtk_text_view_set_editable (GTK_TEXT_VIEW (priv->textview), enable);
+}
+
+static void
+on_toggle_button_changed (GtkToggleButton *togglebutton, gpointer user_data)
+{
+       ModestSignatureEditorDialog *self = MODEST_SIGNATURE_EDITOR_DIALOG (user_data);
+       enable_widgets (self);
+}
+
+static void
 modest_signature_editor_dialog_init (ModestSignatureEditorDialog *self)
 {
        ModestSignatureEditorDialogPrivate *priv = 
@@ -86,26 +134,49 @@ modest_signature_editor_dialog_init (ModestSignatureEditorDialog *self)
        gtk_window_set_title (GTK_WINDOW (self), _("mcen_ti_email_signatures_edit_title"));
                
        GtkWidget *box = GTK_DIALOG(self)->vbox; /* gtk_vbox_new (FALSE, MODEST_MARGIN_HALF); */
+       gtk_container_set_border_width (GTK_CONTAINER (box), MODEST_MARGIN_HALF);
        
        priv->checkbox_use = gtk_check_button_new_with_label (
                _("mcen_fi_email_signatures_use_signature"));
        gtk_box_pack_start (GTK_BOX (box), priv->checkbox_use, FALSE, FALSE, MODEST_MARGIN_HALF);
        gtk_widget_show (priv->checkbox_use);
        
+       g_signal_connect (G_OBJECT (priv->checkbox_use), "toggled",
+               G_CALLBACK (on_toggle_button_changed), self);
+               
+       
        priv->label = gtk_label_new (""); /* Set in modest_signature_editor_dialog_set_settings(). */
        gtk_box_pack_start (GTK_BOX (box), priv->label, FALSE, FALSE, MODEST_MARGIN_HALF);
        gtk_widget_show (priv->label);
        
+       priv->scrolledwindow = gtk_scrolled_window_new (NULL, NULL);
+       gtk_container_set_border_width (GTK_CONTAINER (priv->scrolledwindow), MODEST_MARGIN_DEFAULT);
+       gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scrolledwindow), 
+               GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (priv->scrolledwindow), GTK_SHADOW_IN);
+       gtk_box_pack_start (GTK_BOX (box), priv->scrolledwindow, FALSE, FALSE, MODEST_MARGIN_HALF);
+       gtk_widget_show (priv->scrolledwindow);
+               
        priv->textview = gtk_text_view_new ();
-       gtk_box_pack_start (GTK_BOX (box), priv->textview, FALSE, FALSE, MODEST_MARGIN_HALF);
+       gtk_container_add (GTK_CONTAINER (priv->scrolledwindow), priv->textview);
        gtk_widget_show (priv->textview);
+       GtkTextBuffer *buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->textview));
+       gtk_text_buffer_set_text (buffer, "--\n", -1); /* Default, as per the UI spec. */
        
        /* Add the buttons: */
-       gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_OK, GTK_RESPONSE_OK);
-       gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
-       
+       gtk_dialog_add_button (GTK_DIALOG (self), _("mcen_bd_dialog_ok"), GTK_RESPONSE_OK);
+       gtk_dialog_add_button (GTK_DIALOG (self), _("mcen_bd_dialog_cancel"), GTK_RESPONSE_CANCEL);
        
        gtk_widget_show (box);
+       gtk_widget_set_size_request (GTK_WIDGET (self), 480, -1);
+       
+       /* When this window is shown, hibernation should not be possible, 
+        * because there is no sensible way to save the state: */
+       modest_window_mgr_prevent_hibernation_while_window_is_shown (
+               modest_runtime_get_window_mgr (), GTK_WINDOW (self)); 
+       
+       hildon_help_dialog_help_enable (GTK_DIALOG(self), "applications_email_signatureeditor",
+                                       modest_maemo_utils_get_osso_context());
 }
 
 ModestSignatureEditorDialog*
@@ -126,6 +197,7 @@ modest_signature_editor_dialog_set_settings (
        gchar* label_text = g_strdup_printf (_("mcen_ia_email_signatures_edit_dlg_label"), 
                account_title);
        gtk_label_set_text (GTK_LABEL (priv->label), label_text);
+       gtk_label_set_ellipsize (GTK_LABEL (priv->label),  PANGO_ELLIPSIZE_NONE);
        g_free (label_text);
        
        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->checkbox_use), use_signature);
@@ -134,7 +206,9 @@ modest_signature_editor_dialog_set_settings (
        if (signature)
                gtk_text_buffer_set_text (buffer, signature, -1);
        else
-               gtk_text_buffer_set_text (buffer, "", -1);
+               gtk_text_buffer_set_text (buffer, "--\n", -1); /* Default, as per the UI spec. */
+               
+       enable_widgets (window);
 }
 
 /*