From: Kwangyoun Kim Date: Mon, 26 Dec 2016 05:05:23 +0000 (+0900) Subject: Apply multi handle for vc widget client X-Git-Tag: submit/tizen/20170117.032501~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F92%2F109992%2F1;p=platform%2Fcore%2Fuifw%2Fvoice-control-elm.git Apply multi handle for vc widget client Change-Id: I30d166cce513abbf4cd0cf1ea096b9c6b7d4896d (cherry picked from commit 5a7d60345473c0e74792996a9d3757521a2bfd0b) --- diff --git a/src/vc_elm.c b/src/vc_elm.c index 18acf2f..0870b0b 100644 --- a/src/vc_elm.c +++ b/src/vc_elm.c @@ -27,7 +27,6 @@ #include "vc_elm_tools.h" #include "vc_elm_tooltip.h" #include "vc_elm_widget_wrapper.h" -#include /** * @brief Internal variable. It can check whether voice control elm is initilaized or not. @@ -232,7 +231,7 @@ int vc_elm_deinitialize() int vc_elm_foreach_supported_languages(vc_elm_supported_language_cb callback, void *user_data) { - int ret; + int ret = 0; if (0 != __vc_elm_get_feature_enabled()) { return VC_ELM_ERROR_NOT_SUPPORTED; } @@ -240,27 +239,13 @@ int vc_elm_foreach_supported_languages(vc_elm_supported_language_cb callback, vo return VC_ELM_ERROR_PERMISSION_DENIED; } - ret = vc_widget_foreach_supported_languages(callback, user_data); - switch (ret) { - case VC_ERROR_NONE: - ret = VC_ELM_ERROR_NONE; - break; - case VC_ERROR_INVALID_PARAMETER: - ret = VC_ELM_ERROR_INVALID_PARAMETER; - break; - case VC_ERROR_INVALID_STATE: - ret = VC_ELM_ERROR_INVALID_STATE; - break; - default: - ret = VC_ELM_ERROR_OPERATION_FAILED; - break; - } + ret = _vc_elm_widget_wrapper_foreach_supported_languages(callback, user_data); return ret; } int vc_elm_get_current_language(char **language) { - int ret; + int ret = 0; if (0 != __vc_elm_get_feature_enabled()) { return VC_ELM_ERROR_NOT_SUPPORTED; } @@ -268,24 +253,7 @@ int vc_elm_get_current_language(char **language) return VC_ELM_ERROR_PERMISSION_DENIED; } - ret = vc_widget_get_current_language(language); - switch (ret) { - case VC_ERROR_NONE: - ret = VC_ELM_ERROR_NONE; - break; - case VC_ERROR_INVALID_PARAMETER: - ret = VC_ELM_ERROR_INVALID_PARAMETER; - break; - case VC_ERROR_OUT_OF_MEMORY: - ret = VC_ELM_ERROR_OUT_OF_MEMORY; - break; - case VC_ERROR_INVALID_STATE: - ret = VC_ELM_ERROR_INVALID_STATE; - break; - default: - ret = VC_ELM_ERROR_OPERATION_FAILED; - break; - } + ret = _vc_elm_widget_wrapper_get_current_language(language); return ret; } diff --git a/src/vc_elm_core.c b/src/vc_elm_core.c index 66519d5..42b2060 100644 --- a/src/vc_elm_core.c +++ b/src/vc_elm_core.c @@ -192,8 +192,6 @@ static void __rotation(void *data, Evas_Object *obj, void *event_info); static int __is_hidden_widget(Evas_Object *obj); -static void __vc_elm_core_free_default_actions(); - /** * @brief Function that returns the name of the widget * @param[in] handle to widget's Evas_Object structure @@ -333,7 +331,7 @@ Eina_Bool _recognize_command(const char *cmd, const char *param1, const char *pa while (NULL != parent_info) { if (EINA_TRUE == parent_info->focusable) { VC_ELM_LOG_DBG("Focusable Parent"); - char* widget_type = elm_widget_type_get((parent_info->address)); + char* widget_type = elm_widget_type_get((Evas_Object*)(parent_info->address)); VC_ELM_LOG_DBG("type (%s)", widget_type); Elm_Object_Item* item = NULL; if (NULL != widget_type && !strcmp(widget_type, "Elm_Genlist")) { @@ -416,6 +414,7 @@ static void __widget_info_free_cb(void *entry) unsigned int idx; for (idx = 0; idx < info->actions_count; ++idx) eina_stringshare_del(info->actions[idx].name); + free(info->actions); free(info); } @@ -470,8 +469,6 @@ void _vc_elm_core_fini() g_allowed_text_part_list = NULL; } - __vc_elm_core_free_default_actions(); - eina_hash_free(g_widget_info_hash); g_widget_info_hash = NULL; @@ -1016,45 +1013,6 @@ struct vc_elm_core_widget_info *_vc_elm_core_register_widget(const char *widget_ return info; } -static void __vc_elm_core_free_action(const char* widget_name) -{ - struct vc_elm_core_widget_info *info = NULL; - info = eina_hash_find(g_widget_info_hash, widget_name); - - if (!info) { - VC_ELM_LOG_ERR("Widget was not registered: %s", widget_name); - } else { - free(info->actions); - info->actions = NULL; - VC_ELM_LOG_ERR("Widget action is freed: %s", widget_name); - } -} - -static void __vc_elm_core_free_default_actions() -{ - __vc_elm_core_free_action("Elm_Genlist"); - __vc_elm_core_free_action("Elm_Radio"); - __vc_elm_core_free_action("Elm_Bubble"); - __vc_elm_core_free_action("Elm_Check"); - __vc_elm_core_free_action("Elm_List"); - __vc_elm_core_free_action("Elm_Slider"); - __vc_elm_core_free_action("Elm_Colorselector"); - __vc_elm_core_free_action("simple_hue_colorbar_activator"); - __vc_elm_core_free_action("simple_saturation_colorbar_activator"); - __vc_elm_core_free_action("simple_value_colorbar_activator"); - __vc_elm_core_free_action("Elm_Spinner"); - __vc_elm_core_free_action("Elm_Panes"); - __vc_elm_core_free_action("Elm_Toolbar"); - __vc_elm_core_free_action("Elm_Entry"); - __vc_elm_core_free_action("Elm_Multibuttonentry"); - __vc_elm_core_free_action("elm_item"); - __vc_elm_core_free_action("Elm_Gengrid"); - __vc_elm_core_free_action("Elm_Button"); - __vc_elm_core_free_action("Elm_Scroller"); - __vc_elm_core_free_action("Elm_Hoversel"); - __vc_elm_core_free_action("Elm_Label"); -} - void _vc_elm_core_register_action(struct vc_elm_core_widget_info *info, const char *action_name, void *data, vc_elm_action_activator_cb action_activator_func) { unsigned int idx = 0; diff --git a/src/vc_elm_widget_wrapper.c b/src/vc_elm_widget_wrapper.c index b36b929..26258ce 100644 --- a/src/vc_elm_widget_wrapper.c +++ b/src/vc_elm_widget_wrapper.c @@ -35,6 +35,8 @@ struct __voice_control_wrapper_s { static struct __voice_control_wrapper_s vcw = {0, 0, 0, 0, 0, 0, 0, 0}; +static vc_h g_vc_w; + static void __vc_state_changed_cb(vc_state_e previous, vc_state_e current, void *user_data); static void __vc_service_state_changed_cb(vc_service_state_e previous, vc_service_state_e current, void *user_data); static void __vc_error_cb(vc_error_e reason, void *user_data); @@ -90,15 +92,15 @@ int _vc_elm_widget_wrapper_initialize() } vcw.initialized = 1; - VC_ERROR_CHECK(vc_widget_initialize()); - VC_ERROR_CHECK(vc_widget_set_error_cb(&__vc_error_cb, NULL)); - VC_ERROR_CHECK(vc_widget_set_show_tooltip_cb(&__vc_show_tooltip_callback, NULL)); - VC_ERROR_CHECK(vc_widget_set_result_cb(&__vc_result_cb, NULL)); - VC_ERROR_CHECK(vc_widget_set_state_changed_cb(&__vc_state_changed_cb, NULL)); - VC_ERROR_CHECK(vc_widget_set_service_state_changed_cb(&__vc_service_state_changed_cb, NULL)); - VC_ERROR_CHECK(vc_widget_set_current_language_changed_cb(&__vc_language_changed_cb, NULL)); - VC_ERROR_CHECK(vc_widget_set_send_current_command_list_cb(__vc_widget_send_current_command_group_cb, NULL)); - VC_ERROR_CHECK(vc_widget_prepare()); + VC_ERROR_CHECK(vc_widget_initialize(&g_vc_w)); + VC_ERROR_CHECK(vc_widget_set_error_cb(g_vc_w, &__vc_error_cb, NULL)); + VC_ERROR_CHECK(vc_widget_set_show_tooltip_cb(g_vc_w, &__vc_show_tooltip_callback, NULL)); + VC_ERROR_CHECK(vc_widget_set_result_cb(g_vc_w, &__vc_result_cb, NULL)); + VC_ERROR_CHECK(vc_widget_set_state_changed_cb(g_vc_w, &__vc_state_changed_cb, NULL)); + VC_ERROR_CHECK(vc_widget_set_service_state_changed_cb(g_vc_w, &__vc_service_state_changed_cb, NULL)); + VC_ERROR_CHECK(vc_widget_set_current_language_changed_cb(g_vc_w, &__vc_language_changed_cb, NULL)); + VC_ERROR_CHECK(vc_widget_set_send_current_command_list_cb(g_vc_w, __vc_widget_send_current_command_group_cb, NULL)); + VC_ERROR_CHECK(vc_widget_prepare(g_vc_w)); VC_ELM_LOG_DBG("VC default language used %s", lang); vcw.lang = lang; @@ -117,8 +119,8 @@ int _vc_elm_widget_wrapper_deinitialize() vcw.lang = NULL; } - VC_ERROR_CHECK(vc_widget_unprepare()); - VC_ERROR_CHECK(vc_widget_deinitialize()); + VC_ERROR_CHECK(vc_widget_unprepare(g_vc_w)); + VC_ERROR_CHECK(vc_widget_deinitialize(g_vc_w)); vcw.initialized = 0; return 0; @@ -220,7 +222,7 @@ static void __vc_state_changed_cb(vc_state_e previous, vc_state_e current, void case VC_STATE_READY: curr = "VC_STATE_READY"; //vc_widget_set_foreground(EINA_TRUE); - vc_widget_get_current_language(&tmp_lang); + vc_widget_get_current_language(g_vc_w, &tmp_lang); if (NULL != tmp_lang) { int ret = asprintf(&lang, "%s.UTF-8", tmp_lang); if (-1 == ret) { @@ -382,10 +384,67 @@ int _vc_elm_widget_wrapper_cancel() int ret = VC_ELM_ERROR_NONE; VC_ELM_LOG_DBG("==========="); - ret = vc_widget_cancel(); + ret = vc_widget_cancel(g_vc_w); if (VC_ELM_ERROR_NONE != ret) { VC_ELM_LOG_ERR("Error while widget cancel (%d)", ret); } return ret; } +int _vc_elm_widget_wrapper_foreach_supported_languages(vc_elm_supported_language_cb callback, void *data) +{ + int ret = VC_ELM_ERROR_NONE; + VC_ELM_LOG_DBG("=========="); + + ret = vc_widget_foreach_supported_languages(g_vc_w, callback, data); + switch (ret) { + case VC_ERROR_NONE: + ret = VC_ELM_ERROR_NONE; + break; + case VC_ERROR_INVALID_PARAMETER: + ret = VC_ELM_ERROR_INVALID_PARAMETER; + break; + case VC_ERROR_INVALID_STATE: + ret = VC_ELM_ERROR_INVALID_STATE; + break; + default: + ret = VC_ELM_ERROR_OPERATION_FAILED; + break; + } + + if (VC_ELM_ERROR_NONE != ret) { + VC_ELM_LOG_ERR("[ERROR] Fail to foreach supported langauge(%d)", ret); + } + + return ret; +} + +int _vc_elm_widget_wrapper_get_current_language(char** language) +{ + int ret = VC_ELM_ERROR_NONE; + VC_ELM_LOG_DBG("=========="); + + ret = vc_widget_get_current_language(g_vc_w, language); + switch (ret) { + case VC_ERROR_NONE: + ret = VC_ELM_ERROR_NONE; + break; + case VC_ERROR_INVALID_PARAMETER: + ret = VC_ELM_ERROR_INVALID_PARAMETER; + break; + case VC_ERROR_OUT_OF_MEMORY: + ret = VC_ELM_ERROR_OUT_OF_MEMORY; + break; + case VC_ERROR_INVALID_STATE: + ret = VC_ELM_ERROR_INVALID_STATE; + break; + default: + ret = VC_ELM_ERROR_OPERATION_FAILED; + break; + } + + if (VC_ELM_ERROR_NONE != ret) { + VC_ELM_LOG_ERR("[ERROR] Fail to get current language(%d)", ret); + } + return ret; +} \ No newline at end of file diff --git a/src/vc_elm_widget_wrapper.h b/src/vc_elm_widget_wrapper.h index 64f6298..cb357f4 100644 --- a/src/vc_elm_widget_wrapper.h +++ b/src/vc_elm_widget_wrapper.h @@ -24,6 +24,7 @@ extern "C" { #include +#include "vc_elm.h" typedef int (*vc_elm_widget_wrapper_result_cb)(const char *cmd, const char *param1, const char *param2, void *data); @@ -69,6 +70,10 @@ void _vc_elm_widget_wrapper_clear_commands(); int _vc_elm_widget_wrapper_cancel(); +int _vc_elm_widget_wrapper_foreach_supported_languages(vc_elm_supported_language_cb callback, void *data); + +int _vc_elm_widget_wrapper_get_current_language(char** language); + #ifdef __cplusplus } #endif