Fixes the Diablo build
[modest] / src / widgets / modest-validating-entry.c
index b6af2a4..879e1da 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #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))
@@ -29,6 +35,9 @@ struct _ModestValidatingEntryPrivate
        
        gboolean prevent_whitespace;
        
+       EasySetupValidatingEntryFunc func;
+       gpointer func_user_data;
+
        EasySetupValidatingEntryMaxFunc max_func;
        gpointer max_func_user_data;
 };
@@ -131,6 +140,10 @@ on_insert_text(GtkEditable *editable,
                        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;
                        }       
                }
@@ -140,6 +153,10 @@ on_insert_text(GtkEditable *editable,
                        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;
                        }
                }
@@ -192,7 +209,15 @@ modest_validating_entry_init (ModestValidatingEntry *self)
 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.
@@ -242,3 +267,14 @@ void modest_validating_entry_set_max_func (ModestValidatingEntry *self, EasySetu
        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;
+}
+