From aa0a7872b70e51d50f49f0ffdf18a2e8fc33402b Mon Sep 17 00:00:00 2001 From: Xu Wanchao <32251018+wanchao-xu@users.noreply.github.com> Date: Mon, 28 Mar 2022 19:18:10 +0800 Subject: [PATCH] Implement the large font for accessibility (#262) --- .../tizen/channels/settings_channel.cc | 36 ++++++++++++++++++- .../tizen/channels/settings_channel.h | 1 + 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/shell/platform/tizen/channels/settings_channel.cc b/shell/platform/tizen/channels/settings_channel.cc index d5751ea65d844..a1001b56cb85d 100644 --- a/shell/platform/tizen/channels/settings_channel.cc +++ b/shell/platform/tizen/channels/settings_channel.cc @@ -32,18 +32,26 @@ SettingsChannel::SettingsChannel(BinaryMessenger* messenger) self->SendSettingsEvent(); }, this); + system_settings_set_changed_cb( + SYSTEM_SETTINGS_KEY_FONT_SIZE, + [](system_settings_key_e key, void* user_data) -> void { + auto* self = reinterpret_cast(user_data); + self->SendSettingsEvent(); + }, + this); SendSettingsEvent(); } SettingsChannel::~SettingsChannel() { system_settings_unset_changed_cb( SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR); + system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_SIZE); } void SettingsChannel::SendSettingsEvent() { rapidjson::Document event(rapidjson::kObjectType); auto& allocator = event.GetAllocator(); - event.AddMember(kTextScaleFactorKey, 1.0, allocator); + event.AddMember(kTextScaleFactorKey, GetTextScaleFactor(), allocator); event.AddMember(kAlwaysUse24HourFormatKey, Prefer24HourTime(), allocator); event.AddMember(kPlatformBrightnessKey, "light", allocator); channel_->Send(event); @@ -59,4 +67,30 @@ bool SettingsChannel::Prefer24HourTime() { return false; } +float SettingsChannel::GetTextScaleFactor() { + const float small = 0.8; + const float normal = 1.0; + const float large = 1.5; + const float huge = 1.9; + const float giant = 2.5; + + int value = SYSTEM_SETTINGS_FONT_SIZE_NORMAL; + if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &value) == + SYSTEM_SETTINGS_ERROR_NONE) { + switch (value) { + case SYSTEM_SETTINGS_FONT_SIZE_SMALL: + return small; + case SYSTEM_SETTINGS_FONT_SIZE_LARGE: + return large; + case SYSTEM_SETTINGS_FONT_SIZE_HUGE: + return huge; + case SYSTEM_SETTINGS_FONT_SIZE_GIANT: + return giant; + default: + return normal; + } + } + return normal; +} + } // namespace flutter diff --git a/shell/platform/tizen/channels/settings_channel.h b/shell/platform/tizen/channels/settings_channel.h index ae9585778caa4..0bcf4840dbd06 100644 --- a/shell/platform/tizen/channels/settings_channel.h +++ b/shell/platform/tizen/channels/settings_channel.h @@ -21,6 +21,7 @@ class SettingsChannel { private: void SendSettingsEvent(); bool Prefer24HourTime(); + float GetTextScaleFactor(); std::unique_ptr> channel_; };