#define GENGRID_ITEM_SIZE 200
+enum input_handler_type {
+ INPUT_HANDLER_TYPE_GRID,
+ INPUT_HANDLER_TYPE_NO_CONTENTS,
+ INPUT_HANDLER_TYPE_DONE,
+ INPUT_HANDLER_TYPE_CANCEL
+};
+
struct _priv {
Evas_Object *win;
Evas_Object *base;
struct datamgr *dm;
};
-static void _cancel_key_down(int id, void *data, Evas *e, Evas_Object *obj,
+static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
Evas_Event_Key_Down *ev);
-static void _done_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev);
+static void _mouse_up(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Up *ev);
+
+static input_handler handler = {
+ .key_down = _key_down,
+ .mouse_up = _mouse_up
+};
+
+static void _delete_popup(struct _priv *priv, Evas_Object *obj)
+{
+ inputmgr_remove_callback(obj, &handler);
+ evas_object_del(priv->popup);
+ priv->popup = NULL;
+}
+
+static void _select_done(struct _priv *priv, Evas_Object *obj)
+{
+ char *thumb;
+
+ _delete_popup(priv, obj);
+ elm_object_focus_allow_set(priv->grid, EINA_TRUE);
+ thumb = elm_object_item_data_get(priv->cur);
+ if (thumb) {
+ viewmgr_update_view(VIEW_USER_EDIT,
+ UPDATE_TYPE_PHOTO, thumb);
+ viewmgr_pop_view();
+ }
+}
+
+static void _key_down(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Key_Down *ev)
+{
+ struct _priv *priv = data;
+
+ switch (id) {
+ case INPUT_HANDLER_TYPE_GRID:
+ /* fallthrough */
+ case INPUT_HANDLER_TYPE_NO_CONTENTS:
+ if (!strcmp(ev->keyname, KEY_BACK) ||
+ !strcmp(ev->keyname, KEY_BACK_REMOTE))
+ viewmgr_pop_view();
+ break;
+ case INPUT_HANDLER_TYPE_DONE:
+ if (!data)
+ return;
+
+ priv = data;
+ if (!strcmp(ev->keyname, KEY_ENTER) ||
+ !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
+ _select_done(priv, obj);
+ } else if (!strcmp(ev->keyname, KEY_BACK) ||
+ !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
+ _delete_popup(priv, obj);
+ elm_object_focus_allow_set(priv->grid, EINA_TRUE);
+ elm_object_focus_set(priv->grid, EINA_TRUE);
+ }
+ break;
+ case INPUT_HANDLER_TYPE_CANCEL:
+ if (!data)
+ 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, obj);
+ elm_object_focus_allow_set(priv->grid, EINA_TRUE);
+ elm_object_focus_set(priv->grid, EINA_TRUE);
+ }
+ break;
+ default:
+ return;
+ }
+}
+
+static void _mouse_up(int id, void *data, Evas *e, Evas_Object *obj,
+ Evas_Event_Mouse_Up *ev)
+{
+ struct _priv *priv;
+
+ switch (id) {
+ case INPUT_HANDLER_TYPE_DONE:
+ if (!data)
+ return;
+
+ priv = data;
+ _select_done(priv, obj);
+ break;
+ case INPUT_HANDLER_TYPE_CANCEL:
+ if (!data)
+ return;
+
+ priv = data;
+ _delete_popup(priv, obj);
+ elm_object_focus_allow_set(priv->grid, EINA_TRUE);
+ elm_object_focus_set(priv->grid, EINA_TRUE);
+ break;
+ default:
+ return;
+ }
+}
static Evas_Object *_create(Evas_Object *win, void *data)
{
return base;
}
-static void _ly_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- if (!strcmp(ev->keyname, KEY_BACK)) {
- viewmgr_pop_view();
- }
-}
-
-static input_handler ly_handler = {
- .key_down = _ly_key_down
-};
-
static void _load_no_content(struct _priv *priv)
{
Evas_Object *ly;
return;
}
evas_object_show(ly);
- inputmgr_add_callback(ly, 0, &ly_handler, NULL);
+ inputmgr_add_callback(ly, INPUT_HANDLER_TYPE_NO_CONTENTS, &handler,
+ NULL);
priv->ly = ly;
}
-static void _grid_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- if (!strcmp(ev->keyname, KEY_BACK)) {
- viewmgr_pop_view();
- }
-}
-
-static input_handler grid_handler = {
- .key_down = _grid_key_down
-};
static Evas_Object *_add_photo_grid(struct _priv *priv)
{
elm_gengrid_align_set(grid, 0.0, 0.5);
evas_object_show(grid);
- inputmgr_add_callback(grid, 0, &grid_handler, priv);
+ inputmgr_add_callback(grid, INPUT_HANDLER_TYPE_GRID, &handler, priv);
return grid;
}
return img;
}
-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 input_handler cancel_handler = {
- .key_down = _cancel_key_down
-};
-
-static void _cancel_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- struct _priv *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_handler, obj);
- elm_object_focus_allow_set(priv->grid, EINA_TRUE);
- elm_object_focus_set(priv->grid, EINA_TRUE);
- }
-}
-
-static input_handler done_handler = {
- .key_down = _done_key_down
-};
-
-static void _done_key_down(int id, void *data, Evas *e, Evas_Object *obj,
- Evas_Event_Key_Down *ev)
-{
- struct _priv *priv = data;
- char *thumb;
-
- if (!strcmp(ev->keyname, KEY_ENTER) ||
- !strcmp(ev->keyname, KEY_ENTER_REMOTE)) {
- _delete_popup(priv, &done_handler, obj);
- elm_object_focus_allow_set(priv->grid, EINA_TRUE);
- thumb = elm_object_item_data_get(priv->cur);
- if (thumb) {
- viewmgr_update_view(VIEW_USER_EDIT, UPDATE_TYPE_PHOTO,
- thumb);
- viewmgr_pop_view();
- }
- } else if (!strcmp(ev->keyname, KEY_BACK) ||
- !strcmp(ev->keyname, KEY_BACK_REMOTE)) {
- _delete_popup(priv, &done_handler, obj);
- elm_object_focus_allow_set(priv->grid, EINA_TRUE);
- elm_object_focus_set(priv->grid, EINA_TRUE);
- }
-}
-
static void _add_viewer_popup(struct _priv *priv, char *file)
{
Evas_Object *popup, *ly, *cancel_btn, *done_btn, *img;
evas_object_del(popup);
return;
}
- inputmgr_add_callback(cancel_btn, 0, &cancel_handler, priv);
+ inputmgr_add_callback(cancel_btn, INPUT_HANDLER_TYPE_CANCEL, &handler,
+ priv);
done_btn = utils_add_button(ly, MESSAGE_DONE, PART_PHOTO_VIEWER_DONE);
if (!done_btn) {
evas_object_del(popup);
return;
}
- inputmgr_add_callback(done_btn, 0, &done_handler, priv);
+ inputmgr_add_callback(done_btn, INPUT_HANDLER_TYPE_DONE, &handler,
+ priv);
elm_object_focus_set(cancel_btn, EINA_TRUE);
priv = data;
if (priv->ly) {
- inputmgr_remove_callback(priv->ly, &ly_handler);
+ inputmgr_remove_callback(priv->ly, &handler);
evas_object_del(priv->ly);
priv->ly = NULL;
} else {
elm_gengrid_item_class_free(priv->grid_ic);
- inputmgr_remove_callback(priv->grid, &grid_handler);
+ inputmgr_remove_callback(priv->grid, &handler);
evas_object_del(priv->grid);
priv->grid = NULL;
}