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
return GTK_WIDGET(g_object_new(MODEST_TYPE_MAEMO_GLOBAL_SETTINGS_DIALOG, NULL));
}
-
/*
* Creates the updating page
*/
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);
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");
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. */
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 */
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);
* 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",
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 */
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! */
+}
#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
*/
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__ */