X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-validating-entry.c;h=1515f7f75e45cb4c7ee0f199796856d633eab124;hb=f52c04f459c2504b816ab1dce99a84094524e36b;hp=b6af2a46c1dbde87c89e05e4c84c546aa57bf0d7;hpb=9bd1924e6eb4205f91ab96bd7697be8bec3720ee;p=modest diff --git a/src/widgets/modest-validating-entry.c b/src/widgets/modest-validating-entry.c index b6af2a4..1515f7f 100644 --- a/src/widgets/modest-validating-entry.c +++ b/src/widgets/modest-validating-entry.c @@ -1,9 +1,34 @@ /* Copyright (c) 2007, 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-validating-entry.h" +#include #include /* For the gtk_signal_stop_emit_by_name() convenience function. */ #include /* For strlen(). */ @@ -12,7 +37,12 @@ #include #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 +59,9 @@ struct _ModestValidatingEntryPrivate gboolean prevent_whitespace; + EasySetupValidatingEntryFunc func; + gpointer func_user_data; + EasySetupValidatingEntryMaxFunc max_func; gpointer max_func_user_data; }; @@ -131,6 +164,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 +177,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 +233,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 +291,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; +} +