Flutter Engine
 
Loading...
Searching...
No Matches
fl_settings_handler.cc
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
7#include <gmodule.h>
8
12
15
16 FlSettingsChannel* channel;
17 GWeakRef engine;
18 FlSettings* settings;
19};
20
21G_DEFINE_TYPE(FlSettingsHandler, fl_settings_handler, G_TYPE_OBJECT)
22
24 FlColorScheme color_scheme) {
25 switch (color_scheme) {
30 default:
31 g_assert_not_reached();
32 }
33}
34
35// Sends the current settings to the Flutter engine.
36static void update_settings(FlSettingsHandler* self) {
37 FlClockFormat clock_format = fl_settings_get_clock_format(self->settings);
38 FlColorScheme color_scheme = fl_settings_get_color_scheme(self->settings);
39 gdouble scaling_factor = fl_settings_get_text_scaling_factor(self->settings);
40
41 fl_settings_channel_send(self->channel, scaling_factor,
42 clock_format == FL_CLOCK_FORMAT_24H,
43 to_platform_brightness(color_scheme));
44
45 g_autoptr(FlEngine) engine = FL_ENGINE(g_weak_ref_get(&self->engine));
46 if (engine != nullptr) {
47 int32_t flags = 0;
50 }
51 if (fl_settings_get_high_contrast(self->settings)) {
53 }
55 }
56}
57
58static void fl_settings_handler_dispose(GObject* object) {
59 FlSettingsHandler* self = FL_SETTINGS_HANDLER(object);
60
61 g_clear_object(&self->channel);
62 g_clear_object(&self->settings);
63 g_weak_ref_clear(&self->engine);
64
65 G_OBJECT_CLASS(fl_settings_handler_parent_class)->dispose(object);
66}
67
68static void fl_settings_handler_class_init(FlSettingsHandlerClass* klass) {
69 G_OBJECT_CLASS(klass)->dispose = fl_settings_handler_dispose;
70}
71
72static void fl_settings_handler_init(FlSettingsHandler* self) {}
73
74FlSettingsHandler* fl_settings_handler_new(FlEngine* engine) {
75 g_return_val_if_fail(FL_IS_ENGINE(engine), nullptr);
76
77 FlSettingsHandler* self = FL_SETTINGS_HANDLER(
78 g_object_new(fl_settings_handler_get_type(), nullptr));
79
80 g_weak_ref_init(&self->engine, engine);
81
82 FlBinaryMessenger* messenger = fl_engine_get_binary_messenger(engine);
83 self->channel = fl_settings_channel_new(messenger);
84
85 return self;
86}
87
88void fl_settings_handler_start(FlSettingsHandler* self, FlSettings* settings) {
89 g_return_if_fail(FL_IS_SETTINGS_HANDLER(self));
90 g_return_if_fail(FL_IS_SETTINGS(settings));
91
92 self->settings = FL_SETTINGS(g_object_ref(settings));
93 g_signal_connect_object(settings, "changed", G_CALLBACK(update_settings),
94 self, G_CONNECT_SWAPPED);
95
97}
@ kFlutterAccessibilityFeatureHighContrast
Request that UI be rendered with darker colors.
Definition embedder.h:105
@ kFlutterAccessibilityFeatureDisableAnimations
Request that animations be disabled or simplified.
Definition embedder.h:98
FlutterEngine engine
Definition main.cc:84
G_DEFINE_TYPE(FlBasicMessageChannelResponseHandle, fl_basic_message_channel_response_handle, G_TYPE_OBJECT) static void fl_basic_message_channel_response_handle_dispose(GObject *object)
g_autoptr(GMutexLocker) locker
void fl_engine_update_accessibility_features(FlEngine *self, int32_t flags)
G_MODULE_EXPORT FlBinaryMessenger * fl_engine_get_binary_messenger(FlEngine *self)
gboolean fl_settings_get_high_contrast(FlSettings *self)
gdouble fl_settings_get_text_scaling_factor(FlSettings *self)
gboolean fl_settings_get_enable_animations(FlSettings *self)
FlColorScheme fl_settings_get_color_scheme(FlSettings *self)
FlClockFormat fl_settings_get_clock_format(FlSettings *self)
FlColorScheme
Definition fl_settings.h:33
@ FL_COLOR_SCHEME_DARK
Definition fl_settings.h:35
@ FL_COLOR_SCHEME_LIGHT
Definition fl_settings.h:34
FlClockFormat
Definition fl_settings.h:21
@ FL_CLOCK_FORMAT_24H
Definition fl_settings.h:23
void fl_settings_channel_send(FlSettingsChannel *self, double text_scale_factor, gboolean always_use_24_hour_format, FlSettingsChannelPlatformBrightness platform_brightness)
FlSettingsChannel * fl_settings_channel_new(FlBinaryMessenger *messenger)
FlSettingsChannelPlatformBrightness
@ FL_SETTINGS_CHANNEL_PLATFORM_BRIGHTNESS_DARK
@ FL_SETTINGS_CHANNEL_PLATFORM_BRIGHTNESS_LIGHT
static FlSettingsChannelPlatformBrightness to_platform_brightness(FlColorScheme color_scheme)
static void update_settings(FlSettingsHandler *self)
static void fl_settings_handler_dispose(GObject *object)
void fl_settings_handler_start(FlSettingsHandler *self, FlSettings *settings)
static void fl_settings_handler_class_init(FlSettingsHandlerClass *klass)
static void fl_settings_handler_init(FlSettingsHandler *self)
FlSettingsHandler * fl_settings_handler_new(FlEngine *engine)
FlSettingsChannel * channel