return EINA_TRUE;
}
-void _utterance_completed_cb(void *data, const char *say_signal)
-{
- vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, 0);
-}
-
static void setting_accessibility_main_chk_screenreader_vconf_update(int state, void* data)
{
SETTING_TRACE_BEGIN;
retm_if(data == NULL, "Data parameter is NULL");
- if (state) vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, 1);
- else elm_atspi_bridge_utils_say(setting_gettext("IDS_ACCS_SCREEN_READER_OFF"), EINA_FALSE, _utterance_completed_cb, NULL);
+ SettingAccessibility *ad = (SettingAccessibility *)data;
+ int ret, utterance_id;
+ vconf_set_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, state);
+ if (!state) {
+ ret = tts_add_text(ad->tts, setting_gettext("IDS_ACCS_SCREEN_READER_OFF"), NULL, TTS_VOICE_TYPE_AUTO, TTS_SPEED_AUTO, &utterance_id);
+ SETTING_TRACE_DEBUG("tts_add_text %d", ret);
+ ret = tts_play(ad->tts);
+ SETTING_TRACE_DEBUG("tts_play %d", ret);
+ }
+
SETTING_TRACE_END;
}
#define SETTING_ACCESSIBILITY_PACKAGE_NAME "org.tizen.setting-accessibility"
+static const char *get_tts_error(int r)
+{
+ switch (r) {
+ case TTS_ERROR_NONE: {
+ return "no error";
+ }
+ case TTS_ERROR_INVALID_PARAMETER: {
+ return "inv param";
+ }
+ case TTS_ERROR_OUT_OF_MEMORY: {
+ return "out of memory";
+ }
+ case TTS_ERROR_OPERATION_FAILED: {
+ return "oper failed";
+ }
+ case TTS_ERROR_INVALID_STATE: {
+ return "inv state";
+ }
+ default: {
+ return "uknown error";
+ }
+ }
+}
+
+void
+state_changed_cb(tts_h tts, tts_state_e previous, tts_state_e current, void* user_data)
+{
+ SETTING_TRACE_DEBUG(" previous = %d current = %d", previous, current);
+}
+
+int
+create_tts_handle(SettingAccessibility *ad)
+{
+ int ret;
+ ret = tts_create(&(ad->tts));
+ if (ret != 0) {
+ SETTING_TRACE_DEBUG("tts_create %d", get_tts_error(ret));
+ return -1;
+ }
+ ret = tts_set_mode(ad->tts, TTS_MODE_DEFAULT);
+ if (ret != 0) {
+ SETTING_TRACE_DEBUG("tts_set_mode %d", get_tts_error(ret));
+ return -1;
+ }
+ ret = tts_prepare(ad->tts);
+ if (ret != 0) {
+ SETTING_TRACE_DEBUG("tts_prepare %d", get_tts_error(ret));
+ return -1;
+ }
+ ret = tts_set_state_changed_cb(ad->tts, state_changed_cb, ad);
+ if (ret != 0) {
+ SETTING_TRACE_DEBUG("tts_set_state_changed_cb %d", get_tts_error(ret));
+ return -1;
+ }
+ return 0;
+}
+
+void
+destroy_tts_handle(SettingAccessibility *ad)
+{
+ int ret;
+ ret = tts_destroy(ad->tts); /* tts is the TTS handle */
+ if (ret != 0)
+ SETTING_TRACE_DEBUG("Fail to tts destroy");
+}
+
static bool on_app_create(void *priv)
{
SETTING_TRACE_BEGIN;
setting_retvm_if((NULL == priv), NULL, "NULL == priv");
SettingAccessibility *ad = priv;
+ int ret;
setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
setting_view_node_set_cur_view(&setting_view_accessibility_main);
/* creating a view. */
+ ret = create_tts_handle(ad);
+ if (ret == -1) destroy_tts_handle(ad);
setting_view_create(&setting_view_accessibility_main, (void *)ad);
evas_object_show(ad->md.window);
{
SETTING_TRACE_BEGIN;
SettingAccessibility *ad = priv;
+ destroy_tts_handle(ad);
setting_view_destroy(&setting_view_accessibility_main, ad);
SETTING_TRACE_END;
}