#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) {
} 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;
}
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;
} else {
res = MA_ERROR_OPERATION_FAILED;
}
-
}
if (enabled_assistants) {
free(enabled_assistants);
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;
}
#endif
/**
- * @brief Set multi-assistant multiple mode.
+ * @brief Check multi-assistant's multiple mode.
* @since_tizen 5.5
* @privlevel public
*
* @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
*/
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
* @}
*/
-#endif /* __TIZEN_UIFW_MULTI_ASSISTANT_SETTINGS_H__ */
\ No newline at end of file
+#endif /* __TIZEN_UIFW_MULTI_ASSISTANT_SETTINGS_H__ */