From ac2184122cc29244380e6d5e29892efdb69c2b90 Mon Sep 17 00:00:00 2001 From: Radek Kintop Date: Fri, 4 Mar 2016 17:31:30 +0100 Subject: [PATCH] [Back] key handling Change-Id: Icff3728b37e63c07877d30f831ef01be91745e0f Signed-off-by: Radek Kintop --- include/key_define.h | 2 +- src/view/system/view_clock.c | 32 +++++++++++++++++++++++++++++--- src/view/system/view_wakeup_timer.c | 26 ++++++++++++++++++++------ 3 files changed, 50 insertions(+), 10 deletions(-) diff --git a/include/key_define.h b/include/key_define.h index 9e8c7f1..b2e6da0 100644 --- a/include/key_define.h +++ b/include/key_define.h @@ -23,7 +23,7 @@ #define KEY_LEFT "Left" #define KEY_RIGHT "Right" #define KEY_ENTER "Return" -#define KEY_ESC "Escape" +#define KEY_ESC "XF86Exit" #define KEY_BACK "XF86Back" #define KEY_MENU "XF86SysMenu" diff --git a/src/view/system/view_clock.c b/src/view/system/view_clock.c index fa8fc0e..a13bc87 100644 --- a/src/view/system/view_clock.c +++ b/src/view/system/view_clock.c @@ -61,6 +61,7 @@ enum input_handler_type { INPUT_HANDLER_TYPE_BTN_DONE, INPUT_HANDLER_TYPE_BTN_CANCEL, INPUT_HANDLER_TYPE_CHECK_H12_24, + INPUT_HANDLER_TYPE_DATE_TIME }; /* User has moved mouse over auto/manual setup dropdown: */ @@ -74,6 +75,8 @@ static void _auto_manual_setup_mouse_down_cb(); /* (KEYPAD/REMOTE) User has clicked/pressed one of the options from auto/manual setup dropdown menu: */ static void _auto_manual_setup_option_key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev); +static void _any_item_back_key_down_cb(int id, void *data, Evas *e, + Evas_Object *obj, Evas_Event_Key_Down *ev); /* (MOUSE) User has clicked/pressed one of the options from auto/manual setup dropdown menu: */ static void _auto_manual_setup_option_mouse_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev); @@ -101,17 +104,22 @@ static input_handler _auto_manual_setup_option_selection_input_handler = { }; static input_handler h_12_24_changed = { - .changed = _h_24_12_changed_cb + .changed = _h_24_12_changed_cb, + .key_down = _any_item_back_key_down_cb }; static input_handler done_btn_handler = { - .clicked = _done_mouse_cb + .clicked = _done_mouse_cb, }; static input_handler cancel_btn_handler = { .clicked = _cancel_mouse_cb }; +static input_handler date_time_handler = { + .key_down = _any_item_back_key_down_cb +}; + static void _destroy_setup_type_popup(clock_view_priv_data *priv) { evas_object_hide(priv->setup_type_popup); @@ -229,6 +237,8 @@ static bool _add_clock_setting(clock_view_priv_data *priv) inputmgr_add_callback(cancel, INPUT_HANDLER_TYPE_BTN_CANCEL, &cancel_btn_handler, priv); inputmgr_add_callback(priv->auto_manual_setup_btn, 0, &_auto_manual_setup_input_handler, priv); inputmgr_add_callback(priv->check_24, INPUT_HANDLER_TYPE_CHECK_H12_24, &h_12_24_changed, priv); + inputmgr_add_callback(priv->date_part, INPUT_HANDLER_TYPE_DATE_TIME, &date_time_handler, priv); + inputmgr_add_callback(priv->time_part, INPUT_HANDLER_TYPE_DATE_TIME, &date_time_handler, priv); return true; } @@ -391,7 +401,11 @@ static void _auto_manual_setup_key_down_cb(int id, void *data, Evas *e, Evas_Obj if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_ESC) || !strcmp(ev->keyname, KEY_UP)) { - _destroy_setup_type_popup(priv); + if(priv->setup_type_popup) { + _destroy_setup_type_popup(priv); + } else { + viewmgr_pop_view(); + } } else { if (!strcmp(ev->keyname, KEY_ENTER)) _draw_setup_type_popup(priv); @@ -432,6 +446,18 @@ static void _auto_manual_setup_option_key_down_cb(int id, void *data, Evas *e, } } +static void _any_item_back_key_down_cb(int id, void *data, Evas *e, + Evas_Object *obj, Evas_Event_Key_Down *ev) +{ + if (!data || !ev) { + _ERR("Invalid argument."); + return; + } + + if (!strcmp(ev->keyname, KEY_BACK) || !strcmp(ev->keyname, KEY_ESC)) + viewmgr_pop_view(); +} + static void _auto_manual_setup_option_mouse_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Mouse_Down *ev) { diff --git a/src/view/system/view_wakeup_timer.c b/src/view/system/view_wakeup_timer.c index 079a7c3..ed4f4e4 100644 --- a/src/view/system/view_wakeup_timer.c +++ b/src/view/system/view_wakeup_timer.c @@ -314,13 +314,27 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, return; } + if (!strcmp(ev->keyname, KEY_ESC)) + viewmgr_pop_view(); + if (!strcmp(ev->keyname, KEY_BACK)) { switch (id) { case EO_TYPE_SETUP_HOVERSEL: - elm_hoversel_hover_end(priv->setup_hs); + if(elm_hoversel_expanded_get(priv->setup_hs)) { + elm_hoversel_hover_end(priv->setup_hs); + } else { + viewmgr_pop_view(); + } break; case EO_TYPE_SOURCE_HOVERSEL: - elm_hoversel_hover_end(priv->source_hs); + if(elm_hoversel_expanded_get(priv->source_hs)) { + elm_hoversel_hover_end(priv->source_hs); + } else { + viewmgr_pop_view(); + } + break; + default: + viewmgr_pop_view(); break; } } else if (!strcmp(ev->keyname, KEY_ENTER)) { @@ -331,6 +345,8 @@ static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, case EO_TYPE_SOURCE_HOVERSEL: elm_hoversel_hover_begin(priv->source_hs); break; + default: + break; } } } @@ -547,8 +563,7 @@ static void _update_time_opt_wgt(struct _priv *priv) return; } - if (priv->datetime) - elm_datetime_value_set(priv->datetime, priv->wut_time); + elm_datetime_value_set(priv->datetime, priv->wut_time); } static void _update_volume_opt_wgt(struct _priv *priv) @@ -587,8 +602,7 @@ static void _update_source_opt_wgt(struct _priv *priv) return; } - if (priv->source_hs) - elm_object_text_set(priv->source_hs, str_source_type_opt[priv->wut_source]); + elm_object_text_set(priv->source_hs, str_source_type_opt[priv->wut_source]); } static void _update_channel_opt_wgt(struct _priv *priv) -- 2.7.4