From 205c264449434c2b2b5f79a73f3cd2357bc8e48f Mon Sep 17 00:00:00 2001 From: Youngbok Shin Date: Mon, 30 Dec 2013 18:25:15 +0900 Subject: [PATCH] entry - Add "rejected" smart callback in "elm_entry_filter_accept_set" Summary: Add "rejected" smart callback. Applications using the *filter_accept_set didn't know when the input was rejected. This smart callback can provide a simple information to applications. Reviewers: woohyun, tasn, seoz Reviewed By: seoz Differential Revision: https://phab.enlightenment.org/D413 --- legacy/elementary/src/bin/test_entry.c | 15 +++++++++++++++ legacy/elementary/src/lib/elm_entry.c | 12 ++++++++++-- legacy/elementary/src/lib/elm_entry.h | 1 + 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/legacy/elementary/src/bin/test_entry.c b/legacy/elementary/src/bin/test_entry.c index e1fdb21..3552c69 100644 --- a/legacy/elementary/src/bin/test_entry.c +++ b/legacy/elementary/src/bin/test_entry.c @@ -273,6 +273,19 @@ _item_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) printf("\ncurrent selected text = %s\n", elm_entry_context_menu_item_label_get(item)); } +static void +_entry_rejected_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + Elm_Entry_Filter_Accept_Set *accept_set = data; + + if (!accept_set) return; + + if (accept_set->accepted) + printf("REJECTED: This entry only accepts the following character set: [%s]\n", accept_set->accepted); + else + printf("REJECTED: This entry rejects the following character set: [%s]\n", accept_set->rejected); +} + void test_entry_scrolled(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { @@ -375,6 +388,7 @@ test_entry_scrolled(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void * digits_filter_data.accepted = "0123456789"; digits_filter_data.rejected = NULL; elm_entry_markup_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data); + evas_object_smart_callback_add(en, "rejected", _entry_rejected_cb, &digits_filter_data); /* No digits entry */ en = elm_entry_add(win); @@ -390,6 +404,7 @@ test_entry_scrolled(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void * digits_filter_data2.accepted = NULL; digits_filter_data2.rejected = "0123456789"; elm_entry_markup_filter_append(en, elm_entry_filter_accept_set, &digits_filter_data2); + evas_object_smart_callback_add(en, "rejected", _entry_rejected_cb, &digits_filter_data2); /* Size limited entry */ en = elm_entry_add(win); diff --git a/legacy/elementary/src/lib/elm_entry.c b/legacy/elementary/src/lib/elm_entry.c index 2f07f81..9f58b1f 100644 --- a/legacy/elementary/src/lib/elm_entry.c +++ b/legacy/elementary/src/lib/elm_entry.c @@ -52,7 +52,8 @@ EAPI Eo_Op ELM_OBJ_ENTRY_BASE_ID = EO_NOOP; cmd(SIG_SELECTION_START, "selection,start", "") \ cmd(SIG_TEXT_SET_DONE, "text,set,done", "") \ cmd(SIG_THEME_CHANGED, "theme,changed", "") \ - cmd(SIG_UNDO_REQUEST, "undo,request", "") + cmd(SIG_UNDO_REQUEST, "undo,request", "") \ + cmd(SIG_REJECTED, "rejected", "") ELM_PRIV_ENTRY_SIGNALS(ELM_PRIV_STATIC_VARIABLE_DECLARE); @@ -4700,12 +4701,13 @@ elm_entry_filter_limit_size(void *data, EAPI void elm_entry_filter_accept_set(void *data, - Evas_Object *entry __UNUSED__, + Evas_Object *entry, char **text) { int read_idx, last_read_idx = 0, read_char; Elm_Entry_Filter_Accept_Set *as = data; Eina_Bool goes_in; + Eina_Bool rejected = EINA_FALSE; const char *set; char *insert; @@ -4803,6 +4805,10 @@ inserting: memcpy(insert, *text + last_read_idx, size); insert += size; } + else + { + rejected = EINA_TRUE; + } if (read_char) { @@ -4811,6 +4817,8 @@ inserting: } } *insert = 0; + if (rejected) + evas_object_smart_callback_call(entry, SIG_REJECTED, NULL); } EAPI Eina_Bool diff --git a/legacy/elementary/src/lib/elm_entry.h b/legacy/elementary/src/lib/elm_entry.h index cab30ad..2ec3c6a 100644 --- a/legacy/elementary/src/lib/elm_entry.h +++ b/legacy/elementary/src/lib/elm_entry.h @@ -248,6 +248,7 @@ * @li "text,set,done": Whole text has been set to the entry. * @li "theme,changed": Called when the theme is changed. * @li "undo,request": Called on undo request. + * @li "rejected": Called when some of inputs are rejected by the filter. (since 1.9) * * Default content parts of the entry items that you can use for are: * @li "icon" - An icon in the entry -- 2.7.4