Skip to content

Commit dea5aae

Browse files
authored
Add invert colors accessibility support (#269)
1 parent 1a1d44d commit dea5aae

File tree

2 files changed

+48
-39
lines changed

2 files changed

+48
-39
lines changed

shell/platform/tizen/accessibility_settings.cc

Lines changed: 46 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,48 +9,49 @@
99

1010
// SYSTEM_SETTINGS_KEY_MENU_SYSTEM_ACCESSIBILITY_HIGHCONTRAST = 10059 has been
1111
// defined in system_settings_keys.h only for TV profile.
12-
#define SYSTEM_SETTINGS_KEY_MENU_SYSTEM_ACCESSIBILITY_HIGHCONTRAST 10059
12+
#define SYSTEM_SETTINGS_KEY_ACCESSIBILITY_HIGHCONTRAST \
13+
system_settings_key_e(10059)
1314

1415
namespace flutter {
1516

1617
AccessibilitySettings::AccessibilitySettings(FlutterTizenEngine* engine)
1718
: engine_(engine) {
1819
#ifndef WEARABLE_PROFILE
1920
bool tts_enabled = false;
20-
int result = system_settings_get_value_bool(
21+
int ret = system_settings_get_value_bool(
2122
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS, &tts_enabled);
22-
if (result == SYSTEM_SETTINGS_ERROR_NONE) {
23-
if (tts_enabled) {
24-
screen_reader_enabled_ = tts_enabled;
25-
engine_->SetSemanticsEnabled(tts_enabled);
26-
}
27-
} else {
23+
if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
2824
FT_LOG(Error) << "Failed to get value of accessibility tts.";
2925
}
30-
31-
// Add listener for accessibility tts
26+
if (tts_enabled) {
27+
screen_reader_enabled_ = tts_enabled;
28+
engine_->SetSemanticsEnabled(tts_enabled);
29+
}
3230
system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS,
3331
OnScreenReaderStateChanged, this);
3432
#endif
3533

3634
#ifdef TV_PROFILE
37-
// Set initialized value of accessibility high contrast.
38-
int high_contrast_enabled = 0;
39-
result = system_settings_get_value_int(
40-
system_settings_key_e(
41-
SYSTEM_SETTINGS_KEY_MENU_SYSTEM_ACCESSIBILITY_HIGHCONTRAST),
42-
&high_contrast_enabled);
43-
if (result == SYSTEM_SETTINGS_ERROR_NONE) {
44-
engine_->UpdateAccessibilityFeatures(false, high_contrast_enabled);
45-
} else {
35+
bool nagative_color = false;
36+
ret = system_settings_get_value_bool(
37+
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR, &nagative_color);
38+
if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
39+
FT_LOG(Error) << "Failed to get value of accessibility negative color.";
40+
}
41+
system_settings_set_changed_cb(
42+
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR,
43+
OnAccessibilityFeatureStateChanged, this);
44+
45+
int high_contrast = 0;
46+
ret = system_settings_get_value_int(
47+
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_HIGHCONTRAST, &high_contrast);
48+
if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
4649
FT_LOG(Error) << "Failed to get value of accessibility high contrast.";
4750
}
51+
system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_HIGHCONTRAST,
52+
OnAccessibilityFeatureStateChanged, this);
4853

49-
// Add listener for accessibility high contrast.
50-
system_settings_set_changed_cb(
51-
system_settings_key_e(
52-
SYSTEM_SETTINGS_KEY_MENU_SYSTEM_ACCESSIBILITY_HIGHCONTRAST),
53-
OnHighContrastStateChanged, this);
54+
engine_->UpdateAccessibilityFeatures(nagative_color, high_contrast);
5455
#endif
5556
}
5657

@@ -59,27 +60,34 @@ AccessibilitySettings::~AccessibilitySettings() {
5960
system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_ACCESSIBILITY_TTS);
6061
#endif
6162
#ifdef TV_PROFILE
62-
system_settings_unset_changed_cb(system_settings_key_e(
63-
SYSTEM_SETTINGS_KEY_MENU_SYSTEM_ACCESSIBILITY_HIGHCONTRAST));
63+
system_settings_unset_changed_cb(
64+
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR);
65+
system_settings_unset_changed_cb(
66+
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_HIGHCONTRAST);
6467
#endif
6568
}
6669

67-
void AccessibilitySettings::OnHighContrastStateChanged(
70+
void AccessibilitySettings::OnAccessibilityFeatureStateChanged(
6871
system_settings_key_e key,
6972
void* user_data) {
7073
#ifdef TV_PROFILE
7174
auto* self = reinterpret_cast<AccessibilitySettings*>(user_data);
72-
int enabled = 0;
73-
int result = system_settings_get_value_int(
74-
system_settings_key_e(
75-
SYSTEM_SETTINGS_KEY_MENU_SYSTEM_ACCESSIBILITY_HIGHCONTRAST),
76-
&enabled);
77-
if (result != SYSTEM_SETTINGS_ERROR_NONE) {
75+
76+
bool nagative_color = false;
77+
int ret = system_settings_get_value_bool(
78+
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_NEGATIVE_COLOR, &nagative_color);
79+
if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
80+
FT_LOG(Error) << "Failed to get value of accessibility negative color.";
81+
}
82+
83+
int high_contrast = 0;
84+
ret = system_settings_get_value_int(
85+
SYSTEM_SETTINGS_KEY_ACCESSIBILITY_HIGHCONTRAST, &high_contrast);
86+
if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
7887
FT_LOG(Error) << "Failed to get value of accessibility high contrast.";
79-
return;
8088
}
8189

82-
self->engine_->UpdateAccessibilityFeatures(false, enabled);
90+
self->engine_->UpdateAccessibilityFeatures(nagative_color, high_contrast);
8391
#endif
8492
}
8593

@@ -88,9 +96,10 @@ void AccessibilitySettings::OnScreenReaderStateChanged(
8896
void* user_data) {
8997
#ifndef WEARABLE_PROFILE
9098
auto* self = reinterpret_cast<AccessibilitySettings*>(user_data);
99+
91100
bool enabled = false;
92-
int result = system_settings_get_value_bool(key, &enabled);
93-
if (result != SYSTEM_SETTINGS_ERROR_NONE) {
101+
int ret = system_settings_get_value_bool(key, &enabled);
102+
if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
94103
FT_LOG(Error) << "Failed to get value of accessibility tts.";
95104
return;
96105
}

shell/platform/tizen/accessibility_settings.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ class AccessibilitySettings {
1717
virtual ~AccessibilitySettings();
1818

1919
private:
20-
static void OnHighContrastStateChanged(system_settings_key_e key,
21-
void* user_data);
20+
static void OnAccessibilityFeatureStateChanged(system_settings_key_e key,
21+
void* user_data);
2222
static void OnScreenReaderStateChanged(system_settings_key_e key,
2323
void* user_data);
2424

0 commit comments

Comments
 (0)