using SettingAccessibility.TextResources;
using Tizen.Uix.Tts;
using SettingCore.Views;
+using System.Threading.Tasks;
+using Tizen.Applications;
namespace SettingAccessibility
{
private static readonly string VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_HAPTIC = "db/setting/accessibility/screen_reader/haptic";
private static readonly string VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_SOUND_FEEDBACK = "db/setting/accessibility/screen_reader/sound_feedback";
-
private View scrollableContent;
- private IList<View> sections = new List<View>();
static Dictionary<Voice, string> voiceTypeResourceKeys = new Dictionary<Voice, string>
{
Interop.TTS.Setting.Initialize();
- // log debug information
- var tts = new Tizen.Uix.Tts.TtsClient();
- var defaultVoice = tts.DefaultVoice;
- Tizen.Log.Verbose("SettingTalkBack", $"DefaultVoice Type: {defaultVoice.VoiceType}, Language: {defaultVoice.Language}");
- Tizen.Log.Verbose("SettingTalkBack", $"IsScreenReaderOn: {tts.IsScreenReaderOn}");
- var speedRange = tts.GetSpeedRange();
- Tizen.Log.Verbose("SettingTalkBack", $"Speed Range Min: {speedRange.Min}, Normal: {speedRange.Normal}, Max: {speedRange.Max}");
- var supportedVoices = tts.GetSupportedVoices();
- foreach (var voice in supportedVoices)
- {
- Tizen.Log.Verbose("SettingTalkBack", $"SupportedVoices Type: {voice.VoiceType}, Language: {voice.Language}");
- }
-
scrollableContent = new ScrollableBase()
{
WidthSpecification = LayoutParamPolicies.MatchParent,
};
CreateContent();
-
return scrollableContent;
}
- private void CreateContent()
+ private async Task CreateScreenReader()
{
- // remove all sections from scrollable content
- foreach (var view in sections)
+ await CoreApplication.Post(() =>
{
- scrollableContent.Remove(view);
- }
- sections.Clear();
+ Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, out bool isScreenReaderOn);
+ // TODO: replace fixed string with Resources dictionary
+ var screenReader = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_SCREEN_READER_TTS)), isSelected: isScreenReaderOn);
+ screenReader.Switch.SelectedChanged += (s, e) =>
+ {
+ Tizen.Log.Debug("SettingTalkBack", $"ScreenReader selection changed");
+ Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, e.IsSelected);
+ };
+ scrollableContent.Add(screenReader);
- Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, out bool isScreenReaderOn);
- // TODO: replace fixed string with Resources dictionary
- var screenReader = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_SCREEN_READER_TTS)), isSelected: isScreenReaderOn);
- screenReader.Switch.SelectedChanged += (s, e) => {
- Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, e.IsSelected);
- };
- sections.Add(screenReader);
+ Tizen.Log.Debug("SettingTalkBack", "CreateScreenReader Created");
+ return true;
+ });
+ }
- var info = new TextLabel
+ private async Task CreateInfo()
+ {
+ await CoreApplication.Post(() =>
{
- Text = NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ACCS_BODY_WHILE_SCREEN_READER_IS_ENABLED_YOUR_PHONE_WILL_PROVIDE_VOICE_FEEDBACK_FOR_EXAMPLE_SCREEN_READER_WILL_MSG)),
- MultiLine = true,
- PixelSize = 24.SpToPx(),
- TextColor = new Color("#83868F"),
- WidthSpecification = LayoutParamPolicies.MatchParent,
- Margin = new Extents(16, 16, 8, 8).SpToPx(),
- };
- sections.Add(info);
+ TextLabel info = new TextLabel
+ {
+ Text = NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ACCS_BODY_WHILE_SCREEN_READER_IS_ENABLED_YOUR_PHONE_WILL_PROVIDE_VOICE_FEEDBACK_FOR_EXAMPLE_SCREEN_READER_WILL_MSG)),
+ MultiLine = true,
+ PixelSize = 24.SpToPx(),
+ TextColor = new Color("#83868F"),
+ WidthSpecification = LayoutParamPolicies.MatchParent,
+ Margin = new Extents(16, 16, 8, 8).SpToPx(),
+ };
+ scrollableContent.Add(info);
+ Tizen.Log.Debug("SettingTalkBack", "CreateInfo Created");
+ return true;
+ });
+ }
+
+ private async Task CreateLanguage()
+ {
var tts = new Tizen.Uix.Tts.TtsClient();
var defaultVoice = tts.DefaultVoice;
- var speedRange = tts.GetSpeedRange();
tts.Dispose();
+ await CoreApplication.Post(() =>
+ {
+ var language = SettingCore.Views.TextListItem.CreatePrimaryTextItemWithSecondaryText(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_VOICE_TYPE_AND_LANGUAGE)), $"{GetName(defaultVoice)}, {defaultVoice.Language}");
+ language.Clicked += (s, e) =>
+ {
+ NavigateTo(MenuProvider.TalkBack_Language);
+ };
+ scrollableContent.Add(language);
+
+ Tizen.Log.Debug("SettingTalkBack", "CreateLanguage Created");
+ return true;
+ });
+ }
- var language = SettingCore.Views.TextListItem.CreatePrimaryTextItemWithSecondaryText(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_VOICE_TYPE_AND_LANGUAGE)), $"{GetName(defaultVoice)}, {defaultVoice.Language}");
- language.Clicked += (s, e) =>
+ private async Task CreateVolume()
+ {
+ await CoreApplication.Post(() =>
{
- NavigateTo(MenuProvider.TalkBack_Language);
- };
- sections.Add(language);
+ var volume = SettingCore.Views.TextListItem.CreatePrimaryTextItemWithSecondaryText(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_VOICE_VOLUME)), "75%");
+ volume.IsEnabled = false;
+ scrollableContent.Add(volume);
+
+ Tizen.Log.Debug("SettingTalkBack", "Volume Created");
+ return true;
+ });
+ }
- var volume = SettingCore.Views.TextListItem.CreatePrimaryTextItemWithSecondaryText(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_VOICE_VOLUME)), "75%");
- volume.IsEnabled = false;
- sections.Add(volume);
+ private async Task CreateSpeechRate()
+ {
+ var tts = new Tizen.Uix.Tts.TtsClient();
+ var speedRange = tts.GetSpeedRange();
// The range of TTS speed is 1 to 15. (Normal is 8)
- var speechRate = new SpeechRateRow();
+ SpeechRateRow speechRate = new SpeechRateRow();
speechRate.Slider.MinValue = speedRange.Min;
speechRate.Slider.MaxValue = speedRange.Max;
speechRate.Slider.CurrentValue = speedRange.Normal;
- speechRate.Slider.ValueChanged += (s, e) =>
+ await CoreApplication.Post(() =>
{
- double ratio = (double)(e.CurrentValue - speechRate.Slider.MinValue) / (speechRate.Slider.MaxValue - speechRate.Slider.MinValue);
- int speed = (int)((speedRange.Max - speedRange.Min) * ratio + speedRange.Min);
- SettingCore.Logger.Verbose($"Speech rate {speed}");
+ speechRate.Slider.ValueChanged += (s, e) =>
+ {
+ double ratio = (double)(e.CurrentValue - speechRate.Slider.MinValue) / (speechRate.Slider.MaxValue - speechRate.Slider.MinValue);
+ int speed = (int)((speedRange.Max - speedRange.Min) * ratio + speedRange.Min);
+ SettingCore.Logger.Verbose($"Speech rate {speed}");
- Interop.TTS.Setting.SetSpeed(speed);
- };
- sections.Add(speechRate);
+ Interop.TTS.Setting.SetSpeed(speed);
+ };
+
+ scrollableContent.Add(speechRate);
+ tts.Dispose();
+
+ Tizen.Log.Debug("SettingTalkBack", "SpeechRate Created");
+ return true;
+ });
+ }
+ private void CreateKeyboardFeedback()
+ {
Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_KEYBOARD_FEEDBACK, out bool keyboardFeedbackValue);
var keyboardFeedback = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_KEYBOARD_FEEDBACK)), NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_KEYBOARD_INPUT_ALOAD)), keyboardFeedbackValue);
keyboardFeedback.Switch.SelectedChanged += (s, e) =>
{
+ Tizen.Log.Debug("SettingTalkBack", $"KeyboardFeedback selection changed");
Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_KEYBOARD_FEEDBACK, e.IsSelected);
};
- sections.Add(keyboardFeedback);
+ scrollableContent.Add(keyboardFeedback);
+
+ Tizen.Log.Debug("SettingTalkBack", "KeyboardFeedback Created");
+ }
+ private void CreateReadUsageHintsAloud()
+ {
Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_DESCRIPTION, out bool readUsageHintsAloudValue);
var readUsageHintsAloud = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_READ_USAGE_HINTS_ALOAD)), isSelected: readUsageHintsAloudValue);
readUsageHintsAloud.Switch.SelectedChanged += (s, e) =>
{
+ Tizen.Log.Debug("SettingTalkBack", $"ReadUsageHintsAloud selection changed");
Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_DESCRIPTION, e.IsSelected);
};
- sections.Add(readUsageHintsAloud);
+ scrollableContent.Add(readUsageHintsAloud);
- Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_HAPTIC, out bool vibrationFeedbackValue);
- var vibrationFeedback = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_VIBRATION_FEEDBACK)), isSelected: vibrationFeedbackValue);
- vibrationFeedback.Switch.SelectedChanged += (s, e) =>
- {
- Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_HAPTIC, e.IsSelected);
- };
- sections.Add(vibrationFeedback);
+ Tizen.Log.Debug("SettingTalkBack", "ReadUsageHintsAloud Created");
+ }
- Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_SOUND_FEEDBACK, out bool soundFeedbackValue);
- var soundFeedback = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_SOUND_FEEDBACK)), isSelected: soundFeedbackValue);
- soundFeedback.Switch.SelectedChanged += (s, e) =>
+ private async Task CreateVibrationFeedback()
+ {
+ await CoreApplication.Post(() =>
{
- Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_SOUND_FEEDBACK, e.IsSelected);
- };
- sections.Add(soundFeedback);
+ Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_HAPTIC, out bool vibrationFeedbackValue);
+ var vibrationFeedback = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_VIBRATION_FEEDBACK)), isSelected: vibrationFeedbackValue);
+ vibrationFeedback.Switch.SelectedChanged += (s, e) =>
+ {
+ Tizen.Log.Debug("SettingTalkBack", $"VibrationFeedback selection changed");
+ Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_HAPTIC, e.IsSelected);
+ };
+ scrollableContent.Add(vibrationFeedback);
- // TODO: replace fixed string with Resources dictionary
- var statusBarInformation = SettingCore.Views.TextListItem.CreatePrimaryTextItemWithSubText(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_STATUS_BAR_INFO)), NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_STATUS_BAR_INFO_DESCRIPTION)));
- statusBarInformation.Clicked += (s, e) =>
+ Tizen.Log.Debug("SettingTalkBack", "VibrationFeedback Created");
+ return true;
+ });
+ }
+
+ private async Task CreateSoundFeedback()
+ {
+ await CoreApplication.Post(() =>
{
- NavigateTo(MenuProvider.TalkBack_StatusBar);
- };
- sections.Add(statusBarInformation);
+ Interop.Vconf.GetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_SOUND_FEEDBACK, out bool soundFeedbackValue);
+ var soundFeedback = new SettingCore.Views.SwitchListItem(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_SOUND_FEEDBACK)), isSelected: soundFeedbackValue);
+ soundFeedback.Switch.SelectedChanged += (s, e) =>
+ {
+ Tizen.Log.Debug("SettingTalkBack", $"SoundFeedback selection changed");
+ Interop.Vconf.SetVconfBool(VCONFKEY_SETAPPL_ACCESSIBILITY_SCREEN_READER_SOUND_FEEDBACK, e.IsSelected);
+ };
+ scrollableContent.Add(soundFeedback);
+
+ Tizen.Log.Debug("SettingTalkBack", "SoundFeedback Created");
+ return true;
+ });
+ }
- // add all sections to scrollable content
- foreach (var view in sections)
+ private async Task CreateStatusBarInformation()
+ {
+ await CoreApplication.Post(() =>
{
- scrollableContent.Add(view);
- }
+ // TODO: replace fixed string with Resources dictionary
+ var statusBarInformation = SettingCore.Views.TextListItem.CreatePrimaryTextItemWithSubText(NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_STATUS_BAR_INFO)), NUIGadgetResourceManager.GetString(nameof(Resources.IDS_ST_TTS_STATUS_BAR_INFO_DESCRIPTION)));
+ statusBarInformation.Clicked += (s, e) =>
+ {
+ NavigateTo(MenuProvider.TalkBack_StatusBar);
+ };
+ scrollableContent.Add(statusBarInformation);
+
+ Tizen.Log.Debug("SettingTalkBack", "StatusBarInformation Created");
+ return true;
+ });
+ }
+
+ private async Task CreateContent()
+ {
+ await CreateScreenReader();
+ await CreateInfo();
+ await CreateLanguage();
+ await CreateVolume();
+ await CreateSpeechRate();
+
+ CreateKeyboardFeedback();
+ CreateReadUsageHintsAloud();
+ CreateVibrationFeedback();
+ CreateSoundFeedback();
+ CreateStatusBarInformation();
}
private string GetName(SupportedVoice defaultVoice)
base.OnDestroy();
}
}
-}
+}
\ No newline at end of file