From: Ji-hoon Lee Date: Thu, 11 Jul 2019 10:46:13 +0000 (+0900) Subject: settings: add getter APIs and fix minor bugs X-Git-Tag: submit/tizen/20190806.020345~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b62ad150ca05ec3303df8bd18938f8a9975e397b;p=platform%2Fcore%2Fuifw%2Fmulti-assistant.git settings: add getter APIs and fix minor bugs Change-Id: Ia3d626e9e4b109cc9d9660779802978199ad92ae --- diff --git a/common/multi_assistant_settings.c b/common/multi_assistant_settings.c index 8533834..f50ce48 100644 --- a/common/multi_assistant_settings.c +++ b/common/multi_assistant_settings.c @@ -19,57 +19,77 @@ #define MAX_LEN 256 -bool ma_settings_get_multiple_mode() { +int ma_settings_is_multiple_mode(bool *multiple) { int res; - vconf_get_bool(MODE_URL, &res); - return res; -} - -int ma_settings_set_multiple_mode(bool multiple) { - if (multiple != ma_settings_get_multiple_mode()) { - if (vconf_set_bool(MODE_URL, multiple)) { + int current_multiple; + if (multiple) { + res = vconf_get_bool(MODE_URL, ¤t_multiple); + if (0 == res) { + *multiple = current_multiple; return MA_ERROR_NONE; } else { return MA_ERROR_OPERATION_FAILED; } + } + return MA_ERROR_INVALID_PARAMETER; +} + +int ma_settings_set_multiple_mode(bool multiple) { + if (0 == vconf_set_bool(MODE_URL, multiple)) { + return MA_ERROR_NONE; + } + return MA_ERROR_OPERATION_FAILED; +} + +int ma_settings_get_current_voice_assistant(char** app_id) { + bool multiple = false; + int res = MA_ERROR_NONE; + + res = ma_settings_is_multiple_mode(&multiple); + if (MA_ERROR_NONE != res) return res; + + char* previous_assistant = vconf_get_str(DEFAULT_ASSISTANT_URL); + if (!multiple && previous_assistant && app_id) { + *app_id = previous_assistant; + res = MA_ERROR_NONE; } else { - return MA_ERROR_OPERATION_FAILED; + res = MA_ERROR_OPERATION_FAILED; + if (previous_assistant) free(previous_assistant); } + + return res; } int ma_settings_change_voice_assistant(const char* app_id) { + bool multiple = false; int res = MA_ERROR_NONE; - char* previous_assistant = vconf_get_str(DEFAULT_ASSISTANT_URL); - if (!ma_settings_get_multiple_mode() && - previous_assistant && - app_id) { - if(strncmp(app_id, previous_assistant, MAX_LEN) != 0) { - if (vconf_set_str(DEFAULT_ASSISTANT_URL, app_id)) { - res = MA_ERROR_NONE; - } else { - res = MA_ERROR_OPERATION_FAILED; - } + res = ma_settings_is_multiple_mode(&multiple); + if (MA_ERROR_NONE != res) return res; + if (!multiple && app_id) { + if (0 == vconf_set_str(DEFAULT_ASSISTANT_URL, app_id)) { + res = MA_ERROR_NONE; } else { - res = MA_ERROR_NOT_SUPPORTED; + res = MA_ERROR_OPERATION_FAILED; } } else { res = MA_ERROR_OPERATION_FAILED; } - if (previous_assistant) { - free(previous_assistant); - } return res; } int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled) { - if (!ma_settings_get_multiple_mode()) { + bool multiple = false; + + int res = ma_settings_is_multiple_mode(&multiple); + if (MA_ERROR_NONE != res) return res; + + if (!multiple) { return MA_ERROR_NOT_SUPPORTED; } - int res = MA_ERROR_NONE; if (NULL != app_id) { char* enabled_assistants = vconf_get_str(ENABLED_ASSISTANT_URL); if (enabled) { @@ -80,7 +100,7 @@ int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled) { } else { char assistants[MAX_LEN] = ""; snprintf(assistants, MAX_LEN, "%s%s;", enabled_assistants, app_id); - if (vconf_set_str(ENABLED_ASSISTANT_URL, assistants)) { + if (0 == vconf_set_str(ENABLED_ASSISTANT_URL, assistants)) { res = MA_ERROR_NONE; } else { res = MA_ERROR_OPERATION_FAILED; @@ -114,7 +134,7 @@ int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled) { } as = strtok_r(rest, ";", &rest); } - if (vconf_set_str(ENABLED_ASSISTANT_URL, assistants)) { + if (0 == vconf_set_str(ENABLED_ASSISTANT_URL, assistants)) { res = MA_ERROR_NONE; } else { res = MA_ERROR_OPERATION_FAILED; @@ -125,7 +145,6 @@ int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled) { } else { res = MA_ERROR_OPERATION_FAILED; } - } if (enabled_assistants) { free(enabled_assistants); @@ -136,26 +155,39 @@ int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled) { return res; } -int ma_settings_set_default_voice_assistant(const char* app_id) { +int ma_settings_get_default_voice_assistant(char** app_id) { + bool multiple = false; int res = MA_ERROR_NONE; + + res = ma_settings_is_multiple_mode(&multiple); + if (MA_ERROR_NONE != res) return res; + char* previous_assistant = vconf_get_str(DEFAULT_ASSISTANT_URL); - if (ma_settings_get_multiple_mode() && - previous_assistant && - app_id) { - if(strncmp(app_id, previous_assistant, MAX_LEN) != 0) { - if (vconf_set_str(DEFAULT_ASSISTANT_URL, app_id)) { - res = MA_ERROR_NONE; - } else { - res = MA_ERROR_OPERATION_FAILED; - } + if (multiple && previous_assistant && app_id) { + *app_id = previous_assistant; + res = MA_ERROR_NONE; + } else { + res = MA_ERROR_OPERATION_FAILED; + if (previous_assistant) free(previous_assistant); + } + return res; +} + +int ma_settings_set_default_voice_assistant(const char* app_id) { + bool multiple = false; + int res = MA_ERROR_NONE; + + res = ma_settings_is_multiple_mode(&multiple); + if (MA_ERROR_NONE != res) return res; + + if (multiple && app_id) { + if (0 == vconf_set_str(DEFAULT_ASSISTANT_URL, app_id)) { + res = MA_ERROR_NONE; } else { - res = MA_ERROR_NOT_SUPPORTED; + res = MA_ERROR_OPERATION_FAILED; } } else { res = MA_ERROR_OPERATION_FAILED; } - if (previous_assistant) { - free(previous_assistant); - } return res; } diff --git a/include/multi_assistant_settings.h b/include/multi_assistant_settings.h index 181ffba..7c35335 100644 --- a/include/multi_assistant_settings.h +++ b/include/multi_assistant_settings.h @@ -29,7 +29,7 @@ extern "C" #endif /** - * @brief Set multi-assistant multiple mode. + * @brief Check multi-assistant's multiple mode. * @since_tizen 5.5 * @privlevel public * @@ -37,10 +37,39 @@ extern "C" * @retval #MA_ERROR_NONE Successful * @retval #MA_ERROR_OPERATION_FAILED Operation failed * - * @param[in] multiple The state of multi-assistant need to be changed into + * @param[out] multiple The current multiple mode of multi-assistant + */ +int ma_settings_is_multiple_mode(bool *multiple); + +/** + * @brief Set multi-assistant's multiple mode. + * @since_tizen 5.5 + * @privlevel public + * + * @return @c 0 on success, otherwise a negative error value + * @retval #MA_ERROR_NONE Successful + * @retval #MA_ERROR_OPERATION_FAILED Operation failed + * + * @param[in] multiple The multiple mode of multi-assistant need to be changed into */ int ma_settings_set_multiple_mode(bool multiple); +/** + * @brief Get system's current voice assistant. + * @since_tizen 5.5 + * @remarks Valid only in single voice assistant mode. + * @remarks The @a app_id should be released using free(). + * @privlevel public + * + * @return @c 0 on success, otherwise a negative error value + * @retval #MA_ERROR_NONE Successful + * @retval #MA_ERROR_NOT_SUPPORTED Not supported + * @retval #MA_ERROR_OPERATION_FAILED Operation failed + * + * @param[out] app_id The app id of the currently activated voice assistant + */ +int ma_settings_get_current_voice_assistant(char** app_id); + /** * @brief Change system's voice assistant. * @since_tizen 5.5 @@ -72,6 +101,22 @@ int ma_settings_change_voice_assistant(const char* app_id); */ int ma_settings_set_voice_assistant_enabled(const char* app_id, bool enabled); +/** + * @brief Retrieve system's default voice assistant. + * @since_tizen 5.5 + * @remarks Valid only in multiple voice assistant mode. + * @remarks The @a app_id should be released using free(). + * @privlevel public + * + * @return @c 0 on success, otherwise a negative error value + * @retval #MA_ERROR_NONE Successful + * @retval #MA_ERROR_NOT_SUPPORTED Not supported + * @retval #MA_ERROR_OPERATION_FAILED Operation failed + * + * @param[out] app_id The app id of the voice assistant currently set as default one + */ +int ma_settings_get_default_voice_assistant(char** app_id); + /** * @brief Change system's default voice assistant. * @since_tizen 5.5 @@ -95,4 +140,4 @@ int ma_settings_set_default_voice_assistant(const char* app_id); * @} */ -#endif /* __TIZEN_UIFW_MULTI_ASSISTANT_SETTINGS_H__ */ \ No newline at end of file +#endif /* __TIZEN_UIFW_MULTI_ASSISTANT_SETTINGS_H__ */