[gnome-break-timer] Clean up BreakType initialize methods
- From: Dylan McCall <dylanmccall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-break-timer] Clean up BreakType initialize methods
- Date: Mon, 16 Nov 2020 07:24:27 +0000 (UTC)
commit f29a958ec6060d3b2eab3144eb64656756711abe
Author: Dylan McCall <dylan dylanmccall ca>
Date: Sun Nov 15 23:24:09 2020 -0800
Clean up BreakType initialize methods
src/daemon/BreakManager.vala | 11 +++++++----
src/daemon/break/BreakType.vala | 23 +++++++++--------------
src/daemon/microbreak/MicroBreakController.vala | 1 -
src/daemon/microbreak/MicroBreakType.vala | 24 +++++++-----------------
src/daemon/restbreak/RestBreakType.vala | 24 +++++++-----------------
src/daemon/timerbreak/TimerBreakType.vala | 24 ++++++++++--------------
src/settings/Application.vala | 2 +-
src/settings/BreakManager.vala | 6 +++++-
src/settings/break/BreakType.vala | 25 +++++++++++++------------
src/settings/microbreak/MicroBreakType.vala | 6 +++---
src/settings/restbreak/RestBreakType.vala | 6 +++---
src/settings/timerbreak/TimerBreakType.vala | 5 ++---
src/settings/widgets/CircleCounter.vala | 2 ++
13 files changed, 69 insertions(+), 90 deletions(-)
---
diff --git a/src/daemon/BreakManager.vala b/src/daemon/BreakManager.vala
index 4885227..d6c1732 100644
--- a/src/daemon/BreakManager.vala
+++ b/src/daemon/BreakManager.vala
@@ -77,9 +77,8 @@ public class BreakManager : GLib.Object {
}
public void load_breaks (ActivityMonitor activity_monitor) {
- this.add_break (new MicroBreakType (activity_monitor));
- this.add_break (new RestBreakType (activity_monitor));
-
+ this.add_break (new MicroBreakType (activity_monitor, this.ui_manager));
+ this.add_break (new RestBreakType (activity_monitor, this.ui_manager));
this.update_enabled_breaks ();
}
@@ -97,7 +96,11 @@ public class BreakManager : GLib.Object {
private void add_break (BreakType break_type) {
this.breaks.set (break_type.id, break_type);
- break_type.initialize (this.ui_manager);
+ try {
+ break_type.init (null);
+ } catch (GLib.Error error) {
+ GLib.warning ("Error initializing break type %s: %s", break_type.id, error.message);
+ }
}
private void update_enabled_breaks () {
diff --git a/src/daemon/break/BreakType.vala b/src/daemon/break/BreakType.vala
index f6743cd..8c3828b 100644
--- a/src/daemon/break/BreakType.vala
+++ b/src/daemon/break/BreakType.vala
@@ -17,25 +17,20 @@
namespace BreakTimer.Daemon.Break {
-public abstract class BreakType : GLib.Object {
- public string id;
- public BreakController break_controller;
- public BreakView break_view;
+public abstract class BreakType : GLib.Object, GLib.Initable {
+ public string id {get; private set; }
+ public BreakController break_controller { get; private set; }
+ public BreakView break_view { get; private set; }
- protected GLib.Settings settings;
-
- protected BreakType (string id, GLib.Settings settings) {
+ protected BreakType (string id, BreakController break_controller, BreakView break_view) {
this.id = id;
- this.settings = settings;
+ this.break_controller = break_controller;
+ this.break_view = break_view;
}
- public virtual void initialize (UIManager ui_manager) {
- this.break_controller = this.get_break_controller ();
- this.break_view = this.get_break_view (this.break_controller, ui_manager);
+ public virtual bool init (GLib.Cancellable? cancellable) throws GLib.Error {
+ return true;
}
-
- protected abstract BreakController get_break_controller ();
- protected abstract BreakView get_break_view (BreakController controller, UIManager ui_manager);
}
}
diff --git a/src/daemon/microbreak/MicroBreakController.vala b/src/daemon/microbreak/MicroBreakController.vala
index c5805d6..c48ac8e 100644
--- a/src/daemon/microbreak/MicroBreakController.vala
+++ b/src/daemon/microbreak/MicroBreakController.vala
@@ -29,7 +29,6 @@ namespace BreakTimer.Daemon.MicroBreak {
public class MicroBreakController : TimerBreakController {
public MicroBreakController (ActivityMonitor activity_monitor) {
base (activity_monitor, 0);
-
this.delayed.connect (this.delayed_cb);
}
diff --git a/src/daemon/microbreak/MicroBreakType.vala b/src/daemon/microbreak/MicroBreakType.vala
index 6109199..e7c85fc 100644
--- a/src/daemon/microbreak/MicroBreakType.vala
+++ b/src/daemon/microbreak/MicroBreakType.vala
@@ -22,25 +22,15 @@ using BreakTimer.Daemon.TimerBreak;
namespace BreakTimer.Daemon.MicroBreak {
public class MicroBreakType : TimerBreakType {
- private ActivityMonitor activity_monitor;
+ public MicroBreakType (ActivityMonitor activity_monitor, UIManager ui_manager) {
+ var break_controller = new MicroBreakController (activity_monitor);
+ var break_view = new MicroBreakView (break_controller, ui_manager);
- public MicroBreakType (ActivityMonitor activity_monitor) {
- GLib.Settings settings = new GLib.Settings ("org.gnome.BreakTimer.microbreak");
- base ("microbreak", settings);
- this.activity_monitor = activity_monitor;
- }
-
- protected override BreakController get_break_controller () {
- return new MicroBreakController (
- this.activity_monitor
- );
- }
+ var settings = new GLib.Settings ("org.gnome.BreakTimer.microbreak");
+ settings.bind ("interval-seconds", break_controller, "interval", GLib.SettingsBindFlags.GET);
+ settings.bind ("duration-seconds", break_controller, "duration", GLib.SettingsBindFlags.GET);
- protected override BreakView get_break_view (BreakController controller, UIManager ui_manager) {
- return new MicroBreakView (
- (MicroBreakController)controller,
- ui_manager
- );
+ base ("microbreak", break_controller, break_view);
}
}
diff --git a/src/daemon/restbreak/RestBreakType.vala b/src/daemon/restbreak/RestBreakType.vala
index 694b00a..eb30091 100644
--- a/src/daemon/restbreak/RestBreakType.vala
+++ b/src/daemon/restbreak/RestBreakType.vala
@@ -22,25 +22,15 @@ using BreakTimer.Daemon.TimerBreak;
namespace BreakTimer.Daemon.RestBreak {
public class RestBreakType : TimerBreakType {
- private ActivityMonitor activity_monitor;
+ public RestBreakType (ActivityMonitor activity_monitor, UIManager ui_manager) {
+ var break_controller = new RestBreakController (activity_monitor);
+ var break_view = new RestBreakView (break_controller, ui_manager);
- public RestBreakType (ActivityMonitor activity_monitor) {
- GLib.Settings settings = new GLib.Settings ("org.gnome.BreakTimer.restbreak");
- base ("restbreak", settings);
- this.activity_monitor = activity_monitor;
- }
-
- protected override BreakController get_break_controller () {
- return new RestBreakController (
- this.activity_monitor
- );
- }
+ var settings = new GLib.Settings ("org.gnome.BreakTimer.restbreak");
+ settings.bind ("interval-seconds", break_controller, "interval", GLib.SettingsBindFlags.GET);
+ settings.bind ("duration-seconds", break_controller, "duration", GLib.SettingsBindFlags.GET);
- protected override BreakView get_break_view (BreakController controller, UIManager ui_manager) {
- return new RestBreakView (
- (RestBreakController)controller,
- ui_manager
- );
+ base ("restbreak", break_controller, break_view);
}
}
diff --git a/src/daemon/timerbreak/TimerBreakType.vala b/src/daemon/timerbreak/TimerBreakType.vala
index c6aab25..c931bd4 100644
--- a/src/daemon/timerbreak/TimerBreakType.vala
+++ b/src/daemon/timerbreak/TimerBreakType.vala
@@ -20,34 +20,30 @@ using BreakTimer.Daemon.Break;
namespace BreakTimer.Daemon.TimerBreak {
public abstract class TimerBreakType : BreakType {
- private TimerBreakDBusObject dbus_object;
-
- protected TimerBreakType (string id, GLib.Settings settings) {
- base (id, settings);
+ protected TimerBreakType (string id, BreakController break_controller, BreakView break_view) {
+ base (id, break_controller, break_view);
}
- protected override void initialize (UIManager ui_manager) {
- base.initialize (ui_manager);
-
- var timer_break_controller = (TimerBreakController)this.break_controller;
- var timer_break_view = (TimerBreakView)this.break_view;
-
- this.settings.bind ("interval-seconds", timer_break_controller, "interval",
GLib.SettingsBindFlags.GET);
- this.settings.bind ("duration-seconds", timer_break_controller, "duration",
GLib.SettingsBindFlags.GET);
+ public override bool init (GLib.Cancellable? cancellable) throws GLib.Error {
+ var timer_break_controller = (TimerBreakController) this.break_controller;
+ var timer_break_view = (TimerBreakView) this.break_view;
- this.dbus_object = new TimerBreakDBusObject (
+ var dbus_object = new TimerBreakDBusObject (
timer_break_controller,
timer_break_view
);
+
try {
GLib.DBusConnection connection = GLib.Bus.get_sync (GLib.BusType.SESSION, null);
connection.register_object (
Config.DAEMON_BREAK_OBJECT_BASE_PATH+this.id,
- this.dbus_object
+ dbus_object
);
} catch (GLib.IOError error) {
GLib.error ("Error registering break type on the session bus: %s", error.message);
}
+
+ return base.init (cancellable);
}
}
diff --git a/src/settings/Application.vala b/src/settings/Application.vala
index bbd6e79..9e99600 100644
--- a/src/settings/Application.vala
+++ b/src/settings/Application.vala
@@ -110,7 +110,7 @@ public class Application : Gtk.Application {
}
private void delayed_start () {
- // Delay up to 500ms waiting for break_manager to initialize
+ // Wait 500ms for break_manager to appear
this.break_manager.break_status_available.connect (this.delayed_start_cb);
GLib.Timeout.add (500, () => { delayed_start_cb (); return false; });
}
diff --git a/src/settings/BreakManager.vala b/src/settings/BreakManager.vala
index f292987..f9bdbd8 100644
--- a/src/settings/BreakManager.vala
+++ b/src/settings/BreakManager.vala
@@ -147,7 +147,11 @@ public class BreakManager : GLib.Object {
}
private void add_break (BreakType break_type) {
- break_type.initialize ();
+ try {
+ break_type.init (null);
+ } catch (GLib.Error error) {
+ GLib.warning ("Error initializing break type %s: %s", break_type.id, error.message);
+ }
this.breaks.set (break_type.id, break_type);
this.breaks_ordered.append (break_type);
break_type.status_changed.connect (this.break_status_changed);
diff --git a/src/settings/break/BreakType.vala b/src/settings/break/BreakType.vala
index 43fd04f..50e9dea 100644
--- a/src/settings/break/BreakType.vala
+++ b/src/settings/break/BreakType.vala
@@ -19,13 +19,13 @@ using BreakTimer.Common;
namespace BreakTimer.Settings.Break {
-public abstract class BreakType : GLib.Object {
+public abstract class BreakType : GLib.Object, GLib.Initable {
public string id { get; private set; }
- public BreakStatus? status;
+ public BreakStatus? status {get; private set; }
- public BreakInfoWidget info_widget;
- public BreakStatusWidget status_widget;
- public BreakSettingsWidget settings_widget;
+ public BreakInfoWidget info_widget {get; private set; }
+ public BreakStatusWidget status_widget {get; private set; }
+ public BreakSettingsWidget settings_widget {get; private set; }
public GLib.Settings settings;
@@ -36,10 +36,11 @@ public abstract class BreakType : GLib.Object {
public signal void status_changed (BreakStatus? status);
- public virtual void initialize () {
- this.info_widget = this.get_info_widget ();
- this.status_widget = this.get_status_widget ();
- this.settings_widget = this.get_settings_widget ();
+ public virtual bool init (GLib.Cancellable? cancellable) throws GLib.Error {
+ this.info_widget = this.create_info_widget ();
+ this.status_widget = this.create_status_widget ();
+ this.settings_widget = this.create_settings_widget ();
+ return true;
}
protected void update_status (BreakStatus? status) {
@@ -47,9 +48,9 @@ public abstract class BreakType : GLib.Object {
this.status_changed (status);
}
- protected abstract BreakInfoWidget get_info_widget ();
- protected abstract BreakStatusWidget get_status_widget ();
- protected abstract BreakSettingsWidget get_settings_widget ();
+ protected abstract BreakInfoWidget create_info_widget ();
+ protected abstract BreakStatusWidget create_status_widget ();
+ protected abstract BreakSettingsWidget create_settings_widget ();
}
}
diff --git a/src/settings/microbreak/MicroBreakType.vala b/src/settings/microbreak/MicroBreakType.vala
index 412b992..c8461ad 100644
--- a/src/settings/microbreak/MicroBreakType.vala
+++ b/src/settings/microbreak/MicroBreakType.vala
@@ -29,15 +29,15 @@ public class MicroBreakType : TimerBreakType {
this.duration_options = { 15, 30, 45, 60 };
}
- protected override BreakInfoWidget get_info_widget () {
+ protected override BreakInfoWidget create_info_widget () {
return new MicroBreakInfoWidget (this);
}
- protected override BreakStatusWidget get_status_widget () {
+ protected override BreakStatusWidget create_status_widget () {
return new MicroBreakStatusWidget (this);
}
- protected override BreakSettingsWidget get_settings_widget () {
+ protected override BreakSettingsWidget create_settings_widget () {
return new MicroBreakSettingsWidget (this);
}
}
diff --git a/src/settings/restbreak/RestBreakType.vala b/src/settings/restbreak/RestBreakType.vala
index 83f5f8f..51cae19 100644
--- a/src/settings/restbreak/RestBreakType.vala
+++ b/src/settings/restbreak/RestBreakType.vala
@@ -29,15 +29,15 @@ public class RestBreakType : TimerBreakType {
this.duration_options = { 240, 300, 360, 480, 600 };
}
- protected override BreakInfoWidget get_info_widget () {
+ protected override BreakInfoWidget create_info_widget () {
return new RestBreakInfoWidget (this);
}
- protected override BreakStatusWidget get_status_widget () {
+ protected override BreakStatusWidget create_status_widget () {
return new RestBreakStatusWidget (this);
}
- protected override BreakSettingsWidget get_settings_widget () {
+ protected override BreakSettingsWidget create_settings_widget () {
return new RestBreakSettingsWidget (this);
}
}
diff --git a/src/settings/timerbreak/TimerBreakType.vala b/src/settings/timerbreak/TimerBreakType.vala
index 96fcd42..4913c0f 100644
--- a/src/settings/timerbreak/TimerBreakType.vala
+++ b/src/settings/timerbreak/TimerBreakType.vala
@@ -37,9 +37,7 @@ public abstract class TimerBreakType : BreakType {
public signal void timer_status_changed (TimerBreakStatus? status);
- public override void initialize () {
- base.initialize ();
-
+ public override bool init (GLib.Cancellable? cancellable) throws GLib.Error {
GLib.Bus.watch_name (
GLib.BusType.SESSION,
Config.DAEMON_APPLICATION_ID,
@@ -47,6 +45,7 @@ public abstract class TimerBreakType : BreakType {
this.breakdaemon_appeared,
this.breakdaemon_disappeared
);
+ return base.init (cancellable);
}
protected new void update_status (TimerBreakStatus? status) {
diff --git a/src/settings/widgets/CircleCounter.vala b/src/settings/widgets/CircleCounter.vala
index 116a72f..73fa8ec 100644
--- a/src/settings/widgets/CircleCounter.vala
+++ b/src/settings/widgets/CircleCounter.vala
@@ -58,6 +58,8 @@ public class CircleCounter : Gtk.Widget {
});
}
+ // TODO: Animate between states <3
+
public override bool draw (Cairo.Context cr) {
Gtk.StyleContext style_context = this.get_style_context ();
Gtk.StateFlags state = this.get_state_flags ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]