Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions data/io.elementary.settings-daemon.gschema.xml
Original file line number Diff line number Diff line change
Expand Up @@ -141,11 +141,23 @@
<value nick='reduce' value='1'/>
</enum>

<enum id="ContrastPreference">
<value nick='no-preference' value='0'/>
<value nick='more' value='1'/>
<value nick='less' value='2'/>
<value nick='unsupported' value='3'/>
</enum>

<schema path="/io/elementary/settings-daemon/a11y/" id="io.elementary.settings-daemon.a11y">
<key enum="ReduceMotionPreference" name="reduced-motion">
<default>'no-preference'</default>
<summary>Reduce motion effects</summary>
<description>If enabled, reduces motion effects for the user interface.</description>
</key>
<key enum="ContrastPreference" name="contrast">
<default>'no-preference'</default>
<summary>Contrast</summary>
<description>Indicates the preferred level of contrast for the user interface.</description>
</key>
</schema>
</schemalist>
1 change: 1 addition & 0 deletions meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ fwupd_dep = dependency('fwupd')
gio_dep = dependency ('gio-2.0')
glib_dep = dependency('glib-2.0')
granite_dep = dependency('granite-7', version: '>= 7.0.0')
gtk_dep = dependency('gtk4', version: '>=4.20')
gdk_pixbuf_dep = dependency('gdk-pixbuf-2.0')
gexiv2_dep = dependency('gexiv2')
pk_dep = dependency('packagekit-glib2')
Expand Down
42 changes: 29 additions & 13 deletions settings-portal/Settings.vala
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,15 @@ public class SettingsDaemon.Settings : GLib.Object {
}

private void on_setting_changed (GLib.Settings settings, string key) {
if (settings.schema_id == "io.elementary.settings-daemon.a11y" && key == "reduced-motion") {
setting_changed ("org.freedesktop.appearance", "reduced-motion", get_reduced_motion ());
return;
if (settings.schema_id == "io.elementary.settings-daemon.a11y") {
switch (key) {
case "contrast":
setting_changed ("org.freedesktop.appearance", "contrast", get_contrast ());
return;
case "reduced-motion":
setting_changed ("org.freedesktop.appearance", "reduced-motion", get_reduced_motion ());
return;
}
}

setting_changed (settings.schema_id, key, settings.get_value (key));
Expand Down Expand Up @@ -240,6 +246,16 @@ public class SettingsDaemon.Settings : GLib.Object {
return rgb_to_variant (0);
}

private Variant get_contrast () {
unowned var setting = settings["io.elementary.settings-daemon.a11y"];
if (setting != null && setting.settings_schema.has_key ("contrast")) {
var val = (Gtk.InterfaceContrast) setting.get_enum ("contrast");
return new Variant.uint32 (val);
}

return new Variant.uint32 (Gtk.InterfaceContrast.UNSUPPORTED);
}

private Variant get_reduced_motion () {
unowned var setting = settings["io.elementary.settings-daemon.a11y"];
if (setting != null && setting.settings_schema.has_key ("reduced-motion")) {
Expand Down Expand Up @@ -271,6 +287,7 @@ public class SettingsDaemon.Settings : GLib.Object {
dict.insert ("color-scheme", get_color_scheme ());
dict.insert ("accent-color", get_accent_color ());
dict.insert ("reduced-motion", get_reduced_motion ());
dict.insert ("contrast", get_contrast ());
ret.insert ("org.freedesktop.appearance", dict);
}

Expand All @@ -279,16 +296,15 @@ public class SettingsDaemon.Settings : GLib.Object {

public async GLib.Variant read (string namespace, string key) throws GLib.DBusError, GLib.Error {
if (namespace == "org.freedesktop.appearance") {
if (key == "color-scheme") {
return get_color_scheme ();
}

if (key == "accent-color") {
return get_accent_color ();
}

if (key == "reduced-motion") {
return get_reduced_motion ();
switch (key) {
case "color-scheme":
return get_color_scheme ();
case "accent-color":
return get_accent_color ();
case "reduced-motion":
return get_reduced_motion ();
case "contrast":
return get_contrast ();
}
}

Expand Down
1 change: 1 addition & 0 deletions settings-portal/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ executable(
dependencies: [
config_dep,
glib_dep,
gtk_dep,
gio_dep,
],
install: true,
Expand Down
Loading