#define CTXPOPUP_Y 310
#define MAX_BUF 128
+enum input_handler_type {
+ INPUT_HANDLER_TYPE_PHOTO,
+ INPUT_HANDLER_TYPE_LOCK,
+ INPUT_HANDLER_TYPE_DELETE,
+ INPUT_HANDLER_TYPE_EO,
+ INPUT_HANDLER_TYPE_BTN_DONE,
+ INPUT_HANDLER_TYPE_BTN_CANCEL,
+ INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD,
+ INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL,
+ INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_DELETE,
+ INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_CANCEL
+};
+
enum user_item_type {
USER_ITEM_NONE = 0x00,
USER_ITEM_ADD = 0x01,
struct datamgr_item *di;
};
-static void _discard_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev);
-
-static void _cancel_user_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev);
-
-static void _delete_user_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev);
-
-static void _get_profile(struct _priv *priv, const char **name,
- const char **photo, const char **pin)
+static void _focused(int id, void *data, Evas_Object *obj,
+ Elm_Object_Item *item)
{
- *name = elm_entry_entry_get(priv->name);
- *pin = elm_entry_entry_get(priv->pin);
- elm_image_file_get(priv->icon, photo, NULL);
- *photo = utils_get_icon_from_photo(*photo);
+ switch (id) {
+ case INPUT_HANDLER_TYPE_PHOTO:
+ case INPUT_HANDLER_TYPE_LOCK:
+ case INPUT_HANDLER_TYPE_DELETE:
+ case INPUT_HANDLER_TYPE_EO:
+ elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG);
+ break;
+ default:
+ return;
+ }
}
-static void _done_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
+static void _unfocused(int id, void *data, Evas_Object *obj,
+ Elm_Object_Item *item)
{
- struct _priv *priv;
- const char *name, *pin, *photo;
-
- if (!data) {
- _ERR("Invalid argument");
+ switch (id) {
+ case INPUT_HANDLER_TYPE_PHOTO:
+ case INPUT_HANDLER_TYPE_LOCK:
+ case INPUT_HANDLER_TYPE_DELETE:
+ case INPUT_HANDLER_TYPE_EO:
+ elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG);
+ break;
+ default:
return;
}
-
- priv = data;
-
- if (!strcmp(ev->keyname, KEY_ENTER)) {
- _get_profile(priv, &name, &photo, &pin);
- 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);
- priv->di->parameter = strdup(pin ? pin : "");
- datamgr_select_item(priv->dm, priv->di);
- } else
- datamgr_add_item(priv->dm, name, photo, pin);
- priv->di = NULL;
- viewmgr_pop_view();
- }
}
-static input_handler done_handler = {
- .key_down = _done_key_down
-};
+static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Down *ev);
-static void _delete_popup(struct _priv *priv, input_handler *handler,
- Evas_Object *obj)
-{
- inputmgr_remove_callback(obj, handler);
- evas_object_del(priv->popup);
- priv->popup = NULL;
-}
+static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Down *ev);
-static input_handler cancel_user_handler = {
- .key_down = _cancel_user_key_down
+static input_handler handler = {
+ .focused = _focused,
+ .unfocused = _unfocused,
+ .key_down = _key_down,
+ .mouse_down = _mouse_down
};
-static void _cancel_user_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
+static void _get_profile(struct _priv *priv, const char **name,
+ const char **photo, const char **pin)
{
- struct _priv *priv;
-
- if (!data) {
- _ERR("Invalid argument");
- return;
- }
-
- priv = data;
-
- if (!strcmp(ev->keyname, KEY_ENTER) ||
- !strcmp(ev->keyname, KEY_ENTER_REMOTE) ||
- !strcmp(ev->keyname, KEY_BACK) ||
- !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- _delete_popup(priv, &cancel_user_handler, obj);
- }
+ *name = elm_entry_entry_get(priv->name);
+ *pin = elm_entry_entry_get(priv->pin);
+ elm_image_file_get(priv->icon, photo, NULL);
+ *photo = utils_get_icon_from_photo(*photo);
}
-static input_handler discard_handler = {
- .key_down = _discard_key_down
-};
-
-static void _discard_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
+static void _delete_popup(struct _priv *priv, Evas_Object *obj)
{
- struct _priv *priv;
-
- if (!data) {
- _ERR("Invalid argument");
- return;
- }
-
- priv = data;
-
- if (!strcmp(ev->keyname, KEY_ENTER) ||
- !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
- _delete_popup(priv, &discard_handler, obj);
- viewmgr_pop_view();
- } else if (!strcmp(ev->keyname, KEY_BACK) ||
- !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- _delete_popup(priv, &discard_handler, obj);
- }
+ inputmgr_remove_callback(obj, &handler);
+ evas_object_del(priv->popup);
+ priv->popup = NULL;
}
static void _add_discard_popup(struct _priv *priv)
evas_object_del(popup);
return;
}
- inputmgr_add_callback(discard_btn, 0, &discard_handler, priv);
+ inputmgr_add_callback(discard_btn, INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD,
+ &handler, priv);
cancel_btn = utils_add_button(popup, MESSAGE_CANCEL,
PART_POPUP_BUTTON_2);
evas_object_del(popup);
return;
}
- inputmgr_add_callback(cancel_btn, 0, &cancel_user_handler, priv);
+ inputmgr_add_callback(cancel_btn, INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL,
+ &handler, priv);
elm_object_focus_set(cancel_btn, EINA_TRUE);
}
return true;
}
-static void _cancel_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- if (!strcmp(ev->keyname, KEY_ENTER)) {
- if (_check_changed_input(data)) {
- _add_discard_popup(data);
- return;
- }
-
- viewmgr_pop_view();
- }
-}
-
-static input_handler cancel_handler = {
- .key_down = _cancel_key_down
-};
-
static bool _add_btns(struct _priv *priv)
{
Evas_Object *done, *cancel;
_ERR("failed to add done btn");
return false;
}
- inputmgr_add_callback(done, 0, &done_handler, priv);
+ inputmgr_add_callback(done, INPUT_HANDLER_TYPE_BTN_DONE, &handler,
+ priv);
cancel = utils_add_button(priv->base, MESSAGE_CANCEL,
PART_USER_EDIT_BTN_CANCEL);
evas_object_del(done);
return false;
}
- inputmgr_add_callback(cancel, 0, &cancel_handler, priv);
+ inputmgr_add_callback(cancel, INPUT_HANDLER_TYPE_BTN_CANCEL, &handler,
+ priv);
priv->cancel = cancel;
priv->done = done;
return true;
}
-static void _focused(int id, void *data, Evas_Object *obj,
- Elm_Object_Item *item)
-{
- elm_object_signal_emit(obj, SIG_FOCUS, SRC_PROG);
-}
-
-static void _unfocused(int id, void *data, Evas_Object *obj,
- Elm_Object_Item *item)
-{
- elm_object_signal_emit(obj, SIG_UNFOCUS, SRC_PROG);
-}
-
static void _load_user_icon(struct _priv *priv, const char *file,
const char *focus_file)
{
priv->focus_icon = focus_icon;
}
-static void _eo_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- struct _priv *priv;
- const char *file, *focus_file;
-
- if (!data)
- return;
-
- priv = data;
-
- if (!strcmp(ev->keyname, KEY_BACK) ||
- !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- evas_object_del(priv->ctxpopup);
- priv->ctxpopup = NULL;
- } else if (!strcmp(ev->keyname, KEY_ENTER) ||
- !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
- evas_object_del(priv->ctxpopup);
- priv->ctxpopup = NULL;
-
- file = evas_object_data_get(obj, KEY_ICON);
- focus_file = utils_get_focus_photo_from_photo(file);
-
- if (!strcmp(file, ICON_ADD) || !strcmp(focus_file, ICON_ADD))
- viewmgr_push_view(VIEW_PHOTO);
- else
- _load_user_icon(priv, file, focus_file);
- }
-}
-
-static input_handler icon_handler = {
- .focused = _focused,
- .unfocused = _unfocused,
- .key_down = _eo_key_down
-};
-
static Evas_Object *_pack_icon(Evas_Object *table, struct icon_info *_icon_info,
int i)
{
if (!eo)
continue;
- inputmgr_add_callback(eo, 0, &icon_handler, priv);
+ inputmgr_add_callback(eo, INPUT_HANDLER_TYPE_EO, &handler,
+ priv);
if (i == 0)
elm_object_focus_set(eo, EINA_TRUE);
}
priv->ctxpopup = ctxpopup;
}
-static void _photo_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- if (!strcmp(ev->keyname, KEY_ENTER)) {
- _add_icon_list(data);
- }
-}
-
-static input_handler photo_handler = {
- .focused = _focused,
- .unfocused = _unfocused,
- .key_down = _photo_key_down
-};
-
static void _change_entry_status(Evas_Object *pin, Eina_Bool disable,
const char *signal)
{
PART_USER_EDIT_SWITCH);
}
-static void _lock_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- if (!strcmp(ev->keyname, KEY_ENTER))
- _load_lock_icon(data);
-}
-
-static input_handler lock_handler = {
- .focused = _focused,
- .unfocused = _unfocused,
- .key_down = _lock_key_down
-};
-
static Evas_Object *_add_layout(struct _priv *priv)
{
Evas_Object *ly, *photo, *name, *pin, *lock;
if (!lock)
goto err;
- inputmgr_add_callback(lock, 0, &lock_handler, priv);
- inputmgr_add_callback(photo, 0, &photo_handler, priv);
+ inputmgr_add_callback(lock, INPUT_HANDLER_TYPE_LOCK, &handler, priv);
+ inputmgr_add_callback(photo, INPUT_HANDLER_TYPE_PHOTO, &handler, priv);
priv->lock = lock;
priv->photo = photo;
return base;
}
-static input_handler delete_user_handler = {
- .key_down = _delete_user_key_down
-};
-
-static void _delete_user_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- struct _priv *priv;
-
- if (!data) {
- _ERR("Invalid argument");
- return;
- }
-
- priv = data;
-
- if (!strcmp(ev->keyname, KEY_ENTER) ||
- !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
- _delete_popup(priv, &delete_user_handler, obj);
- priv->di->action = ITEM_SELECT_ACTION_DELETE;
- datamgr_select_item(priv->dm, priv->di);
- viewmgr_pop_view();
- } else if (!strcmp(ev->keyname, KEY_BACK) ||
- !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- _delete_popup(priv, &delete_user_handler, obj);
- }
-}
-
static void _add_delete_popup(struct _priv *priv)
{
Evas_Object *popup, *delete_btn, *cancel_btn;
evas_object_del(popup);
return;
}
- inputmgr_add_callback(delete_btn, 0, &delete_user_handler, priv);
+ inputmgr_add_callback(delete_btn,
+ INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_DELETE,
+ &handler, priv);
cancel_btn = utils_add_button(popup, MESSAGE_CANCEL,
PART_POPUP_BUTTON_2);
evas_object_del(popup);
return;
}
- inputmgr_add_callback(cancel_btn, 0, &cancel_user_handler, priv);
+ inputmgr_add_callback(cancel_btn,
+ INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_CANCEL,
+ &handler, priv);
elm_object_focus_set(cancel_btn, EINA_TRUE);
}
-static void _del_key_down(int id, void *data, Evas *e, Evas_Object *obj,
+static void _select_eo(struct _priv *priv, Evas_Object *obj)
+{
+ const char *file, *focus_file;
+
+ evas_object_del(priv->ctxpopup);
+ priv->ctxpopup = NULL;
+
+ file = evas_object_data_get(obj, KEY_ICON);
+ focus_file = utils_get_focus_photo_from_photo(file);
+
+ if (!strcmp(file, ICON_ADD) || !strcmp(focus_file, ICON_ADD))
+ viewmgr_push_view(VIEW_PHOTO);
+ else
+ _load_user_icon(priv, file, focus_file);
+}
+
+static void _select_btn_done(struct _priv *priv)
+{
+ const char *name, *pin, *photo;
+
+ _get_profile(priv, &name, &photo, &pin);
+ 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);
+ priv->di->parameter = strdup(pin ? pin : "");
+ datamgr_select_item(priv->dm, priv->di);
+ } else
+ datamgr_add_item(priv->dm, name, photo, pin);
+
+ priv->di = NULL;
+ viewmgr_pop_view();
+}
+
+static void _select(struct _priv *priv, int id, Evas_Object *obj)
+{
+ switch (id) {
+ case INPUT_HANDLER_TYPE_PHOTO:
+ _add_icon_list(priv);
+ break;
+ case INPUT_HANDLER_TYPE_LOCK:
+ _load_lock_icon(priv);
+ break;
+ case INPUT_HANDLER_TYPE_DELETE:
+ _add_delete_popup(priv);
+ break;
+ case INPUT_HANDLER_TYPE_EO:
+ _select_eo(priv, obj);
+ 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);
+ return;
+ }
+ viewmgr_pop_view();
+ break;
+ case INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_DELETE:
+ _delete_popup(priv, obj);
+ priv->di->action = ITEM_SELECT_ACTION_DELETE;
+ datamgr_select_item(priv->dm, priv->di);
+ viewmgr_pop_view();
+ break;
+ case INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD:
+ _delete_popup(priv, obj);
+ viewmgr_pop_view();
+ break;
+ case INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_CANCEL:
+ case INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL:
+ _delete_popup(priv, obj);
+ break;
+ default:
+ return;
+ }
+}
+
+static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev)
{
- if (!strcmp(ev->keyname, KEY_ENTER) ||
- !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
- _add_delete_popup(data);
+ struct _priv *priv;
+
+ if (!data) {
+ _ERR("Invalid argument");
+ return;
}
+
+ priv = data;
+ if (!strcmp(ev->keyname, KEY_BACK) ||
+ !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
+ switch (id) {
+ case INPUT_HANDLER_TYPE_EO:
+ evas_object_del(priv->ctxpopup);
+ priv->ctxpopup = NULL;
+ break;
+ case INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_DELETE:
+ _delete_popup(priv, obj);
+ break;
+ case INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD:
+ _delete_popup(priv, obj);
+ break;
+ case INPUT_HANDLER_TYPE_DELETE_POPUP_BTN_CANCEL:
+ case INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL:
+ _delete_popup(priv, obj);
+ break;
+ default:
+ return;
+ }
+ } else if(!strcmp(ev->keyname, KEY_ENTER) ||
+ !strcmp(ev->keyname, KEY_ENTER_REMOTE))
+ _select(priv, id, obj);
}
-static input_handler del_handler = {
- .focused = _focused,
- .unfocused = _unfocused,
- .key_down = _del_key_down
-};
+static void _mouse_down(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Down *ev)
+{
+ struct _priv *priv;
+
+ if (!data) {
+ _ERR("Invalid argument");
+ return;
+ }
+
+ priv = data;
+ _select(priv, id, obj);
+}
static void _load_del_btn(struct _priv *priv)
{
_ERR("failed to add delete button");
return;
}
- inputmgr_add_callback(btn, 0, &del_handler, priv);
+ inputmgr_add_callback(btn, INPUT_HANDLER_TYPE_DELETE, &handler, priv);
priv->del = btn;
}
priv = data;
if (priv->del) {
- inputmgr_remove_callback(priv->del, &del_handler);
+ inputmgr_remove_callback(priv->del, &handler);
evas_object_del(priv->del);
priv->del = NULL;
}
priv = data;
- inputmgr_remove_callback(priv->photo, &photo_handler);
- inputmgr_remove_callback(priv->lock, &lock_handler);
- inputmgr_remove_callback(priv->done, &done_handler);
- inputmgr_remove_callback(priv->cancel, &cancel_handler);
+ inputmgr_remove_callback(priv->photo, &handler);
+ inputmgr_remove_callback(priv->lock, &handler);
+ inputmgr_remove_callback(priv->done, &handler);
+ inputmgr_remove_callback(priv->cancel, &handler);
viewmgr_remove_view(VIEW_PHOTO);
evas_object_del(priv->base);
free(priv);