*/
#include "modest-validating-entry.h"
+#include <modest-ui-constants.h>
#include <gtk/gtksignal.h> /* For the gtk_signal_stop_emit_by_name() convenience function. */
#include <string.h> /* For strlen(). */
#include <config.h>
#endif
+
+#ifdef MODEST_TOOLKIT_HILDON2
+G_DEFINE_TYPE (ModestValidatingEntry, modest_validating_entry, HILDON_TYPE_ENTRY);
+#else
G_DEFINE_TYPE (ModestValidatingEntry, modest_validating_entry, GTK_TYPE_ENTRY);
+#endif
#define VALIDATING_ENTRY_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), MODEST_TYPE_VALIDATING_ENTRY, ModestValidatingEntryPrivate))
gboolean prevent_whitespace;
+ EasySetupValidatingEntryFunc func;
+ gpointer func_user_data;
+
EasySetupValidatingEntryMaxFunc max_func;
gpointer max_func_user_data;
};
GList *found = g_list_find_custom(priv->list_prevent, &one_char, &on_list_compare);
if(found) {
allow = FALSE;
+ if (priv->func)
+ {
+ priv->func(self, iter, priv->func_user_data);
+ }
break;
}
}
gunichar one_char = g_utf8_get_char (iter);
if (g_unichar_isspace (one_char)) {
allow = FALSE;
+ if (priv->func)
+ {
+ priv->func(self, NULL, priv->func_user_data);
+ }
break;
}
}
ModestValidatingEntry*
modest_validating_entry_new (void)
{
- return g_object_new (MODEST_TYPE_VALIDATING_ENTRY, NULL);
+ ModestValidatingEntry *entry;
+
+ entry = g_object_new (MODEST_TYPE_VALIDATING_ENTRY, NULL);
+
+#ifdef MODEST_TOOLKIT_HILDON2
+ hildon_gtk_widget_set_theme_size (GTK_WIDGET (entry), MODEST_EDITABLE_SIZE);
+#endif
+
+ return entry;
}
/** Specify characters that may not be entered into this GtkEntry.
priv->max_func_user_data = user_data;
}
+/** Set a callback to be called when a character was prevented so that a
+ * note can be shown by the application to inform the user. For whitespaces,
+ * character will be NULL
+ */
+void modest_validating_entry_set_func (ModestValidatingEntry *self, EasySetupValidatingEntryFunc func, gpointer user_data)
+{
+ ModestValidatingEntryPrivate *priv = VALIDATING_ENTRY_GET_PRIVATE (self);
+ priv->func = func;
+ priv->func_user_data = user_data;
+}
+