summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSoohye Shin <soohye.shin@samsung.com>2015-08-07 10:19:35 +0900
committerSoohye Shin <soohye.shin@samsung.com>2015-08-07 10:37:27 +0900
commitcd8cfe1de5ea710b3c3ac2f2201e7b1f9edfa809 (patch)
tree3155b6c42f098ea22d9a12f17cc1670517dbe495
parent2e0f7d5fb82409e9fc9c79d0c1ab1add5b287f65 (diff)
downloadair_home-cd8cfe1de5ea710b3c3ac2f2201e7b1f9edfa809.tar.gz
air_home-cd8cfe1de5ea710b3c3ac2f2201e7b1f9edfa809.tar.bz2
air_home-cd8cfe1de5ea710b3c3ac2f2201e7b1f9edfa809.zip
set keygrab power key for launching infosquare
Change-Id: I3725c0e0706b89d99259565ba0e4cb090248a21f Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
-rw-r--r--include/defs.h2
-rw-r--r--src/main.c46
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"
diff --git a/src/main.c b/src/main.c
index 643f7be..03922c7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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);
}