diff --git a/data/io.elementary.SettingsDaemon.AccountsService.xml b/data/io.elementary.SettingsDaemon.AccountsService.xml
index a224057a..9bf2b681 100644
--- a/data/io.elementary.SettingsDaemon.AccountsService.xml
+++ b/data/io.elementary.SettingsDaemon.AccountsService.xml
@@ -132,14 +132,28 @@
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/AccountsService.vala b/src/AccountsService.vala
index 73c37836..7e06e06b 100644
--- a/src/AccountsService.vala
+++ b/src/AccountsService.vala
@@ -20,6 +20,11 @@
[DBus (name = "io.elementary.SettingsDaemon.AccountsService")]
public interface SettingsDaemon.AccountsService : Object {
+ public struct Coordinates {
+ public double latitude;
+ public double longitude;
+ }
+
/* Keyboard */
public struct KeyboardLayout {
public string backend;
@@ -64,14 +69,15 @@ public interface SettingsDaemon.AccountsService : Object {
public abstract string monospace_font_name { owned get; set; }
public abstract bool orientation_lock { get; set; }
- /* Night Light */
- public struct Coordinates {
- public double latitude;
- public double longitude;
- }
+ /* Prefer Dark Schedule (part of interface settings)*/
+ /* Last coordinates are reused for Night Light settings */
+ public abstract Coordinates last_coordinates { get; set; }
+ public abstract int prefer_dark_schedule { get; set; }
+ public abstract double prefer_dark_schedule_from { get; set; }
+ public abstract double prefer_dark_schedule_to { get; set; }
+ /* Night Light */
public abstract bool night_light_enabled { get; set; }
- public abstract Coordinates night_light_last_coordinates { get; set; }
public abstract bool night_light_schedule_automatic { get; set; }
public abstract double night_light_schedule_from { get; set; }
public abstract double night_light_schedule_to { get; set; }
diff --git a/src/Backends/InterfaceSettings.vala b/src/Backends/InterfaceSettings.vala
index e658f3ba..a2e06444 100644
--- a/src/Backends/InterfaceSettings.vala
+++ b/src/Backends/InterfaceSettings.vala
@@ -33,13 +33,18 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object {
private const string FONT_NAME = "font-name";
private const string MONOSPACE_FONT_NAME = "monospace-font-name";
+ private const string LAST_COORDINATES = "last-coordinates";
private const string ORIENTATION_LOCK = "orientation-lock";
+ private const string PREFER_DARK_SCHEDULE = "prefer-dark-schedule";
+ private const string PREFER_DARK_SCHEDULE_FROM = "prefer-dark-schedule-from";
+ private const string PREFER_DARK_SCHEDULE_TO = "prefer-dark-schedule-to";
public unowned AccountsService accounts_service { get; construct; }
public unowned DisplayManager.AccountsService display_manager_accounts_service { get; construct; }
private GLib.Settings interface_settings;
private GLib.Settings background_settings;
+ private GLib.Settings settings_daemon_settings;
private GLib.Settings touchscreen_settings;
public InterfaceSettings (AccountsService accounts_service, DisplayManager.AccountsService display_manager_accounts_service) {
@@ -52,6 +57,7 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object {
construct {
interface_settings = new GLib.Settings ("org.gnome.desktop.interface");
background_settings = new GLib.Settings ("org.gnome.desktop.background");
+ settings_daemon_settings = new GLib.Settings ("io.elementary.settings-daemon.prefers-color-scheme");
touchscreen_settings = new GLib.Settings ("org.gnome.settings-daemon.peripherals.touchscreen");
sync_gsettings_to_accountsservice ();
@@ -82,6 +88,15 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object {
}
});
+ settings_daemon_settings.changed.connect ((key) => {
+ if (key == LAST_COORDINATES ||
+ key == PREFER_DARK_SCHEDULE ||
+ key == PREFER_DARK_SCHEDULE_FROM ||
+ key == PREFER_DARK_SCHEDULE_TO) {
+ sync_gsettings_to_accountsservice ();
+ }
+ });
+
touchscreen_settings.changed.connect (sync_gsettings_to_accountsservice);
}
@@ -100,6 +115,25 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object {
accounts_service.font_name = interface_settings.get_string (FONT_NAME);
accounts_service.monospace_font_name = interface_settings.get_string (MONOSPACE_FONT_NAME);
+ var last_coordinates_value = settings_daemon_settings.get_value (LAST_COORDINATES);
+ if (last_coordinates_value.is_of_type (GLib.VariantType.TUPLE)) {
+ double latitude;
+ double longitude;
+
+ last_coordinates_value.@get ("(dd)", out latitude, out longitude);
+
+ accounts_service.last_coordinates = AccountsService.Coordinates () {
+ latitude = latitude,
+ longitude = longitude
+ };
+ } else {
+ warning ("Unknown prefer dark coordinates type, unable to save to AccountsService");
+ }
+
+ accounts_service.prefer_dark_schedule = settings_daemon_settings.get_enum (PREFER_DARK_SCHEDULE);
+ accounts_service.prefer_dark_schedule_from = settings_daemon_settings.get_double (PREFER_DARK_SCHEDULE_FROM);
+ accounts_service.prefer_dark_schedule_to = settings_daemon_settings.get_double (PREFER_DARK_SCHEDULE_TO);
+
accounts_service.orientation_lock = touchscreen_settings.get_boolean (ORIENTATION_LOCK);
}
diff --git a/src/Backends/NightLightSettings.vala b/src/Backends/NightLightSettings.vala
index b3d30d71..0110fd7a 100644
--- a/src/Backends/NightLightSettings.vala
+++ b/src/Backends/NightLightSettings.vala
@@ -6,7 +6,6 @@
public class SettingsDaemon.Backends.NightLightSettings : GLib.Object {
private const string NIGHT_LIGHT_SCHEMA = "org.gnome.settings-daemon.plugins.color";
private const string NIGHT_LIGHT_ENABLED = "night-light-enabled";
- private const string NIGHT_LIGHT_LAST_COORDINATES = "night-light-last-coordinates";
private const string NIGHT_LIGHT_SCHEDULE_AUTOMATIC = "night-light-schedule-automatic";
private const string NIGHT_LIGHT_SCHEDULE_FROM = "night-light-schedule-from";
private const string NIGHT_LIGHT_SCHEDULE_TO = "night-light-schedule-to";
@@ -33,7 +32,6 @@
night_light_settings.changed.connect ((key) => {
if (key == NIGHT_LIGHT_ENABLED ||
- key == NIGHT_LIGHT_LAST_COORDINATES ||
key == NIGHT_LIGHT_SCHEDULE_AUTOMATIC ||
key == NIGHT_LIGHT_SCHEDULE_FROM ||
key == NIGHT_LIGHT_SCHEDULE_TO ||
@@ -45,22 +43,6 @@
private void sync_gsettings_to_accountsservice () {
accounts_service.night_light_enabled = night_light_settings.get_boolean (NIGHT_LIGHT_ENABLED);
-
- var last_coordinates_value = night_light_settings.get_value (NIGHT_LIGHT_LAST_COORDINATES);
- if (last_coordinates_value.is_of_type (GLib.VariantType.TUPLE)) {
- double latitude;
- double longitude;
-
- last_coordinates_value.@get ("(dd)", out latitude, out longitude);
-
- accounts_service.night_light_last_coordinates = AccountsService.Coordinates () {
- latitude = latitude,
- longitude = longitude
- };
- } else {
- warning ("Unknown night light coordinates type, unable to save to AccountsService");
- }
-
accounts_service.night_light_schedule_automatic = night_light_settings.get_boolean (NIGHT_LIGHT_SCHEDULE_AUTOMATIC);
accounts_service.night_light_schedule_from = night_light_settings.get_double (NIGHT_LIGHT_SCHEDULE_FROM);
accounts_service.night_light_schedule_to = night_light_settings.get_double (NIGHT_LIGHT_SCHEDULE_TO);