| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef FLUTTER_SHELL_PLATFORM_LINUX_FL_SETTINGS_H_ | |
| #define FLUTTER_SHELL_PLATFORM_LINUX_FL_SETTINGS_H_ | |
| #include <glib-object.h> | |
| G_BEGIN_DECLS | |
| G_DECLARE_INTERFACE(FlSettings, fl_settings, FL, SETTINGS, GObject) | |
| /** | |
| * FlClockFormat: | |
| * @FL_CLOCK_FORMAT_12H: 12-hour clock format. | |
| * @FL_CLOCK_FORMAT_24H: 24-hour clock format. | |
| * | |
| * Available clock formats. | |
| */ | |
| typedef enum { | |
| // NOLINTBEGIN(readability-identifier-naming) | |
| FL_CLOCK_FORMAT_12H, | |
| FL_CLOCK_FORMAT_24H, | |
| // NOLINTEND(readability-identifier-naming) | |
| } FlClockFormat; | |
| /** | |
| * FlColorScheme: | |
| * @FL_COLOR_SCHEME_LIGHT: Prefer light theme. | |
| * @FL_COLOR_SCHEME_DARK: Prefer dark theme. | |
| * | |
| * Available color schemes. | |
| */ | |
| typedef enum { | |
| // NOLINTBEGIN(readability-identifier-naming) | |
| FL_COLOR_SCHEME_LIGHT, | |
| FL_COLOR_SCHEME_DARK, | |
| // NOLINTEND(readability-identifier-naming) | |
| } FlColorScheme; | |
| /** | |
| * FlSettings: | |
| * #FlSettings is and object that provides desktop settings. | |
| */ | |
| struct _FlSettingsInterface { | |
| GTypeInterface parent; | |
| FlClockFormat (*get_clock_format)(FlSettings* settings); | |
| FlColorScheme (*get_color_scheme)(FlSettings* settings); | |
| gboolean (*get_enable_animations)(FlSettings* settings); | |
| gboolean (*get_high_contrast)(FlSettings* settings); | |
| gdouble (*get_text_scaling_factor)(FlSettings* settings); | |
| }; | |
| /** | |
| * fl_settings_new: | |
| * | |
| * Creates a new settings instance. | |
| * | |
| * Returns: a new #FlSettings. | |
| */ | |
| FlSettings* fl_settings_new(); | |
| /** | |
| * fl_settings_get_clock_format: | |
| * @settings: an #FlSettings. | |
| * | |
| * Whether the clock displays in 24-hour or 12-hour format. | |
| * | |
| * This corresponds to `org.gnome.desktop.interface.clock-format` in GNOME. | |
| * | |
| * Returns: an #FlClockFormat. | |
| */ | |
| FlClockFormat fl_settings_get_clock_format(FlSettings* settings); | |
| /** | |
| * fl_settings_get_color_scheme: | |
| * @settings: an #FlSettings. | |
| * | |
| * The preferred color scheme for the user interface. | |
| * | |
| * This corresponds to `org.gnome.desktop.interface.color-scheme` in GNOME. | |
| * | |
| * Returns: an #FlColorScheme. | |
| */ | |
| FlColorScheme fl_settings_get_color_scheme(FlSettings* settings); | |
| /** | |
| * fl_settings_get_enable_animations: | |
| * @settings: an #FlSettings. | |
| * | |
| * Whether animations should be enabled. | |
| * | |
| * This corresponds to `org.gnome.desktop.interface.enable-animations` in GNOME. | |
| * | |
| * Returns: %TRUE if animations are enabled. | |
| */ | |
| gboolean fl_settings_get_enable_animations(FlSettings* settings); | |
| /** | |
| * fl_settings_get_high_contrast: | |
| * @settings: an #FlSettings. | |
| * | |
| * Whether to use high contrast theme. | |
| * | |
| * This corresponds to `org.gnome.desktop.a11y.interface.high-contrast` in | |
| * GNOME. | |
| * | |
| * Returns: %TRUE if high contrast is used. | |
| */ | |
| gboolean fl_settings_get_high_contrast(FlSettings* settings); | |
| /** | |
| * fl_settings_get_text_scaling_factor: | |
| * @settings: an #FlSettings. | |
| * | |
| * Factor used to enlarge or reduce text display, without changing font size. | |
| * | |
| * This corresponds to `org.gnome.desktop.interface.text-scaling-factor` in | |
| * GNOME. | |
| * | |
| * Returns: a floating point number. | |
| */ | |
| gdouble fl_settings_get_text_scaling_factor(FlSettings* settings); | |
| /** | |
| * fl_settings_emit_changed: | |
| * @settings: an #FlSettings. | |
| * | |
| * Emits the "changed" signal. Used by FlSettings implementations to notify when | |
| * the desktop settings have changed. | |
| */ | |
| void fl_settings_emit_changed(FlSettings* settings); | |
| G_END_DECLS | |
| #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_SETTINGS_H_ |