Remove unnecessary log
[platform/core/uifw/multi-assistant-service.git] / plugins / wakeup-manager / dependency-default / src / dependency_default_button.cpp
1 #include "dependency_default_button.h"
2
3 #include <chrono>
4
5 using namespace std;
6
7 #define EFL_BETA_API_SUPPORT
8
9 #include <dlog.h>
10 #include <Ecore.h>
11 #include <Ecore_Input.h>
12 #include <Ecore_Wl2.h>
13
14 static mas_dependency_plugin_proxy_interface g_proxy_interface;
15
16 static Ecore_Event_Handler* g_key_down_handler = NULL;
17 static Ecore_Event_Handler* g_key_up_handler = NULL;
18
19 static chrono::time_point<chrono::system_clock> g_last_time_point;
20 static bool g_voice_key_pressed = false;
21
22 #define VOICE_KEY "XF86AudioPlayPause"
23
24 static Eina_Bool _key_down_cb(void* data, int type, void* event)
25 {
26         Ecore_Event_Key *ev = (Ecore_Event_Key *) event;
27         if (ev) {
28                 LOGD("KEY[%s], type[%d]", ev->keyname, type);
29
30                 if (ev->keyname && strncmp(ev->keyname, VOICE_KEY, strlen(VOICE_KEY)) == 0 ) {
31                         chrono::time_point<chrono::system_clock> current_time_point;
32                         current_time_point = chrono::system_clock::now();
33                         auto diff = current_time_point - g_last_time_point;
34                         auto milliseconds = chrono::duration_cast<chrono::milliseconds>(diff).count();
35                         /* If double click detected within 500 msec */
36                         if (milliseconds < 500) {
37                                 if (g_proxy_interface.process_event) {
38                                         g_proxy_interface.process_event(MAS_PLUGIN_EVENT_VOICE_KEY_PRESSED, NULL, 0);
39                                         g_voice_key_pressed = true;
40                                 }
41                         }
42                         g_last_time_point = current_time_point;
43                 }
44         }
45
46         return ECORE_CALLBACK_DONE;
47 }
48
49 static Eina_Bool _key_up_cb(void* data, int type, void* event)
50 {
51         Ecore_Event_Key *ev = (Ecore_Event_Key *) event;
52         if (ev) {
53                 LOGD("KEY[%s], type[%d]", ev->keyname, type);
54
55                 if (g_voice_key_pressed &&
56                         ev->keyname && strncmp(ev->keyname, VOICE_KEY, strlen(VOICE_KEY)) == 0) {
57                         mas_plugin_event_e event = MAS_PLUGIN_EVENT_VOICE_KEY_RELEASED_AFTER_PUSH;
58                         if (g_proxy_interface.process_event) {
59                                 g_proxy_interface.process_event(event, NULL, 0);
60                         }
61                 }
62         }
63         return ECORE_CALLBACK_DONE;
64 }
65
66 static bool _grab_voice_key(void)
67 {
68         Eina_Bool ret = true;
69         ret = ecore_wl2_window_keygrab_set(NULL, VOICE_KEY,  0, 0,  0, ECORE_WL2_WINDOW_KEYGRAB_SHARED);
70         LOGD("ecore_wl2_window_keygrab_set ret[%d] [%s]", ret, VOICE_KEY);
71
72         return ret;
73 }
74
75 static bool _ungrab_voice_key(void)
76 {
77         Eina_Bool ret = true;
78         ret = ecore_wl2_window_keygrab_unset(NULL,  VOICE_KEY,  0, 0);
79         LOGD("ecore_wl2_window_keygrab_unset ret[%d] [%s]", ret, VOICE_KEY);
80
81         return ret;
82 }
83
84 static bool _add_key_cb()
85 {
86         if (g_key_down_handler == NULL) {
87                 LOGE("_key_down_handler");
88                 g_key_down_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_down_cb, NULL);
89                 if(g_key_down_handler == NULL) {
90                         LOGE("_key_down_handler == NULL ");
91                 }
92         }
93
94         if (g_key_up_handler == NULL) {
95                 LOGE("_key_down_handler");
96                 g_key_up_handler = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_up_cb, NULL);
97                 if(g_key_up_handler == NULL) {
98                         LOGE("_key_up_handler == NULL ");
99                 }
100         }
101         return true;
102 }
103
104 static bool _delete_key_cb(void)
105 {
106         LOGE("start");
107         if (NULL != g_key_down_handler) {
108                 ecore_event_handler_del(g_key_down_handler);
109                 g_key_down_handler = NULL;
110         }
111
112         if (NULL != g_key_up_handler) {
113                 ecore_event_handler_del(g_key_up_handler);
114                 g_key_up_handler = NULL;
115         }
116         LOGE("end");
117         return true;
118 }
119
120 void dependency_default_button_initialize(mas_dependency_plugin_proxy_interface interface)
121 {
122         g_proxy_interface = interface;
123
124         Ecore_Wl2_Display *_ecore_wl2_display = NULL;
125
126         Eina_Bool ret = ecore_wl2_init();
127         LOGD("ecore_wl2_init: %d", ret);
128
129         _ecore_wl2_display = ecore_wl2_display_connect(NULL);
130         LOGD("_ecore_wl2_display: %p", _ecore_wl2_display);
131
132         g_last_time_point = chrono::system_clock::now();
133         _grab_voice_key();
134         _add_key_cb();
135 }
136
137 void dependency_default_button_deinitialize()
138 {
139         _delete_key_cb();
140         _ungrab_voice_key();
141 }