#define CALLUI_KEY_VOLUMEUP "XF86AudioRaiseVolume"
#define CALLUI_KEY_VOLUMEDOWN "XF86AudioLowerVolume"
-#define CALLUI_MEDIA_KEY_LONG_PRESS_TIMEOUT_SEC 1.0
+#define CALLUI_MEDIA_KEY_LONG_PRESS_TIMEOUT_SEC 1.0
#define CALLUI_APP_STATE_TIMEOUT_SEC 0.3
#define CALLUI_POWERKEY_PRESS_TIME_LIMIT_SEC 0.1
static void __set_main_win_key_grab(callui_app_data_t *ad);
static void __set_main_power_key_grab(callui_app_data_t *ad);
static void __powerkey_mode_changed_cb(keynode_t *node, void *user_data);
+static void __homekey_mode_changed_cb(keynode_t *node, void *user_data);
static void __unset_main_win_key_grab(callui_app_data_t *ad);
static void __process_power_key_up(callui_app_data_t *ad);
static void __process_home_key_up(callui_app_data_t *ad);
__set_main_power_key_grab(user_data);
}
+static void __homekey_mode_changed_cb(keynode_t *node, void *user_data)
+{
+ CALLUI_RETURN_IF_FAIL(user_data);
+
+ callui_app_data_t *ad = user_data;
+
+ if (_callui_vm_get_cur_view_type(ad->view_manager) == CALLUI_VIEW_INCOMING_CALL_NOTI) {
+ if (_callui_common_is_homekey_answering_call_mode_on()) {
+ _callui_window_set_keygrab_mode(ad->window, CALLUI_KEY_HOME, CALLUI_WIN_KEYGRAB_EXCLUSIVE);
+ } else {
+ _callui_window_unset_keygrab_mode(ad->window, CALLUI_KEY_HOME);
+ }
+ }
+}
+
static void __set_main_win_key_grab(callui_app_data_t *ad)
{
int res = _callui_window_set_keygrab_mode(ad->window, CALLUI_KEY_MEDIA, CALLUI_WIN_KEYGRAB_EXCLUSIVE);
__set_main_power_key_grab(ad);
vconf_notify_key_changed(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, __powerkey_mode_changed_cb, ad);
+
+ vconf_notify_key_changed(VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, __homekey_mode_changed_cb, ad);
}
static void __unset_main_win_key_grab(callui_app_data_t *ad)
_callui_window_unset_keygrab_mode(ad->window, CALLUI_KEY_MEDIA);
vconf_ignore_key_changed(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, __powerkey_mode_changed_cb);
+
+ vconf_ignore_key_changed(VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, __homekey_mode_changed_cb);
}
static void __add_ecore_event_key_handlers(callui_app_data_t *ad)
debug_enter();
if (_callui_window_unset_keygrab_mode(ad->window, CALLUI_KEY_HOME) != CALLUI_RESULT_OK) {
- dbg("KEY_SELECT key ungrab failed");
+ dbg("Can not unset keygrab for KEY_HOME failed. Probably keygrab was not set");
}
callui_view_type_e view_type = _callui_vm_get_cur_view_type(ad->view_manager);
&& !_callui_dpm_is_need_enforce_change_password(ad->dpm)) {
_callui_common_unlock_swipe_lock();
}
- } else if (ad->second_call_popup == NULL) {
- dbg("Show popup - 2nd MT call - test volume popup");
- _callui_load_second_call_popup(ad);
+ } else {
+ if (!ad->second_call_popup) {
+ dbg("Show 2nd MT call popup");
+ _callui_load_second_call_popup(ad);
+ }
+ _callui_window_set_keygrab_mode(ad->window, CALLUI_KEY_HOME, CALLUI_WIN_KEYGRAB_EXCLUSIVE);
}
} else {
- callui_win_keygrab_mode_e keygrab_mode = CALLUI_WIN_KEYGRAB_TOPMOST;
+ callui_win_keygrab_mode_e keygrab_mode = CALLUI_WIN_KEYGRAB_EXCLUSIVE;
if (view_type == CALLUI_VIEW_INCOMING_CALL_NOTI) {
keygrab_mode = CALLUI_WIN_KEYGRAB_SHARED;
}
- if (_callui_window_set_keygrab_mode(ad->window,
- CALLUI_KEY_HOME, keygrab_mode) != CALLUI_RESULT_OK) {
- dbg("KEY_HOME key grab failed");
- }
+ _callui_window_set_keygrab_mode(ad->window, CALLUI_KEY_HOME, keygrab_mode);
}
} else if (view_type == CALLUI_VIEW_ENDCALL) {
_callui_common_exit_app();