From c9e556f725c4af1f80fbe3485bd4312ce52a119f Mon Sep 17 00:00:00 2001 From: Inhong Han Date: Tue, 2 Jan 2024 16:18:47 +0900 Subject: [PATCH] Support to show splash screen when launching IME in TV Change-Id: I23202590a582a82d3d017cf10730f624f155ef1a --- ism/extras/efl_panel/isf_panel_efl.cpp | 26 +++++++++++++++++++++++--- ism/src/isf_info_manager.cpp | 13 +++++-------- ism/src/isf_info_manager.h | 4 ++-- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/ism/extras/efl_panel/isf_panel_efl.cpp b/ism/extras/efl_panel/isf_panel_efl.cpp index 42153dc..a82aa8d 100644 --- a/ism/extras/efl_panel/isf_panel_efl.cpp +++ b/ism/extras/efl_panel/isf_panel_efl.cpp @@ -241,7 +241,7 @@ static void slot_candidate_will_hide_ack (void); static void slot_set_keyboard_mode (int mode); static void slot_get_ise_state (int &state); -static void slot_start_default_ise (void); +static void slot_start_default_ise (bool show_splash_screen); static void slot_stop_default_ise (bool is_exist); static void slot_run_helper (const String &uuid, const String &config, const String &display); static bool slot_launch_option_application (String ime_appid); @@ -448,6 +448,7 @@ static bool _auto_destroy_ise = false; static bool _soft_keyboard_launched = false; static bool _focus_in = false; static bool _enable_auto_restart = true; +static bool _show_splash_screen = false; #if ISF_BUILD_CANDIDATE_UI static bool candidate_expanded = false; @@ -6174,11 +6175,12 @@ static void slot_get_ise_state (int &state) SCIM_DEBUG_MAIN (3) << __FUNCTION__ << " state = " << state << "\n"; } -static void slot_start_default_ise (void) +static void slot_start_default_ise (bool show_splash_screen) { SCIM_DEBUG_MAIN (3) << __FUNCTION__ << "...\n"; if ((_info_manager->get_current_toolbar_mode () == TOOLBAR_HELPER_MODE)) { + _show_splash_screen = show_splash_screen; String uuid = _config->read (SCIM_CONFIG_DEFAULT_HELPER_ISE, String ("")); int pid = aul_app_get_pid (uuid.c_str ()); if (pid >= 0) { @@ -6194,6 +6196,7 @@ static void slot_start_default_ise (void) else LOGW ("Failed to start helper (%s)", uuid.c_str ()); } + _show_splash_screen = false; } } @@ -6280,7 +6283,24 @@ static bool app_control_launch (const char *app_id) if (_TV) { ret = app_control_add_extra_data(app_control, "__K_EX_FORCE_BOOST", "enable"); if (ret != APP_CONTROL_ERROR_NONE) { - LOGW ("app_control_add_extra_data returned %08x", ret); + LOGW ("app_control_add_extra_data(BOOST) returned %08x", ret); + } + + if (_launch_ise_on_request && _show_splash_screen) { + ret = app_control_add_extra_data(app_control, "__K_SPLASH_SCREEN", "LA_UI_TRANSPARENT"); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGW ("app_control_add_extra_data(SPLASH_SCREEN) returned %08x", ret); + } + + ret = app_control_add_extra_data(app_control, "__K_EX_SPLASH_SCREEN_PROGRESS_BAR", "false"); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGW ("app_control_add_extra_data(SPLASH_SCREEN_PROGRESS_BAR) returned %08x", ret); + } + + ret = app_control_add_extra_data(app_control, "__K_EX_SPLASH_SCREEN_FOCUS", "false"); + if (ret != APP_CONTROL_ERROR_NONE) { + LOGW ("app_control_add_extra_data(SPLASH_SCREEN_FOCUS) returned %08x", ret); + } } } diff --git a/ism/src/isf_info_manager.cpp b/ism/src/isf_info_manager.cpp index 690f564..6ed4afb 100644 --- a/ism/src/isf_info_manager.cpp +++ b/ism/src/isf_info_manager.cpp @@ -338,7 +338,7 @@ class InfoManager::InfoManagerImpl InfoManagerSignalInt m_signal_update_screen; InfoManagerSignalIntIntInt m_signal_update_spot_location; InfoManagerSignalFactoryInfo m_signal_update_factory_info; - InfoManagerSignalVoid m_signal_start_default_ise; + InfoManagerSignalBool m_signal_start_default_ise; InfoManagerSignalBool m_signal_stop_default_ise; InfoManagerSignalIntInt m_signal_update_input_context; InfoManagerSignalString m_signal_update_language_locale; @@ -1543,7 +1543,7 @@ public: bool launch_ise_on_request = scim_global_config_read (String (SCIM_GLOBAL_CONFIG_LAUNCH_ISE_ON_REQUEST), false); bool enable_auto_restart = scim_global_config_read (String (SCIM_GLOBAL_CONFIG_ENABLE_AUTO_RESTART_ISE), true); if (launch_ise_on_request || !enable_auto_restart) - m_signal_start_default_ise (); + m_signal_start_default_ise (true); } } @@ -1599,7 +1599,7 @@ public: m_panel_agent_manager.set_helper_optimization_hint(it->second.id, ctx, m_current_helper_uuid, ISE_OPTIMIZATION_HINT_SHOW_PREPARE); } - m_signal_start_default_ise(); + m_signal_start_default_ise(false); } void set_default_ise (const DEFAULT_ISE_T& ise) { @@ -2428,7 +2428,7 @@ public: return m_signal_update_factory_info.connect (slot); } - Connection signal_connect_start_default_ise (InfoManagerSlotVoid* slot) { + Connection signal_connect_start_default_ise (InfoManagerSlotBool* slot) { return m_signal_start_default_ise.connect (slot); } @@ -2783,9 +2783,6 @@ public: //SCIM_TRANS_CMD_FOCUS_IN void focus_in (int client_id, uint32 context, String uuid) { m_refocus_needed = true; - bool launch_ise_on_request = scim_global_config_read (String (SCIM_GLOBAL_CONFIG_LAUNCH_ISE_ON_REQUEST), false); - if (launch_ise_on_request) - m_signal_start_default_ise (); m_signal_focus_in (); focus_in_helper (m_current_helper_uuid, m_panel_client_map[client_id], context); @@ -5759,7 +5756,7 @@ InfoManager::signal_connect_update_factory_info (InfoManagerSlotFactoryInfo* } Connection -InfoManager::signal_connect_start_default_ise (InfoManagerSlotVoid* slot) +InfoManager::signal_connect_start_default_ise (InfoManagerSlotBool* slot) { return m_impl->signal_connect_start_default_ise (slot); } diff --git a/ism/src/isf_info_manager.h b/ism/src/isf_info_manager.h index f204da5..b1ce910 100644 --- a/ism/src/isf_info_manager.h +++ b/ism/src/isf_info_manager.h @@ -1069,9 +1069,9 @@ public: /** * @brief Signal: start default ise. * - * slot prototype: void start_default_ise (void); + * slot prototype: void start_default_ise (bool); */ - Connection signal_connect_start_default_ise (InfoManagerSlotVoid* slot); + Connection signal_connect_start_default_ise (InfoManagerSlotBool* slot); /** * @brief Signal: stop default ise. -- 2.7.4