}
}
+static void _key_up(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Up *ev);
+
static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev);
static input_handler handler = {
.focused = _focused,
.unfocused = _unfocused,
+ .key_up = _key_up,
.key_down = _key_down,
.mouse_up = _mouse_up,
.mouse_move = _mouse_move
_load_user_icon(priv, file, focus_file);
}
-static void _select_btn_done(struct _priv *priv)
+static void _reset(struct _priv *priv);
+
+static void _update_user(struct _priv *priv, const char *pincode)
{
const char *name, *photo;
char buf[MAX_BUF];
+ bool r;
_get_profile(priv, &name, &photo);
+
if (priv->di) {
priv->di->action = ITEM_SELECT_ACTION_UPDATE;
priv->di->title = strdup(name ? name : "");
priv->di->icon = strdup(photo ? photo :
IMAGE_USER_DEFAULT);
- if (datamgr_select_item(priv->dm, priv->di)) {
- snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_UPDATE);
- utils_add_toast(priv->win, buf);
- }
+ priv->di->parameter = strdup(pincode ? pincode : "");
+ snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_UPDATE);
+ r = datamgr_select_item(priv->dm, priv->di);
} else {
- if (!name || !strcmp(name, "")) {
- elm_object_focus_set(priv->name, EINA_TRUE);
- return;
- }
- if (datamgr_add_item(priv->dm, name, photo, "")) {
- snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_ADD);
- utils_add_toast(priv->win, buf);
- }
+ snprintf(buf, sizeof(buf), "%s %s", name, MESSAGE_USER_ADD);
+ r = datamgr_add_item(priv->dm, name, photo,
+ pincode ? pincode : "");
+ }
+
+ if (!r) {
+ _reset(priv);
+ return;
}
+ utils_add_toast(priv->win, buf);
priv->di = NULL;
viewmgr_pop_view();
}
case INPUT_HANDLER_TYPE_ENTRY:
elm_object_focus_set(priv->done, EINA_TRUE);
break;
- case INPUT_HANDLER_TYPE_BTN_DONE:
- _select_btn_done(priv);
- break;
case INPUT_HANDLER_TYPE_BTN_CANCEL:
if (_check_changed_input(priv)) {
_add_discard_popup(priv);
elm_object_focus_allow_set(obj, EINA_FALSE);
}
+static void _show_action_menu(struct _priv *priv)
+{
+ struct view_update_data vdata;
+
+ vdata.state = _check_changed_input(priv);
+ vdata.type = MENU_TYPE_ADD;
+
+ if (priv->di) {
+ if (priv->user_type == USER_ITEM_ADMIN &&
+ priv->di->type != USER_ITEM_ADMIN) {
+ vdata.type = MENU_TYPE_EDIT;
+ vdata.di = priv->di;
+ }
+ }
+
+ viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_TYPE_MENU, &vdata);
+ viewmgr_show_view(VIEW_ACTION_MENU);
+}
+
+static bool _check_done(struct _priv *priv)
+{
+ int i;
+
+ if (!strcmp(elm_entry_entry_get(priv->name), "")) {
+ elm_object_focus_set(priv->name, EINA_TRUE);
+ return false;
+ }
+
+ if (!priv->locked) {
+ _update_user(priv, NULL);
+ return false;
+ }
+
+ for (i = 0; i < COUNT_PIN; i++) {
+ if (elm_entry_is_empty(priv->pin[i])) {
+ elm_object_focus_set(priv->pin[i], EINA_TRUE);
+ return false;
+ }
+ }
+
+ return true;
+}
+
+static void _key_up(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Up *ev)
+{
+ struct _priv *priv;
+ char pincode[8];
+
+ if (!data) {
+ _ERR("Invalid argument");
+ return;
+ }
+
+ if (id != INPUT_HANDLER_TYPE_BTN_DONE)
+ return;
+
+ priv = data;
+
+ if (!strcmp(ev->keyname, KEY_BACK) ||
+ !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
+ if (_check_changed_input(priv)) {
+ _add_discard_popup(priv);
+ return;
+ }
+ viewmgr_pop_view();
+ } else if (!strcmp(ev->keyname, KEY_ENTER) ||
+ !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
+ if (!_check_done(priv))
+ return;
+
+ snprintf(pincode, sizeof(pincode), "%s%s%s%s",
+ elm_entry_entry_get(priv->pin[0]),
+ elm_entry_entry_get(priv->pin[1]),
+ elm_entry_entry_get(priv->pin[2]),
+ elm_entry_entry_get(priv->pin[3]));
+ viewmgr_update_view(VIEW_PIN, UPDATE_TYPE_PIN_CODE, pincode);
+ viewmgr_show_view(VIEW_PIN);
+ } else if (!strcmp(ev->keyname, KEY_MENU) ||
+ !strcmp(ev->keyname, KEY_MENU_REMOTE)) {
+ _show_action_menu(priv);
+ }
+}
+
static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev)
{
struct _priv *priv;
- struct view_update_data vdata;
if (!data) {
_ERR("Invalid argument");
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
switch (id) {
case INPUT_HANDLER_TYPE_PHOTO:
- case INPUT_HANDLER_TYPE_BTN_DONE:
case INPUT_HANDLER_TYPE_BTN_CANCEL:
case INPUT_HANDLER_TYPE_ENTRY:
case INPUT_HANDLER_TYPE_PIN:
!strcmp(ev->keyname, KEY_MENU_REMOTE)) {
switch (id) {
case INPUT_HANDLER_TYPE_PHOTO:
- case INPUT_HANDLER_TYPE_BTN_DONE:
case INPUT_HANDLER_TYPE_BTN_CANCEL:
case INPUT_HANDLER_TYPE_ENTRY:
case INPUT_HANDLER_TYPE_PIN:
case INPUT_HANDLER_TYPE_LOCK:
- vdata.state = _check_changed_input(priv);
- vdata.type = MENU_TYPE_ADD;
- if (priv->di) {
- if (priv->user_type == USER_ITEM_ADMIN &&
- priv->di->type !=
- USER_ITEM_ADMIN) {
- vdata.type = MENU_TYPE_EDIT;
- vdata.di = priv->di;
- }
- }
- viewmgr_update_view(VIEW_ACTION_MENU, UPDATE_TYPE_MENU,
- &vdata);
- viewmgr_show_view(VIEW_ACTION_MENU);
+ _show_action_menu(priv);
break;
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)) {
+ !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);
}
case UPDATE_TYPE_RESET:
_reset(priv);
break;
+ case UPDATE_TYPE_PIN_RESULT:
+ if (!data)
+ return;
+
+ _update_user(priv, data);
+ break;
default:
_ERR("Invalid type");
return;