[gnome-break-timer] Clean up BreakManager init, remove uses of libgee
- From: Dylan McCall <dylanmccall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-break-timer] Clean up BreakManager init, remove uses of libgee
- Date: Mon, 16 Nov 2020 17:21:51 +0000 (UTC)
commit 176c1c7266ecabe81639c27f6bbeedff1a3fc73b
Author: Dylan McCall <dylan dylanmccall ca>
Date: Mon Nov 16 09:19:45 2020 -0800
Clean up BreakManager init, remove uses of libgee
It seems a bit unnecessary pulling in libgee for a two-item list.
src/daemon/Application.vala | 14 +++++-
src/daemon/BreakManager.vala | 78 +++++++++++++++++--------------
src/daemon/BreakManagerDBusObject.vala | 12 +++--
src/daemon/SessionStatus.vala | 1 -
src/daemon/UIManager.vala | 13 ++++--
src/daemon/timerbreak/TimerBreakType.vala | 25 ++++++----
6 files changed, 88 insertions(+), 55 deletions(-)
---
diff --git a/src/daemon/Application.vala b/src/daemon/Application.vala
index d061760..8d5ff56 100644
--- a/src/daemon/Application.vala
+++ b/src/daemon/Application.vala
@@ -74,8 +74,18 @@ public class Application : Gtk.Application {
this.activity_monitor = new ActivityMonitor (session_status, activity_monitor_backend);
this.ui_manager = new UIManager (this, session_status);
- this.break_manager = new BreakManager (ui_manager);
- this.break_manager.load_breaks (activity_monitor);
+ try {
+ this.ui_manager.init ();
+ } catch (GLib.Error error) {
+ GLib.error("Error initializing ui: %s", error.message);
+ }
+
+ this.break_manager = new BreakManager (ui_manager, activity_monitor);
+ try {
+ this.break_manager.init ();
+ } catch (GLib.Error error) {
+ GLib.error("Error initializing ui: %s", error.message);
+ }
this.restore_state ();
diff --git a/src/daemon/BreakManager.vala b/src/daemon/BreakManager.vala
index d6c1732..5f20ce0 100644
--- a/src/daemon/BreakManager.vala
+++ b/src/daemon/BreakManager.vala
@@ -22,40 +22,65 @@ using BreakTimer.Daemon.RestBreak;
namespace BreakTimer.Daemon {
-public class BreakManager : GLib.Object {
- private UIManager ui_manager;
-
- private Gee.Map<string, BreakType> breaks;
- private BreakManagerDBusObject dbus_object;
-
+public class BreakManager : GLib.Object, GLib.Initable {
private GLib.Settings settings;
+ private GLib.HashTable<string, BreakType> breaks;
public bool master_enabled { get; set; }
public string[] selected_break_ids { get; set; }
- public BreakManager (UIManager ui_manager) {
- this.ui_manager = ui_manager;
-
- this.breaks = new Gee.HashMap<string, BreakType> ();
+ public BreakManager (UIManager ui_manager, ActivityMonitor activity_monitor) {
this.settings = new GLib.Settings ("org.gnome.BreakTimer");
+ this.breaks = new GLib.HashTable<string, BreakType> (str_hash, str_equal);
+ this.breaks.set(
+ "microbreak",
+ new MicroBreakType (activity_monitor, ui_manager)
+ );
+ this.breaks.set(
+ "restbreak",
+ new RestBreakType (activity_monitor, ui_manager)
+ );
+
this.settings.bind ("enabled", this, "master-enabled", GLib.SettingsBindFlags.DEFAULT);
this.settings.bind ("selected-breaks", this, "selected-break-ids", GLib.SettingsBindFlags.DEFAULT);
+
this.notify["master-enabled"].connect (this.update_enabled_breaks);
this.notify["selected-break-ids"].connect (this.update_enabled_breaks);
+ this.update_enabled_breaks ();
+ }
+
+ public bool init (GLib.Cancellable? cancellable) throws GLib.Error {
+ GLib.DBusConnection connection;
- this.dbus_object = new BreakManagerDBusObject (this);
try {
- GLib.DBusConnection connection = GLib.Bus.get_sync (
+ connection = GLib.Bus.get_sync (
GLib.BusType.SESSION,
null
);
+ } catch (GLib.IOError error) {
+ GLib.warning ("Error connecting to the session bus: %s", error.message);
+ throw error;
+ }
+
+ try {
connection.register_object (
Config.DAEMON_OBJECT_PATH,
- this.dbus_object
+ new BreakManagerDBusObject (this)
);
} catch (GLib.IOError error) {
- GLib.error ("Error registering daemon on the session bus: %s", error.message);
+ GLib.warning ("Error registering daemon on the session bus: %s", error.message);
+ throw error;
}
+
+ foreach (BreakType break_type in this.all_breaks ()) {
+ try {
+ break_type.init (cancellable);
+ } catch (GLib.Error error) {
+ GLib.warning ("Error initializing break type %s: %s", break_type.id, error.message);
+ }
+ }
+
+ return true;
}
public Json.Object serialize () {
@@ -76,31 +101,16 @@ public class BreakManager : GLib.Object {
}
}
- public void load_breaks (ActivityMonitor 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 ();
- }
-
- public Gee.Set<string> all_break_ids () {
- return this.breaks.keys;
+ public GLib.List<unowned string> all_break_ids () {
+ return this.breaks.get_keys ();
}
- public Gee.Collection<BreakType> all_breaks () {
- return this.breaks.values;
+ public GLib.List<unowned BreakType> all_breaks () {
+ return this.breaks.get_values ();
}
public BreakType? get_break_type_for_name (string name) {
- return this.breaks.get (name);
- }
-
- private void add_break (BreakType break_type) {
- this.breaks.set (break_type.id, break_type);
- try {
- break_type.init (null);
- } catch (GLib.Error error) {
- GLib.warning ("Error initializing break type %s: %s", break_type.id, error.message);
- }
+ return this.breaks.lookup (name);
}
private void update_enabled_breaks () {
diff --git a/src/daemon/BreakManagerDBusObject.vala b/src/daemon/BreakManagerDBusObject.vala
index 8af4ae9..fbc3f66 100644
--- a/src/daemon/BreakManagerDBusObject.vala
+++ b/src/daemon/BreakManagerDBusObject.vala
@@ -47,16 +47,20 @@ public class BreakManagerDBusObject : GLib.Object, IBreakTimer {
}
public string[] get_break_ids () throws GLib.DBusError, GLib.IOError {
- return this.break_manager.all_break_ids ().to_array ();
+ var break_ids = new GLib.Array<string> ();
+ foreach (unowned string break_id in this.break_manager.all_break_ids ()) {
+ break_ids.append_val (break_id);
+ }
+ return break_ids.steal ();
}
public string[] get_status_messages () throws GLib.DBusError, GLib.IOError {
- var messages = new Gee.ArrayList<string> ();
+ var messages = new GLib.Array<string> ();
foreach (BreakType break_type in break_manager.all_breaks ()) {
string status_message = break_type.break_view.get_status_message ();
- messages.add ("%s:\t%s".printf (break_type.id, status_message));
+ messages.append_val ("%s:\t%s".printf (break_type.id, status_message));
}
- return messages.to_array ();
+ return messages.steal ();
}
public void activate_break (string break_name) throws GLib.DBusError, GLib.IOError {
diff --git a/src/daemon/SessionStatus.vala b/src/daemon/SessionStatus.vala
index 19f6318..b2f8cce 100644
--- a/src/daemon/SessionStatus.vala
+++ b/src/daemon/SessionStatus.vala
@@ -30,7 +30,6 @@ public class SessionStatus : GLib.Object, ISessionStatus {
public SessionStatus (Gtk.Application application) {
this.application = application;
-
GLib.Bus.watch_name (
GLib.BusType.SESSION,
"org.gnome.ScreenSaver",
diff --git a/src/daemon/UIManager.vala b/src/daemon/UIManager.vala
index bd69126..7c4db0e 100644
--- a/src/daemon/UIManager.vala
+++ b/src/daemon/UIManager.vala
@@ -27,7 +27,7 @@ namespace BreakTimer.Daemon {
* sure only one break is affecting the UI at a time. This class also tries to
* keep UI events nicely spaced so they don't generate excessive noise.
*/
-public class UIManager : SimpleFocusManager {
+public class UIManager : SimpleFocusManager, GLib.Initable {
private weak Gtk.Application application;
private ISessionStatus session_status;
@@ -42,16 +42,19 @@ public class UIManager : SimpleFocusManager {
this.application = application;
this.session_status = session_status;
+ this.session_status.unlocked.connect (this.hide_lock_notification_cb);
+ this.notify_capabilities = Notify.get_server_caps ();
+ }
+
+ public bool init (GLib.Cancellable? cancellable) throws GLib.Error {
try {
this.gsound = new GSound.Context ();
- this.gsound.init ();
+ this.gsound.init (cancellable);
} catch (GLib.Error error) {
GLib.warning ("Error initializing gsound: %s", error.message);
this.gsound = null;
}
-
- this.session_status.unlocked.connect (this.hide_lock_notification_cb);
- this.notify_capabilities = Notify.get_server_caps ();
+ return true;
}
public bool notifications_can_do (string capability) {
diff --git a/src/daemon/timerbreak/TimerBreakType.vala b/src/daemon/timerbreak/TimerBreakType.vala
index c931bd4..ec5287c 100644
--- a/src/daemon/timerbreak/TimerBreakType.vala
+++ b/src/daemon/timerbreak/TimerBreakType.vala
@@ -25,22 +25,29 @@ public abstract class TimerBreakType : BreakType {
}
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;
+ GLib.DBusConnection connection;
- var dbus_object = new TimerBreakDBusObject (
- timer_break_controller,
- timer_break_view
- );
+ try {
+ connection = GLib.Bus.get_sync (
+ GLib.BusType.SESSION,
+ null
+ );
+ } catch (GLib.IOError error) {
+ GLib.warning ("Error connecting to the session bus: %s", error.message);
+ throw error;
+ }
try {
- GLib.DBusConnection connection = GLib.Bus.get_sync (GLib.BusType.SESSION, null);
connection.register_object (
Config.DAEMON_BREAK_OBJECT_BASE_PATH+this.id,
- dbus_object
+ new TimerBreakDBusObject (
+ (TimerBreakController) this.break_controller,
+ (TimerBreakView) this.break_view
+ )
);
} catch (GLib.IOError error) {
- GLib.error ("Error registering break type on the session bus: %s", error.message);
+ GLib.warning ("Error registering break type on the session bus: %s", error.message);
+ throw error;
}
return base.init (cancellable);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]