Flutter Linux Embedder
fl_settings_handler.cc File Reference

Go to the source code of this file.

Classes

struct  _FlSettingsHandler
 

Functions

static const gchar * to_platform_brightness (FlColorScheme color_scheme)
 
static void update_settings (FlSettingsHandler *self)
 
static void fl_settings_handler_dispose (GObject *object)
 
static void fl_settings_handler_class_init (FlSettingsHandlerClass *klass)
 
static void fl_settings_handler_init (FlSettingsHandler *self)
 
FlSettingsHandler * fl_settings_handler_new (FlEngine *engine)
 
void fl_settings_handler_start (FlSettingsHandler *self, FlSettings *settings)
 

Variables

static constexpr char kChannelName [] = "flutter/settings"
 
static constexpr char kTextScaleFactorKey [] = "textScaleFactor"
 
static constexpr char kAlwaysUse24HourFormatKey [] = "alwaysUse24HourFormat"
 
static constexpr char kPlatformBrightnessKey [] = "platformBrightness"
 
static constexpr char kPlatformBrightnessLight [] = "light"
 
static constexpr char kPlatformBrightnessDark [] = "dark"
 

Function Documentation

◆ fl_settings_handler_class_init()

static void fl_settings_handler_class_init ( FlSettingsHandlerClass *  klass)
static

Definition at line 88 of file fl_settings_handler.cc.

88  {
89  G_OBJECT_CLASS(klass)->dispose = fl_settings_handler_dispose;
90 }

References fl_settings_handler_dispose().

◆ fl_settings_handler_dispose()

static void fl_settings_handler_dispose ( GObject *  object)
static

Definition at line 73 of file fl_settings_handler.cc.

73  {
74  FlSettingsHandler* self = FL_SETTINGS_HANDLER(object);
75 
76  g_clear_object(&self->channel);
77  g_clear_object(&self->settings);
78 
79  if (self->engine != nullptr) {
80  g_object_remove_weak_pointer(G_OBJECT(self),
81  reinterpret_cast<gpointer*>(&(self->engine)));
82  self->engine = nullptr;
83  }
84 
85  G_OBJECT_CLASS(fl_settings_handler_parent_class)->dispose(object);
86 }

Referenced by fl_settings_handler_class_init().

◆ fl_settings_handler_init()

static void fl_settings_handler_init ( FlSettingsHandler *  self)
static

Definition at line 92 of file fl_settings_handler.cc.

92 {}

◆ fl_settings_handler_new()

FlSettingsHandler* fl_settings_handler_new ( FlEngine *  engine)

FlSettingsHandler:

#FlSettingsHandler is a handler that implements the Flutter user settings channel. fl_settings_handler_new: @messenger: an #FlEngine

Creates a new handler that sends user settings to the Flutter engine.

Returns: a new #FlSettingsHandler

Definition at line 94 of file fl_settings_handler.cc.

94  {
95  g_return_val_if_fail(FL_IS_ENGINE(engine), nullptr);
96 
97  FlSettingsHandler* self = FL_SETTINGS_HANDLER(
98  g_object_new(fl_settings_handler_get_type(), nullptr));
99 
100  self->engine = engine;
101  g_object_add_weak_pointer(G_OBJECT(self),
102  reinterpret_cast<gpointer*>(&(self->engine)));
103 
104  FlBinaryMessenger* messenger = fl_engine_get_binary_messenger(engine);
105  g_autoptr(FlJsonMessageCodec) codec = fl_json_message_codec_new();
106  self->channel = fl_basic_message_channel_new(messenger, kChannelName,
107  FL_MESSAGE_CODEC(codec));
108 
109  return self;
110 }

References fl_basic_message_channel_new(), fl_engine_get_binary_messenger(), fl_json_message_codec_new(), and kChannelName.

Referenced by fl_engine_start(), and TEST().

◆ fl_settings_handler_start()

void fl_settings_handler_start ( FlSettingsHandler *  handler,
FlSettings *  settings 
)

fl_settings_handler_start: @handler: an #FlSettingsHandler.

Sends the current settings to the engine and updates when they change.

Definition at line 112 of file fl_settings_handler.cc.

