* Fixes NB@63545
authorSergio Villar Senin <svillar@igalia.com>
Fri, 24 Aug 2007 11:50:01 +0000 (11:50 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Fri, 24 Aug 2007 11:50:01 +0000 (11:50 +0000)
pmo-trunk-r3063

src/maemo/modest-account-settings-dialog.c
src/maemo/modest-maemo-global-settings-dialog.c
src/maemo/modest-platform.c
src/maemo/modest-progress-bar-widget.c
src/modest-text-utils.c
src/modest-text-utils.h

index 0148e33..12656cb 100644 (file)
@@ -260,19 +260,30 @@ static GtkWidget* create_caption_new_with_asterisk(ModestAccountSettingsDialog *
 static void
 on_entry_invalid_account_title_character (ModestValidatingEntry *self, const gchar* character, gpointer user_data)
 {
-       gchar *message = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"),
-                                         "\\ / : * ? \" < > | ^");
-       show_error (GTK_WIDGET (self), message);
+       gchar *tmp, *msg;
+                       
+       tmp = g_strndup (account_title_forbidden_chars, ACCOUNT_TITLE_FORBIDDEN_CHARS_LENGTH);
+       msg = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"), tmp);
+
+       show_error (GTK_WIDGET (self), msg);
+
+       g_free (msg);
+       g_free (tmp);
 }
 
 static void
 on_entry_invalid_fullname_character (ModestValidatingEntry *self, const gchar* character, gpointer user_data)
 {
-       gchar *message = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"),
-                                         "< >");
-       show_error (GTK_WIDGET (self), message);
-}
+       gchar *tmp, *msg;
+                       
+       tmp = g_strndup (user_name_forbidden_chars, USER_NAME_FORBIDDEN_CHARS_LENGTH);
+       msg = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"), tmp);
+
+       show_error (GTK_WIDGET (self), msg);
 
+       g_free (msg);
+       g_free (tmp);
+}
 
 
 static void
index f850350..d2a1d1a 100644 (file)
@@ -277,7 +277,6 @@ modest_maemo_global_settings_dialog_new (void)
        return GTK_WIDGET(g_object_new(MODEST_TYPE_MAEMO_GLOBAL_SETTINGS_DIALOG, NULL));
 }
 
-
 /*
  * Creates the updating page
  */
@@ -351,7 +350,7 @@ create_updating_page (ModestMaemoGlobalSettingsDialog *self)
        g_signal_connect (ppriv->size_limit, "range_error", G_CALLBACK (on_range_error), self);
        caption = hildon_caption_new (size_group, 
                                      _("mcen_fi_advsetup_sizelimit"), 
-                                     ppriv->size_limit, 
+                                     ppriv->size_limit,
                                      NULL, 
                                      HILDON_CAPTION_MANDATORY);
        gtk_box_pack_start (GTK_BOX (vbox_limit), caption, FALSE, FALSE, MODEST_MARGIN_HALF);
index ffe1cee..cf31c38 100644 (file)
@@ -579,22 +579,25 @@ entry_insert_text (GtkEditable *editable,
                hildon_banner_show_information  (gtk_widget_get_parent (GTK_WIDGET (data)), NULL,
                                                 _CS("ckdg_ib_maximum_characters_reached"));
        } else {
-               GtkWidget *ok_button;
-               GList *buttons;
-               
-               buttons = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (data)->action_area));
-               ok_button = GTK_WIDGET (buttons->next->data);
-               
-               gtk_widget_set_sensitive (ok_button,
-                                         modest_text_utils_validate_folder_name (chars));      
-               g_list_free (buttons);
-               
-               /* Write the text in the entry */
-               g_signal_handlers_block_by_func (editable,
-                                                (gpointer) entry_insert_text, data);
-               gtk_editable_insert_text (editable, text, length, position);
-               g_signal_handlers_unblock_by_func (editable,
-                                                  (gpointer) entry_insert_text, data);
+               if (modest_text_utils_is_forbidden_char (*text, FOLDER_NAME_FORBIDDEN_CHARS)) {
+                       /* Show an error */
+                       gchar *tmp, *msg;
+                       
+                       tmp = g_strndup (folder_name_forbidden_chars, 
+                                        FOLDER_NAME_FORBIDDEN_CHARS_LENGTH);
+                       msg = g_strdup_printf (_CS("ckdg_ib_illegal_characters_entered"), tmp);
+                       hildon_banner_show_information  (gtk_widget_get_parent (GTK_WIDGET (data)), 
+                                                        NULL, msg);
+                       g_free (msg);
+                       g_free (tmp);
+               } else {        
+                       /* Write the text in the entry if it's valid */
+                       g_signal_handlers_block_by_func (editable,
+                                                        (gpointer) entry_insert_text, data);
+                       gtk_editable_insert_text (editable, text, length, position);
+                       g_signal_handlers_unblock_by_func (editable,
+                                                          (gpointer) entry_insert_text, data);
+               }
        }
        /* Do not allow further processing */
        g_signal_stop_emission_by_name (editable, "insert_text");
