[gnome-break-timer/dylanmccall/lock-screen-option: 6/6] Add an option to disable screen locking
- From: Dylan McCall <dylanmccall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-break-timer/dylanmccall/lock-screen-option: 6/6] Add an option to disable screen locking
- Date: Fri, 12 Nov 2021 00:38:17 +0000 (UTC)
commit 294d3cbef36d77ff96d57e5f8d32618051a8c91b
Author: Dylan McCall <dylan dylanmccall ca>
Date: Wed Dec 16 10:05:40 2020 -0800
Add an option to disable screen locking
In addition, disable screen locking by default. It is easy to enable,
and making it opt-in will avoid confusion.
Closes #15
.../gschema/org.gnome.BreakTimer.gschema.xml.in.in | 6 +++++
src/daemon/restbreak/RestBreakController.vala | 2 ++
src/daemon/restbreak/RestBreakType.vala | 1 +
src/daemon/restbreak/RestBreakView.vala | 8 +++++-
src/settings/BreakSettingsDialog.vala | 4 +++
src/settings/break/BreakSettingsWidget.vala | 29 ++++++----------------
.../restbreak/RestBreakSettingsWidget.vala | 8 ++++++
.../timerbreak/TimerBreakSettingsWidget.vala | 3 ++-
8 files changed, 38 insertions(+), 23 deletions(-)
---
diff --git a/data/gschema/org.gnome.BreakTimer.gschema.xml.in.in
b/data/gschema/org.gnome.BreakTimer.gschema.xml.in.in
index 1c674b4..b57599b 100644
--- a/data/gschema/org.gnome.BreakTimer.gschema.xml.in.in
+++ b/data/gschema/org.gnome.BreakTimer.gschema.xml.in.in
@@ -38,6 +38,12 @@
<description>The duration of each rest break, in seconds.</description>
<default>360</default>
</key>
+
+ <key name="lock-screen" type="b">
+ <summary>Lock screen during breaks</summary>
+ <description>True to lock the screen during rest breaks.</description>
+ <default>false</default>
+ </key>
</schema>
<schema id="@APPLICATION_ID@.microbreak" path="/org/gnome/BreakTimer/microbreak/">
diff --git a/src/daemon/restbreak/RestBreakController.vala b/src/daemon/restbreak/RestBreakController.vala
index 828903c..9e67d5c 100644
--- a/src/daemon/restbreak/RestBreakController.vala
+++ b/src/daemon/restbreak/RestBreakController.vala
@@ -31,6 +31,8 @@ namespace BreakTimer.Daemon.RestBreak {
* finished using the computer, and then it will start to count down again.
*/
public class RestBreakController : TimerBreakController {
+ public bool lock_screen_enabled { get; set; }
+
private Countdown reminder_countdown;
public signal void current_duration_changed ();
diff --git a/src/daemon/restbreak/RestBreakType.vala b/src/daemon/restbreak/RestBreakType.vala
index eb003c9..27c4248 100644
--- a/src/daemon/restbreak/RestBreakType.vala
+++ b/src/daemon/restbreak/RestBreakType.vala
@@ -32,6 +32,7 @@ public class RestBreakType : TimerBreakType {
var settings = new GLib.Settings (Config.APPLICATION_ID + ".restbreak");
settings.bind ("interval-seconds", break_controller, "interval", GLib.SettingsBindFlags.GET);
settings.bind ("duration-seconds", break_controller, "duration", GLib.SettingsBindFlags.GET);
+ settings.bind ("lock-screen", break_controller, "lock-screen-enabled", GLib.SettingsBindFlags.GET);
base ("restbreak", break_controller, break_view);
}
diff --git a/src/daemon/restbreak/RestBreakView.vala b/src/daemon/restbreak/RestBreakView.vala
index cc05a42..7e49ae1 100644
--- a/src/daemon/restbreak/RestBreakView.vala
+++ b/src/daemon/restbreak/RestBreakView.vala
@@ -161,7 +161,13 @@ public class RestBreakView : TimerBreakView {
private void counting_cb (int lap_time, int total_time) {
this.human_is_resting = lap_time > 20;
- if (this.human_is_resting && this.can_lock_screen ()) {
+ if (this.human_is_resting) {
+ this.try_lock_screen ();
+ }
+ }
+
+ private void try_lock_screen () {
+ if (this.rest_break.lock_screen_enabled && this.can_lock_screen ()) {
// TODO: Make a sound slightly before locking?
this.lock_screen ();
}
diff --git a/src/settings/BreakSettingsDialog.vala b/src/settings/BreakSettingsDialog.vala
index e43a0f7..8cb2089 100644
--- a/src/settings/BreakSettingsDialog.vala
+++ b/src/settings/BreakSettingsDialog.vala
@@ -72,6 +72,9 @@ public class BreakSettingsDialog : Gtk.Dialog {
);
settings.bind ("selected-breaks", this.configuration_chooser, "selected-break-ids",
SettingsBindFlags.DEFAULT);
+ // TODO: Create a stack with a child for each configuration. Switch
+ // between these instead of showing / hiding widgets.
+
this.breaks_grid = new FixedSizeGrid ();
content.add (this.breaks_grid);
this.breaks_grid.set_orientation (Gtk.Orientation.VERTICAL);
@@ -87,6 +90,7 @@ public class BreakSettingsDialog : Gtk.Dialog {
this.breaks_grid.add (settings_widget);
settings_widget.realize ();
settings_widget.set_valign (Gtk.Align.CENTER);
+ settings_widget.set_halign (Gtk.Align.FILL);
settings_widget.set_vexpand (true);
settings_widget.set_margin_top (10);
settings_widget.set_margin_bottom (10);
diff --git a/src/settings/break/BreakSettingsWidget.vala b/src/settings/break/BreakSettingsWidget.vala
index 25ca960..8a6b2ff 100644
--- a/src/settings/break/BreakSettingsWidget.vala
+++ b/src/settings/break/BreakSettingsWidget.vala
@@ -22,7 +22,7 @@ namespace BreakTimer.Settings.Break {
public abstract class BreakSettingsWidget : Gtk.Grid {
private Gtk.Grid header;
- private Gtk.Grid details;
+ private Gtk.Box details;
protected BreakSettingsWidget (BreakType break_type, string title, string? description) {
GLib.Object ();
@@ -34,36 +34,23 @@ public abstract class BreakSettingsWidget : Gtk.Grid {
this.add (this.header);
this.header.set_column_spacing (12);
- var title_grid = new Gtk.Grid ();
- this.set_header (title_grid);
- title_grid.set_orientation (Gtk.Orientation.VERTICAL);
- title_grid.set_row_spacing (4);
-
var title_label = new Gtk.Label (title);
- title_grid.add (title_label);
+ this.set_header_title (title_label);
title_label.get_style_context ().add_class ("_settings-title");
- title_label.set_halign (Gtk.Align.FILL);
+ title_label.set_halign (Gtk.Align.CENTER);
title_label.set_hexpand (true);
- title_label.set_justify (Gtk.Justification.CENTER);
-
- // var description_label = new Gtk.Label ("<small>%s</small>".printf (description));
- // title_grid.add (description_label);
- // description_label.get_style_context ().add_class ("_settings-description");
- // description_label.set_use_markup (true);
- // description_label.set_halign (Gtk.Align.FILL);
- // description_label.set_hexpand (true);
- // description_label.set_justify (Gtk.Justification.CENTER);
+ // title_label.set_justify (Gtk.Justification.CENTER);
- this.details = new Gtk.Grid ();
+ this.details = new Gtk.Box (Gtk.Orientation.VERTICAL, 10);
this.add (this.details);
this.details.set_margin_start (12);
- this.details.set_halign (Gtk.Align.CENTER);
+ this.details.set_halign (Gtk.Align.FILL);
this.details.set_hexpand (true);
this.show_all ();
}
- protected void set_header (Gtk.Widget content) {
+ protected void set_header_title (Gtk.Widget content) {
this.header.attach (content, 0, 0, 1, 1);
}
@@ -73,7 +60,7 @@ public abstract class BreakSettingsWidget : Gtk.Grid {
content.set_valign (Gtk.Align.CENTER);
}
- protected void set_details (Gtk.Widget content) {
+ protected void set_details_widget (Gtk.Widget content) {
this.details.add (content);
}
}
diff --git a/src/settings/restbreak/RestBreakSettingsWidget.vala
b/src/settings/restbreak/RestBreakSettingsWidget.vala
index df192b0..fe35db1 100644
--- a/src/settings/restbreak/RestBreakSettingsWidget.vala
+++ b/src/settings/restbreak/RestBreakSettingsWidget.vala
@@ -29,7 +29,15 @@ class RestBreakSettingsWidget : TimerBreakSettingsWidget {
_("Full break"),
_("And take some longer breaks to stretch your legs")
);
+
+ var lock_toggle = new Gtk.CheckButton.with_label ("Lock the screen during breaks");
+ break_type.settings.bind ("lock-screen", lock_toggle, "active", SettingsBindFlags.DEFAULT);
+ lock_toggle.set_halign (Gtk.Align.CENTER);
+ lock_toggle.show ();
+
+ this.set_details_widget (lock_toggle);
}
+
}
}
diff --git a/src/settings/timerbreak/TimerBreakSettingsWidget.vala
b/src/settings/timerbreak/TimerBreakSettingsWidget.vala
index 47080e0..cb18ccf 100644
--- a/src/settings/timerbreak/TimerBreakSettingsWidget.vala
+++ b/src/settings/timerbreak/TimerBreakSettingsWidget.vala
@@ -28,8 +28,9 @@ public abstract class TimerBreakSettingsWidget : BreakSettingsWidget {
base (break_type, title, description);
var details_grid = new Gtk.Grid ();
- this.set_details (details_grid);
+ this.set_details_widget (details_grid);
+ details_grid.set_halign (Gtk.Align.CENTER);
details_grid.set_column_spacing (8);
details_grid.set_row_spacing (8);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]