112  {
113  g_return_if_fail(FL_IS_SETTINGS_HANDLER(self));
114  g_return_if_fail(FL_IS_SETTINGS(settings));
115 
116  self->settings = FL_SETTINGS(g_object_ref(settings));
117  g_signal_connect_object(settings, "changed", G_CALLBACK(update_settings),
118  self, G_CONNECT_SWAPPED);
119 
120  update_settings(self);
121 }

References update_settings().

Referenced by fl_engine_start(), and TEST().

◆ to_platform_brightness()

static const gchar* to_platform_brightness ( FlColorScheme  color_scheme)
static

Definition at line 32 of file fl_settings_handler.cc.

32  {
33  switch (color_scheme) {
38  default:
39  g_return_val_if_reached(nullptr);
40  }
41 }

References FL_COLOR_SCHEME_DARK, FL_COLOR_SCHEME_LIGHT, kPlatformBrightnessDark, and kPlatformBrightnessLight.

Referenced by update_settings().

◆ update_settings()

static void update_settings ( FlSettingsHandler *  self)
static

Definition at line 44 of file fl_settings_handler.cc.

44  {
45  FlClockFormat clock_format = fl_settings_get_clock_format(self->settings);
46  FlColorScheme color_scheme = fl_settings_get_color_scheme(self->settings);
47  gdouble scaling_factor = fl_settings_get_text_scaling_factor(self->settings);
48 
49  g_autoptr(FlValue) message = fl_value_new_map();
51  fl_value_new_float(scaling_factor));
54  fl_value_new_bool(clock_format == FL_CLOCK_FORMAT_24H));
56  message, kPlatformBrightnessKey,
58  fl_basic_message_channel_send(self->channel, message, nullptr, nullptr,
59  nullptr);
60 
61  if (self->engine != nullptr) {
62  int32_t flags = 0;
63  if (!fl_settings_get_enable_animations(self->settings)) {
64  flags |= kFlutterAccessibilityFeatureDisableAnimations;
65  }
66  if (fl_settings_get_high_contrast(self->settings)) {
67  flags |= kFlutterAccessibilityFeatureHighContrast;
68  }
70  }
71 }

