Apply multi handle for vc widget client 92/109992/1
authorKwangyoun Kim <ky85.kim@samsung.com>
Mon, 26 Dec 2016 05:05:23 +0000 (14:05 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Thu, 12 Jan 2017 10:51:36 +0000 (02:51 -0800)
Change-Id: I30d166cce513abbf4cd0cf1ea096b9c6b7d4896d
(cherry picked from commit 5a7d60345473c0e74792996a9d3757521a2bfd0b)

src/vc_elm.c
src/vc_elm_core.c
src/vc_elm_widget_wrapper.c
src/vc_elm_widget_wrapper.h

index 18acf2f..0870b0b 100644 (file)
@@ -27,7 +27,6 @@
 #include "vc_elm_tools.h"
 #include "vc_elm_tooltip.h"
 #include "vc_elm_widget_wrapper.h"
-#include <voice_control_widget.h>
 
 /**
 * @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;
 }
 
index 66519d5..42b2060 100644 (file)
@@ -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;
index b36b929..26258ce 100644 (file)
@@ -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
index 64f6298..cb357f4 100644 (file)
@@ -24,6 +24,7 @@ extern "C" {
 
 
 #include <stdbool.h>
+#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