From: Sungmin Kwak Date: Fri, 27 Mar 2015 05:09:58 +0000 (+0900) Subject: Add on_check_option_window_availability() X-Git-Tag: submit/tizen/20150611.051311~15 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f93cf7acb5e93505e40b4a4424714479533826de;p=platform%2Fcore%2Fuifw%2Flibscl-core.git Add on_check_option_window_availability() Change-Id: I49d945f847f8a3a9708b5c09e741cbc18454bb36 --- diff --git a/src/sclconnection-isf.cpp b/src/sclconnection-isf.cpp index de8ce57..65b6e60 100644 --- a/src/sclconnection-isf.cpp +++ b/src/sclconnection-isf.cpp @@ -486,6 +486,16 @@ static void slot_show_ise_option_window (const scim::HelperAgent *agent, int ic, } } +static void slot_check_ise_option_window (const scim::HelperAgent *agent, sclu32 &avail) { + CSCLCoreImpl *impl = CSCLCoreImpl::get_instance(); + if (impl) { + ISCLCoreEventCallback *callback = impl->get_core_event_callback(); + if (callback) { + callback->on_check_option_window_availability(reinterpret_cast(&avail)); + } + } +} + static void slot_process_key_event (const scim::HelperAgent *agent, scim::KeyEvent &key, scim::uint32 &ret) { CSCLCoreImpl *impl = CSCLCoreImpl::get_instance(); if (impl) { @@ -598,6 +608,7 @@ sclboolean CSCLConnectionISF::init() m_helper_agent.signal_connect_associate_table_page_down (scim::slot (slot_associate_table_page_down)); m_helper_agent.signal_connect_update_associate_table_page_size (scim::slot (slot_update_associate_table_page_size)); m_helper_agent.signal_connect_show_option_window (scim::slot (slot_show_ise_option_window)); + m_helper_agent.signal_connect_check_option_window (scim::slot (slot_check_ise_option_window)); m_helper_agent.signal_connect_process_key_event (scim::slot (slot_process_key_event)); return ret; diff --git a/src/sclcorecallback.h b/src/sclcorecallback.h index 0b46d32..73db935 100644 --- a/src/sclcorecallback.h +++ b/src/sclcorecallback.h @@ -94,6 +94,7 @@ struct ISCLCoreEventCallback { virtual void on_create_option_window(sclwindow window, SCLOptionWindowType type) {} virtual void on_destroy_option_window(sclwindow window) {} + virtual void on_check_option_window_availability(sclboolean *avail) { if (avail) *avail = false;} }; } diff --git a/src/sclcoreui-efl.cpp b/src/sclcoreui-efl.cpp index 15fab59..085425a 100644 --- a/src/sclcoreui-efl.cpp +++ b/src/sclcoreui-efl.cpp @@ -435,6 +435,22 @@ sclwindow CSCLCoreUIEFL::create_option_window(SCLOptionWindowType type) return SCLWINDOW_INVALID; } + ISCLCoreEventCallback *callback = NULL; + CSCLCoreImpl *impl = CSCLCoreImpl::get_instance(); + if (impl) { + callback = impl->get_core_event_callback(); + if (callback) { + sclboolean ret = false; + callback->on_check_option_window_availability(&ret); + if (ret == false) { + LOGW("on_create_option_window() is not available"); + return SCLWINDOW_INVALID; + } + } + else + return SCLWINDOW_INVALID; + } + /* Just in case the previous option window for setting application exists */ if (type == OPTION_WINDOW_TYPE_SETTING_APPLICATION) { if (m_option_window_info[type].window != SCLWINDOW_INVALID) { @@ -463,12 +479,8 @@ sclwindow CSCLCoreUIEFL::create_option_window(SCLOptionWindowType type) elm_win_indicator_mode_set(window, ELM_WIN_INDICATOR_SHOW); - CSCLCoreImpl *impl = CSCLCoreImpl::get_instance(); - if (impl) { - ISCLCoreEventCallback *callback = impl->get_core_event_callback(); - if (callback) { - callback->on_create_option_window(window, type); - } + if (callback) { + callback->on_create_option_window(window, type); } Ecore_Event_Handler *handler = NULL;