diff options
-rw-r--r-- | include/defs.h | 2 | ||||
-rw-r--r-- | src/main.c | 46 |
2 files changed, 48 insertions, 0 deletions
diff --git a/include/defs.h b/include/defs.h index 141dcb1..54e75a1 100644 --- a/include/defs.h +++ b/include/defs.h @@ -201,10 +201,12 @@ #define KEY_MEDIA "media_id" #define KEY_CHANNEL "service_id" +#define KEY_INFOSQUARE "launch_type" #define PACKAGE_LIVETV "org.tizen.live-tv" #define PACKAGE_MEDIAHUB "org.tizen.mediahub" #define PACKAGE_SETTINGS "org.tizen.settings-tv-ref" +#define PACKAGE_INFOSQUARE "org.tizen.infosquare" #define GUM_ATTR_NAME "username" #define GUM_ATTR_USERTYPE "usertype" @@ -18,15 +18,20 @@ #include <Elementary.h> #include <app_debug.h> #include <viewmgr.h> +#include <key_define.h> #include "defs.h" #include "view.h" +#include "utils.h" + +#define VALUE_INFOSQUARE "infosquare" SET_TAG(PACKAGE); struct _appdata { const char *name; Evas_Object *win; + Ecore_Event_Handler *key_down; }; static Evas_Object *_add_win(const char *name) @@ -44,6 +49,40 @@ static Evas_Object *_add_win(const char *name) return win; } +static Eina_Bool _key_down(void *data, int type, void *ei) +{ + Evas_Event_Key_Down *ev; + + if (!data || !ei) { + _ERR("Invalid argument"); + return ECORE_CALLBACK_CANCEL; + } + + ev = ei; + + if (!strcmp(ev->keyname, KEY_POWER_REMOTE)) { + utils_launch_app(PACKAGE_INFOSQUARE, KEY_INFOSQUARE, + VALUE_INFOSQUARE); + } + + return ECORE_CALLBACK_CANCEL; +} + +/* FIXME: Keygrab Hot Fix */ +static Eina_Bool _key_timer(void *data) +{ + if (!data) { + _ERR("Invalid argument"); + return ECORE_CALLBACK_CANCEL; + } + + elm_win_keygrab_set(data, KEY_POWER_REMOTE, 0, 0, 0, + ELM_WIN_KEYGRAB_EXCLUSIVE); + + return ECORE_CALLBACK_CANCEL; +} + + static bool _create(void *user_data) { struct _appdata *ad; @@ -63,6 +102,7 @@ static bool _create(void *user_data) _ERR("failed to create window"); return false; } + ecore_timer_add(3, _key_timer, ad->win); if (!viewmgr_create(ad->win)) { _ERR("failed to create viewmgr"); @@ -75,6 +115,8 @@ static bool _create(void *user_data) viewmgr_add_view(view_recent_get_vclass(), NULL); viewmgr_add_view(view_user_get_vclass(), NULL); + ad->key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_down, + ad); return true; } @@ -88,6 +130,10 @@ static void _terminate(void *user_data) ad = user_data; if (ad->win) { + if(ad->key_down) + ecore_event_handler_del(ad->key_down); + + elm_win_keygrab_unset(ad->win, KEY_POWER_REMOTE, 0, 0); viewmgr_destroy(); evas_object_del(ad->win); } |