References fl_basic_message_channel_send(), FL_CLOCK_FORMAT_24H, fl_engine_update_accessibility_features(), fl_settings_get_clock_format(), fl_settings_get_color_scheme(), fl_settings_get_enable_animations(), fl_settings_get_high_contrast(), fl_settings_get_text_scaling_factor(), fl_value_new_bool(), fl_value_new_float(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string_take(), flags, kAlwaysUse24HourFormatKey, kPlatformBrightnessKey, kTextScaleFactorKey, and to_platform_brightness().

Referenced by fl_settings_handler_start().

Variable Documentation

◆ kAlwaysUse24HourFormatKey

constexpr char kAlwaysUse24HourFormatKey[] = "alwaysUse24HourFormat"
staticconstexpr

Definition at line 17 of file fl_settings_handler.cc.

Referenced by update_settings().

◆ kChannelName

constexpr char kChannelName[] = "flutter/settings"
staticconstexpr

Definition at line 15 of file fl_settings_handler.cc.

Referenced by fl_settings_handler_new().

◆ kPlatformBrightnessDark

constexpr char kPlatformBrightnessDark[] = "dark"
staticconstexpr

Definition at line 20 of file fl_settings_handler.cc.

Referenced by to_platform_brightness().

◆ kPlatformBrightnessKey

constexpr char kPlatformBrightnessKey[] = "platformBrightness"
staticconstexpr

Definition at line 18 of file fl_settings_handler.cc.

Referenced by update_settings().

◆ kPlatformBrightnessLight

constexpr char kPlatformBrightnessLight[] = "light"
staticconstexpr

Definition at line 19 of file fl_settings_handler.cc.

Referenced by to_platform_brightness().

◆ kTextScaleFactorKey

constexpr char kTextScaleFactorKey[] = "textScaleFactor"
staticconstexpr

Definition at line 16 of file fl_settings_handler.cc.

Referenced by update_settings().

fl_engine_update_accessibility_features
void fl_engine_update_accessibility_features(FlEngine *self, int32_t flags)
Definition: fl_engine.cc:1017
fl_settings_get_color_scheme
FlColorScheme fl_settings_get_color_scheme(FlSettings *self)
Definition: fl_settings.cc:34
fl_value_set_string_take
G_MODULE_EXPORT void fl_value_set_string_take(FlValue *self, const gchar *key, FlValue *value)
Definition: fl_value.cc:650
fl_basic_message_channel_send
G_MODULE_EXPORT void fl_basic_message_channel_send(FlBasicMessageChannel *self, FlValue *message, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
Definition: fl_basic_message_channel.cc:226
FL_CLOCK_FORMAT_24H
@ FL_CLOCK_FORMAT_24H
Definition: fl_settings.h:24
to_platform_brightness
static const gchar * to_platform_brightness(FlColorScheme color_scheme)
Definition: fl_settings_handler.cc:32
kPlatformBrightnessDark
static constexpr char kPlatformBrightnessDark[]
Definition: fl_settings_handler.cc:20
fl_value_new_bool
G_MODULE_EXPORT FlValue * fl_value_new_bool(bool value)
Definition: fl_value.cc:255
FlValue
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:42
fl_json_message_codec_new
G_MODULE_EXPORT FlJsonMessageCodec * fl_json_message_codec_new()
Definition: fl_json_message_codec.cc:306
fl_settings_get_enable_animations
gboolean fl_settings_get_enable_animations(FlSettings *self)
Definition: fl_settings.cc:38
flags
FlutterSemanticsFlag flags
Definition: fl_accessible_node.cc:106
kPlatformBrightnessKey
static constexpr char kPlatformBrightnessKey[]
Definition: fl_settings_handler.cc:18
kPlatformBrightnessLight
static constexpr char kPlatformBrightnessLight[]
Definition: fl_settings_handler.cc:19
kTextScaleFactorKey
static constexpr char kTextScaleFactorKey[]
Definition: fl_settings_handler.cc:16
fl_engine_get_binary_messenger
G_MODULE_EXPORT FlBinaryMessenger * fl_engine_get_binary_messenger(FlEngine *self)
Definition: fl_engine.cc:995
FlColorScheme
FlColorScheme
Definition: fl_settings.h:35
fl_value_new_map
G_MODULE_EXPORT FlValue * fl_value_new_map()
Definition: fl_value.cc:366
fl_settings_get_high_contrast
gboolean fl_settings_get_high_contrast(FlSettings *self)
Definition: fl_settings.cc:42
fl_settings_get_text_scaling_factor
gdouble fl_settings_get_text_scaling_factor(FlSettings *self)
Definition: fl_settings.cc:46
kAlwaysUse24HourFormatKey
static constexpr char kAlwaysUse24HourFormatKey[]
Definition: fl_settings_handler.cc:17
fl_settings_handler_dispose
static void fl_settings_handler_dispose(GObject *object)
Definition: fl_settings_handler.cc:73
FL_COLOR_SCHEME_LIGHT
@ FL_COLOR_SCHEME_LIGHT
Definition: fl_settings.h:37
FL_COLOR_SCHEME_DARK
@ FL_COLOR_SCHEME_DARK
Definition: fl_settings.h:38
kChannelName
static constexpr char kChannelName[]
Definition: fl_settings_handler.cc:15
fl_value_new_float
G_MODULE_EXPORT FlValue * fl_value_new_float(double value)
Definition: fl_value.cc:269
update_settings
static void update_settings(FlSettingsHandler *self)
Definition: fl_settings_handler.cc:44
fl_basic_message_channel_new
G_MODULE_EXPORT FlBasicMessageChannel * fl_basic_message_channel_new(FlBinaryMessenger *messenger, const gchar *name, FlMessageCodec *codec)
Definition: fl_basic_message_channel.cc:154
FlClockFormat
FlClockFormat
Definition: fl_settings.h:21
fl_settings_get_clock_format
FlClockFormat fl_settings_get_clock_format(FlSettings *self)
Definition: fl_settings.cc:30
fl_value_new_string
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
Definition: fl_value.cc:276