#define TRANSITION_DECEL DECEL 0.3
#define TRANSITION_LINEAR LINEAR 0.2
+#define TAG_POPUP "popup"
+#define TAG_CTXPOPUP "ctxpopup"
+
#endif /* __AIR_HOME_DEFS_H__ */
return;
}
inputmgr_add_callback(first_btn, first_btn_id, &handler, priv);
+ inputmgr_set_tags(first_btn, TAG_POPUP);
second_btn = utils_add_button(popup, second_btn_message,
PART_POPUP_BUTTON_2);
return;
}
inputmgr_add_callback(second_btn, second_btn_id, &handler, priv);
+ inputmgr_set_tags(second_btn, TAG_POPUP);
+
elm_object_focus_set(second_btn, EINA_TRUE);
priv->popup = popup;
}
-static void _delete_popup(struct _priv *priv, Evas_Object *obj)
+static void _delete_popup(struct _priv *priv)
{
- inputmgr_remove_callback(obj, &handler);
+ if (!priv->popup)
+ return;
+
+ inputmgr_remove_all_by_tag(TAG_POPUP);
evas_object_del(priv->popup);
priv->popup = NULL;
}
return;
}
- _delete_popup(priv, obj);
+ _delete_popup(priv);
snprintf(buf, sizeof(buf), "%s %s", priv->di->title,
MESSAGE_USER_DELETE);
utils_add_toast(priv->win, buf);
viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL);
viewmgr_hide_view(VIEW_ACTION_MENU);
viewmgr_hide_view(VIEW_USER_EDIT);
- _delete_popup(priv, obj);
+ _delete_popup(priv);
utils_launch_app(APP_ID_LIVETV, NULL, NULL);
break;
case INPUT_HANDLER_TYPE_POPUP_RESET:
viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_RESET, NULL);
elm_object_signal_emit(priv->base, SIG_HIDE, SRC_PROG);
- _delete_popup(priv, obj);
+ _delete_popup(priv);
break;
case INPUT_HANDLER_TYPE_POPUP_DELETE:
_delete_user(priv, obj);
break;
case INPUT_HANDLER_TYPE_POPUP_CANCEL:
- _delete_popup(priv, obj);
+ _delete_popup(priv);
break;
default:
return;
case INPUT_HANDLER_TYPE_POPUP_DISCARD:
case INPUT_HANDLER_TYPE_POPUP_DELETE:
case INPUT_HANDLER_TYPE_POPUP_CANCEL:
- if (priv->popup)
- _delete_popup(priv, obj);
+ _delete_popup(priv);
break;
default:
return;
inputmgr_remove_callback(eo, &handler);
}
+ _delete_popup(priv);
elm_table_clear(priv->tbl, EINA_TRUE);
evas_object_hide(priv->base);
priv->list = NULL;
.mouse_move = _mouse_move
};
-static void _delete_popup(struct _priv *priv, Evas_Object *obj)
+static void _delete_popup(struct _priv *priv)
{
- inputmgr_remove_callback(obj, &handler);
+ if (!priv->popup)
+ return;
+
+ inputmgr_remove_all_by_tag(TAG_POPUP);
evas_object_del(priv->popup);
priv->popup = NULL;
}
{
char *thumb;
- _delete_popup(priv, obj);
+ _delete_popup(priv);
elm_object_focus_allow_set(priv->grid, EINA_TRUE);
thumb = elm_object_item_data_get(priv->cur);
if (thumb) {
_select_done(priv, obj);
} else if (!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- _delete_popup(priv, obj);
+ _delete_popup(priv);
elm_object_focus_allow_set(priv->grid, EINA_TRUE);
elm_object_focus_set(priv->grid, EINA_TRUE);
}
!strcmp(ev->keyname, KEY_ENTER_REMOTE) ||
!strcmp(ev->keyname, KEY_BACK) ||
!strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- _delete_popup(priv, obj);
+ _delete_popup(priv);
elm_object_focus_allow_set(priv->grid, EINA_TRUE);
elm_object_focus_set(priv->grid, EINA_TRUE);
}
return;
priv = data;
- _delete_popup(priv, obj);
+ _delete_popup(priv);
elm_object_focus_allow_set(priv->grid, EINA_TRUE);
elm_object_focus_set(priv->grid, EINA_TRUE);
break;
}
inputmgr_add_callback(cancel_btn, INPUT_HANDLER_TYPE_CANCEL, &handler,
priv);
+ inputmgr_set_tags(cancel_btn, TAG_POPUP);
done_btn = utils_add_button(ly, MESSAGE_DONE, PART_PHOTO_VIEWER_DONE);
if (!done_btn) {
}
inputmgr_add_callback(done_btn, INPUT_HANDLER_TYPE_DONE, &handler,
priv);
+ inputmgr_set_tags(done_btn, TAG_POPUP);
elm_object_focus_set(cancel_btn, EINA_TRUE);
evas_object_del(priv->ly);
priv->ly = NULL;
} else {
+ _delete_popup(priv);
elm_gengrid_item_class_free(priv->grid_ic);
inputmgr_remove_callback(priv->grid, &handler);
evas_object_del(priv->grid);
Evas_Object *base;
Evas_Object *scr;
Evas_Object *box;
+ Evas_Object *popup;
Eina_List *list;
struct datamgr *dm;
evas_object_del(popup);
return;
}
- inputmgr_add_callback(btn, INPUT_HANDLER_TYPE_BUTTON, &handler, popup);
+ inputmgr_add_callback(btn, INPUT_HANDLER_TYPE_BUTTON, &handler, priv);
+ inputmgr_set_tags(btn, TAG_POPUP);
elm_object_focus_set(btn, EINA_TRUE);
+
+ priv->popup = popup;
+}
+
+static void _delete_popup(struct _priv *priv)
+{
+ if (!priv->popup)
+ return;
+
+ inputmgr_remove_all_by_tag(TAG_POPUP);
+ evas_object_del(priv->popup);
+ priv->popup = NULL;
}
static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
return;
}
+ priv = data;
switch (id) {
case INPUT_HANDLER_TYPE_BUTTON:
if (!strcmp(ev->keyname, KEY_ENTER) ||
!strcmp(ev->keyname, KEY_ENTER_REMOTE) ||
!strcmp(ev->keyname, KEY_BACK) ||
- !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- inputmgr_remove_callback(obj, &handler);
- evas_object_del(data);
- }
+ !strcmp(ev->keyname, KEY_BACK_REMOTE))
+ _delete_popup(priv);
break;
case INPUT_HANDLER_TYPE_BASE:
- priv = data;
if (!strcmp(ev->keyname, KEY_ENTER) ||
!strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
if (priv->foc->di->action == ITEM_SELECT_ACTION_POP) {
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;
+
switch (id) {
case INPUT_HANDLER_TYPE_BUTTON:
- inputmgr_remove_callback(obj, &handler);
- evas_object_del(data);
+ _delete_popup(priv);
break;
default:
return;
priv = data;
+ _delete_popup(priv);
_unload_user(priv);
evas_object_hide(priv->base);
*photo = utils_get_icon_from_photo(*photo);
}
-static void _delete_popup(struct _priv *priv, Evas_Object *obj)
+static void _delete_popup(struct _priv *priv)
{
- inputmgr_remove_callback(obj, &handler);
+ if (!priv->popup)
+ return;
+
+ inputmgr_remove_all_by_tag(TAG_POPUP);
evas_object_del(priv->popup);
priv->popup = NULL;
}
}
inputmgr_add_callback(discard_btn, INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD,
&handler, priv);
+ inputmgr_set_tags(discard_btn, TAG_POPUP);
cancel_btn = utils_add_button(popup, MESSAGE_CANCEL,
PART_POPUP_BUTTON_2);
}
inputmgr_add_callback(cancel_btn, INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL,
&handler, priv);
+ inputmgr_set_tags(cancel_btn, TAG_POPUP);
+
elm_object_focus_set(cancel_btn, EINA_TRUE);
}
inputmgr_add_callback(eo, INPUT_HANDLER_TYPE_EO, &handler,
priv);
+ inputmgr_set_tags(eo, TAG_CTXPOPUP);
if (i == 0)
elm_object_focus_set(eo, EINA_TRUE);
}
return base;
}
-static void _select_eo(struct _priv *priv, Evas_Object *obj)
+static void _delete_ctxpopup(struct _priv *priv)
{
- const char *file, *focus_file;
+ if (!priv->ctxpopup)
+ return;
+ inputmgr_remove_all_by_tag(TAG_CTXPOPUP);
evas_object_del(priv->ctxpopup);
priv->ctxpopup = NULL;
elm_object_focus_allow_set(priv->photo, EINA_TRUE);
+}
+
+static void _select_eo(struct _priv *priv, Evas_Object *obj)
+{
+ const char *file, *focus_file;
+
+ _delete_ctxpopup(priv);
file = evas_object_data_get(obj, KEY_ICON);
focus_file = utils_get_focus_photo_from_photo(file);
viewmgr_pop_view();
break;
case INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD:
- _delete_popup(priv, obj);
viewmgr_pop_view();
- break;
case INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL:
- _delete_popup(priv, obj);
+ _delete_popup(priv);
break;
default:
return;
viewmgr_pop_view();
break;
case INPUT_HANDLER_TYPE_EO:
- evas_object_del(priv->ctxpopup);
- priv->ctxpopup = NULL;
- elm_object_focus_allow_set(priv->photo, EINA_TRUE);
+ _delete_ctxpopup(priv);
break;
case INPUT_HANDLER_TYPE_POPUP_BTN_DISCARD:
- _delete_popup(priv, obj);
- break;
case INPUT_HANDLER_TYPE_POPUP_BTN_CANCEL:
- _delete_popup(priv, obj);
+ _delete_popup(priv);
break;
default:
return;
}
priv = data;
+
+ _delete_popup(priv);
+ _delete_ctxpopup(priv);
+
priv->selected_photo = NULL;
evas_object_hide(priv->base);
}