enum user_item_type user_type;
};
+static void _reset_pin(struct _priv *priv, bool focus)
+{
+ int i;
+
+ for (i = 0; i < COUNT_PIN; i++) {
+ elm_entry_entry_set(priv->pin[i], "");
+ elm_object_focus_allow_set(priv->pin[i], EINA_FALSE);
+ elm_object_signal_emit(priv->pin[i], SIG_ENABLE, SRC_ELM);
+ }
+
+ elm_object_focus_allow_set(priv->pin[0], EINA_TRUE);
+ if (focus)
+ elm_object_focus_set(priv->pin[0], EINA_TRUE);
+}
+
static void _focused(int id, void *data, Evas_Object *obj,
Elm_Object_Item *item)
{
static bool _check_changed_input(struct _priv *priv)
{
const char *photo, *name;
+ int i;
+
+ for (i = 0; i < COUNT_PIN; i++) {
+ if (!elm_entry_is_empty(priv->pin[i]))
+ return true;
+ }
_get_profile(priv, &name, &photo);
if (priv->di) {
- if (!strcmp(photo, priv->di->icon))
- return false;
+ if (strcmp(photo, priv->di->icon))
+ return true;
} else {
- if (!strcmp(name, "") && !strcmp(photo, IMAGE_USER_DEFAULT))
- return false;
+ if (strcmp(name, "") || strcmp(photo, IMAGE_USER_DEFAULT))
+ return true;
}
- return true;
+ return false;
}
static bool _add_btns(struct _priv *priv)
static bool _add_pin(Evas_Object *ly, struct _priv *priv)
{
Evas_Object *pin, *box;
-
Elm_Entry_Filter_Limit_Size pin_size = {
- .max_char_count = 1,
+ .max_char_count = 2,
};
Elm_Entry_Filter_Accept_Set pin_char = {
.accepted = "0123456789",
inputmgr_add_callback(pin, INPUT_HANDLER_TYPE_PIN, &handler,
priv);
priv->pin[i] = pin;
+ if (i != 0)
+ elm_object_focus_allow_set(pin, EINA_FALSE);
+
}
return true;
}
}
+static void _select_pin(struct _priv *priv, Evas_Object *obj)
+{
+ int i;
+
+ for (i = 0; i < COUNT_PIN; i++) {
+ if (priv->pin[i] == obj)
+ break;
+ }
+
+ if (i == COUNT_PIN) {
+ _ERR("failed to get entry");
+ return;
+ } else if (i == COUNT_PIN -1) {
+ if (elm_entry_cursor_pos_get(obj) != 1)
+ _reset_pin(priv, true);
+ } else {
+ elm_object_focus_allow_set(priv->pin[i + 1], EINA_TRUE);
+ elm_object_focus_set(priv->pin[i + 1], EINA_TRUE);
+ elm_object_signal_emit(obj, SIG_DISABLE, SRC_ELM);
+ elm_object_focus_allow_set(obj, EINA_FALSE);
+ }
+}
+
static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev)
{
case INPUT_HANDLER_TYPE_BTN_CANCEL:
case INPUT_HANDLER_TYPE_DELETE:
case INPUT_HANDLER_TYPE_ENTRY:
+ case INPUT_HANDLER_TYPE_PIN:
+ case INPUT_HANDLER_TYPE_LOCK:
edited = _check_changed_input(priv);
viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_TYPE_EDIT,
&edited);
default:
return;
}
+ } else if (!strcmp(ev->keyname, KEY_0) ||
+ !strcmp(ev->keyname, KEY_1) ||
+ !strcmp(ev->keyname, KEY_2) ||
+ !strcmp(ev->keyname, KEY_3) ||
+ !strcmp(ev->keyname, KEY_4) ||
+ !strcmp(ev->keyname, KEY_5) ||
+ !strcmp(ev->keyname, KEY_6) ||
+ !strcmp(ev->keyname, KEY_7) ||
+ !strcmp(ev->keyname, KEY_8) ||
+ !strcmp(ev->keyname, KEY_9)) {
+ if (id == INPUT_HANDLER_TYPE_PIN)
+ _select_pin(priv, obj);
}
}
_load_user_icon(priv, IMAGE_USER_CURRENT_DEFAULT,
IMAGE_USER_CURRENT_DEFAULT_FOCUS);
}
+
+ _reset_pin(priv, false);
}
static void _show(void *data)