index bb1ffd0..fd6708f 100644 (file)
@@ -443,11 +443,11 @@ modest_progress_bar_widget_set_progress (ModestProgressBarWidget *self,
                gtk_progress_bar_set_bar_style (GTK_PROGRESS_BAR (priv->progress_bar), /* Deprecated */
                                                GTK_PROGRESS_CONTINUOUS);
                gtk_progress_bar_pulse (GTK_PROGRESS_BAR (priv->progress_bar));
-               printf ("debug: %s:\n  undetermined progress (%i) changed (%i/%i) : %i\n", __FUNCTION__, 
-                       (int) priv->progress_bar,
-                       done, 
-                       total,
-                       priv->count);
+/*             printf ("debug: %s:\n  undetermined progress (%i) changed (%i/%i) : %i\n", __FUNCTION__,  */
+/*                     (int) priv->progress_bar, */
+/*                     done,  */
+/*                     total, */
+/*                     priv->count); */
        } else {
                gdouble percent = 0;
                if (total != 0) /* Avoid division by zero. */
@@ -456,11 +456,11 @@ modest_progress_bar_widget_set_progress (ModestProgressBarWidget *self,
                gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->progress_bar),
                                               percent);
 
-               printf ("debug: %s:\n  determined progress (%i) changed (%i/%i) : %i\n", __FUNCTION__, 
-                       (int) priv->progress_bar,
-                       done, 
-                       total,
-                       priv->count);
+/*             printf ("debug: %s:\n  determined progress (%i) changed (%i/%i) : %i\n", __FUNCTION__,  */
+/*                     (int) priv->progress_bar, */
+/*                     done,  */
+/*                     total, */
+/*                     priv->count); */
        }
        
        /* Set text */
index 51e340e..0bc5d5a 100644 (file)
@@ -96,6 +96,19 @@ struct _url_match_t {
          NULL, "mailto:"}\
        }
 
+const gchar account_title_forbidden_chars[] = {
+       '\\', '/', ':', '*', '?', '\'', '<', '>', '|', '^'
+};
+const gchar folder_name_forbidden_chars[] = {
+       '<', '>', ':', '\'', '/', '\\', '|', '?', '*', '^', '%', '$'
+};
+const gchar user_name_forbidden_chars[] = {
+       '<', '>'
+};
+const guint ACCOUNT_TITLE_FORBIDDEN_CHARS_LENGTH = G_N_ELEMENTS (account_title_forbidden_chars);
+const guint FOLDER_NAME_FORBIDDEN_CHARS_LENGTH = G_N_ELEMENTS (folder_name_forbidden_chars);
+const guint USER_NAME_FORBIDDEN_CHARS_LENGTH = G_N_ELEMENTS (user_name_forbidden_chars);
+
 /* private */
 static gchar*   cite                    (const time_t sent_date, const gchar *from);
 static void     hyperlinkify_plain_text (GString *txt);
@@ -1083,10 +1096,8 @@ modest_text_utils_validate_folder_name (const gchar *folder_name)
         * with some extras */
        
        guint len;
