void test_entry_anchor2(void *data, Evas_Object *obj, void *event_info);
void test_entry_anchor(void *data, Evas_Object *obj, void *event_info);
void test_entry_emoticon(void *data, Evas_Object *obj, void *event_info);
+void test_entry_password(void *data, Evas_Object *obj, void *event_info);
void test_toolbar(void *data, Evas_Object *obj, void *event_info);
void test_toolbar2(void *data, Evas_Object *obj, void *event_info);
void test_toolbar3(void *data, Evas_Object *obj, void *event_info);
ADD_TEST(NULL, "Entries", "Entry Anchor", test_entry_anchor);
ADD_TEST(NULL, "Entries", "Entry Anchor2", test_entry_anchor2);
ADD_TEST(NULL, "Entries", "Entry Emoticon", test_entry_emoticon);
+ ADD_TEST(NULL, "Entries", "Entry Password", test_entry_password);
ADD_TEST(NULL, "Entries", "Efl UI Text", test_efl_ui_text);
//------------------------------//
}
static void
+password_entry_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+ printf("Password : %s\n", elm_entry_entry_get(obj));
+}
+
+static void
+show_password_check_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
+{
+ Evas_Object *en = (Evas_Object *)data;
+ Eina_Bool state = elm_check_state_get(obj);
+
+ if (state)
+ {
+ printf(" * Show Password...\n");
+ elm_object_text_set(obj, "Hide Password");
+ elm_entry_password_set(en, EINA_FALSE);
+ }
+ else
+ {
+ printf(" * Hide Password...\n");
+ elm_object_text_set(obj, "Show Password");
+ elm_entry_password_set(en, EINA_TRUE);
+ }
+}
+
+void
+test_entry_password(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
+{
+ Evas_Object *win, *bx, *en, *ck;
+
+ edje_password_show_last_set(EINA_TRUE);
+ edje_password_show_last_timeout_set(-1);
+
+ win = elm_win_util_standard_add("entry", "Entry");
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bx = elm_box_add(win);
+ evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bx);
+ evas_object_show(bx);
+
+ en = elm_entry_add(bx);
+ elm_entry_single_line_set(en, EINA_TRUE);
+ elm_entry_scrollable_set(en, EINA_TRUE);
+ elm_entry_password_set(en, EINA_TRUE);
+ elm_object_part_text_set(en, "elm.guide", "Enter Your Password");
+ evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_box_pack_end(bx, en);
+ evas_object_show(en);
+
+ evas_object_smart_callback_add(en, "changed", password_entry_changed_cb, NULL);
+
+ ck = elm_check_add(bx);
+ elm_object_text_set(ck, "Show Password");
+ evas_object_smart_callback_add(ck, "changed", show_password_check_changed_cb, en);
+ elm_box_pack_end(bx, ck);
+ evas_object_show(ck);
+
+ evas_object_resize(win, 300, 100);
+ evas_object_show(win);
+}
+
+static void
my_efl_ui_text_bt_5(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Evas_Object *en = data;
info, _free_entry_change_info);
}
-static void
+Eina_Bool
_edje_entry_hide_visible_password(Edje *ed, Edje_Real_Part *rp)
{
+ Eina_Bool int_ret = EINA_FALSE;
const Evas_Object_Textblock_Node_Format *node;
node = evas_textblock_node_format_first_get(rp->object);
for (; node; node = evas_textblock_node_format_next_get(node))
evas_textblock_node_format_remove_pair(rp->object,
(Evas_Object_Textblock_Node_Format *)node);
_edje_emit(ed, "entry,changed", rp->part->name);
+ int_ret = EINA_TRUE;
break;
}
}
}
_edje_entry_real_part_configure(ed, rp);
+
+ return int_ret;
}
static Eina_Bool
info, _free_entry_change_info);
_edje_emit(ed, "cursor,changed", rp->part->name);
cursor_changed = EINA_TRUE;
- ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
_edje_emit(ed, "entry,key,enter", rp->part->name);
+ ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
else
{
scale: double; [[The transition duration factor]]
}
}
+ part_text_hide_visible_password {
+ [[Hide visible last character for password mode.
+
+ @since 1.18.0]]
+ params {
+ @in part: const(char)*; [[The part name]]
+ }
+ return: bool; [[$true if the visible character is hidden. $false if there is no visible character or the object is not set for password mode.]]
+ }
}
implements {
Eo.Base.constructor;
Eina_Bool _edje_entry_input_panel_return_key_disabled_get(Edje_Real_Part *rp);
void _edje_entry_input_panel_show_on_demand_set(Edje_Real_Part *rp, Eina_Bool ondemand);
Eina_Bool _edje_entry_input_panel_show_on_demand_get(Edje_Real_Part *rp);
+Eina_Bool _edje_entry_hide_visible_password(Edje *edje, Edje_Real_Part *rp);
void _edje_external_init(void);
void _edje_external_shutdown(void);
return et;
}
+EOLIAN Eina_Bool
+_edje_object_part_text_hide_visible_password(Eo *obj, Edje *ed, const char *part)
+{
+ Edje_Real_Part *rp;
+ Eina_Bool int_ret;
+
+ if ((!ed) || (!part)) return EINA_FALSE;
+ rp = _edje_real_part_recursive_get(&ed, part);
+ if (!rp) return EINA_FALSE;
+ if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return EINA_FALSE;
+ if ((rp->type != EDJE_RP_TYPE_TEXT) ||
+ (!rp->typedata.text))
+ {
+ return EINA_FALSE;
+ }
+
+ if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD)
+ int_ret = _edje_entry_hide_visible_password(ed, rp);
+
+ return int_ret;
+}
+
Edje_Real_Part *
_edje_real_part_recursive_get(Edje **ed, const char *part)
{
evas_event_freeze(evas_object_evas_get(obj));
+ edje_obj_part_text_hide_visible_password(sd->entry_edje, "elm.text");
+
edje_object_mirrored_set
(wd->resize_obj, elm_widget_mirrored_get(obj));