-       const gchar **cursor;
-       const gchar *forbidden_chars[] = {
-               "<", ">", ":", "\"", "/", "\\", "|", "?", "*", "^", "%", "$", NULL
-       };
+       gint i;
+       const gchar **cursor = NULL;
        const gchar *forbidden_names[] = { /* windows does not like these */
                "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6",
                "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9",
@@ -1106,9 +1117,9 @@ modest_text_utils_validate_folder_name (const gchar *folder_name)
        if (g_ascii_isspace(folder_name[0]) || g_ascii_isspace(folder_name[len - 1]))
                return FALSE; 
 
-       /* cannot contain a forbidden char */
-       for (cursor = forbidden_chars; cursor && *cursor; ++cursor)
-               if (strstr(folder_name, *cursor) != NULL)
+       /* cannot contain a forbidden char */   
+       for (i = 0; i < len; i++)
+               if (modest_text_utils_is_forbidden_char (folder_name[i], FOLDER_NAME_FORBIDDEN_CHARS))
                        return FALSE;
        
        /* cannot contain a forbidden word */
@@ -1379,3 +1390,36 @@ modest_text_utils_text_buffer_get_text (GtkTextBuffer *buffer)
        return g_string_free (result, FALSE);
        
 }
+
+gboolean
+modest_text_utils_is_forbidden_char (const gchar character,
+                                    ModestTextUtilsForbiddenCharType type)
+{
+       gint i, len;
+       const gchar *forbidden_chars = NULL;
+       
+       /* We need to get the length in the switch because the
+          compiler needs to know the size at compile time */
+       switch (type) {
+       case ACCOUNT_TITLE_FORBIDDEN_CHARS:
+               forbidden_chars = account_title_forbidden_chars;
+               len = G_N_ELEMENTS (account_title_forbidden_chars);
+               break;
+       case FOLDER_NAME_FORBIDDEN_CHARS:
+               forbidden_chars = folder_name_forbidden_chars;
+               len = G_N_ELEMENTS (folder_name_forbidden_chars);
+               break;
+       case USER_NAME_FORBIDDEN_NAMES:
+               forbidden_chars = user_name_forbidden_chars;
+               len = G_N_ELEMENTS (user_name_forbidden_chars);
+               break;
+       default:
+               g_return_val_if_reached (TRUE);
+       }
+
+       for (i = 0; i < len ; i++)
+               if (forbidden_chars[i] == character)
+                       return TRUE;
+
+       return FALSE; /* it's valid! */
+}
index 1c7fe41..64a5a4a 100644 (file)
 #define _FM(str) dgettext("hildon-fm",str)
 #define _CS(str) dgettext("hildon-common-strings",str)
 
+/* Forbidden char arrays */
+extern const gchar account_title_forbidden_chars[];
+extern const gchar folder_name_forbidden_chars[];
+extern const gchar user_name_forbidden_chars[];
+extern const guint ACCOUNT_TITLE_FORBIDDEN_CHARS_LENGTH;
+extern const guint FOLDER_NAME_FORBIDDEN_CHARS_LENGTH;
+extern const guint USER_NAME_FORBIDDEN_CHARS_LENGTH;
+
 /**
  * modest_text_utils_derived_subject:
  * @subject: a string which contains the original subject
@@ -368,4 +376,13 @@ gchar *      modest_text_utils_get_color_string (GdkColor *color);
  */
 gchar *      modest_text_utils_text_buffer_get_text (GtkTextBuffer *buffer);
 
+typedef enum {
+       ACCOUNT_TITLE_FORBIDDEN_CHARS,
+       FOLDER_NAME_FORBIDDEN_CHARS,
+       USER_NAME_FORBIDDEN_NAMES,
+} ModestTextUtilsForbiddenCharType;
+
+gboolean     modest_text_utils_is_forbidden_char (const gchar character,
+                                                 ModestTextUtilsForbiddenCharType type);
+
 #endif /* __MODEST_TEXT_UTILS_H__ */