[gnome-music/wip/jfelder/application-settings: 2/4] application: Expose settings as an application property



commit 7bdf62cba6027efb3d58a78814a2218683eb2ee3
Author: Jean Felder <jfelder src gnome org>
Date:   Thu Apr 11 08:31:30 2019 +0200

    application: Expose settings as an application property
    
    This will allow to instantiate the settings only once.

 gnomemusic/application.py    | 11 +++++++++++
 gnomemusic/gstplayer.py      |  2 +-
 gnomemusic/inhibitsuspend.py |  4 ++--
 gnomemusic/window.py         |  2 +-
 4 files changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/gnomemusic/application.py b/gnomemusic/application.py
index 9d78fb7e..6a92b4ed 100644
--- a/gnomemusic/application.py
+++ b/gnomemusic/application.py
@@ -60,6 +60,7 @@ class Application(Gtk.Application):
         self._init_style()
         self._window = None
 
+        self._settings = Gio.Settings.new('org.gnome.Music')
         self._player = Player(self)
 
     def _init_style(self):
@@ -80,6 +81,16 @@ class Application(Gtk.Application):
         """
         return self._player
 
+    @GObject.Property(
+        type=Gio.Settings, flags=GObject.ParamFlags.READABLE)
+    def settings(self):
+        """Get application-wide settings.
+
+        :returns: settings
+        :rtype: Gio.settings
+        """
+        return self._settings
+
     @log
     def _build_app_menu(self):
         action_entries = [
diff --git a/gnomemusic/gstplayer.py b/gnomemusic/gstplayer.py
index 4c259eb6..7faacff0 100644
--- a/gnomemusic/gstplayer.py
+++ b/gnomemusic/gstplayer.py
@@ -74,7 +74,7 @@ class GstPlayer(GObject.GObject):
         self._duration = -1.
 
         self._missing_plugin_messages = []
-        self._settings = Gio.Settings.new('org.gnome.Music')
+        self._settings = application.props.settings
 
         self._player = Gst.ElementFactory.make('playbin3', 'player')
         self._bus = self._player.get_bus()
diff --git a/gnomemusic/inhibitsuspend.py b/gnomemusic/inhibitsuspend.py
index 7c162979..677fe115 100644
--- a/gnomemusic/inhibitsuspend.py
+++ b/gnomemusic/inhibitsuspend.py
@@ -24,7 +24,7 @@
 import logging
 
 from gettext import gettext as _
-from gi.repository import Gtk, Gio, GObject
+from gi.repository import Gtk, GObject
 
 from gnomemusic import log
 from gnomemusic.gstplayer import Playback
@@ -57,7 +57,7 @@ class InhibitSuspend(GObject.GObject):
 
         self._player.connect('notify::state', self._on_player_state_changed)
 
-        self._settings = Gio.Settings.new('org.gnome.Music')
+        self._settings = application.props.settings
         self._should_inhibit = self._settings.get_boolean('inhibit-suspend')
         self._settings.connect(
             'changed::inhibit-suspend', self._on_inhibit_suspend_changed)
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index 6bef29c3..5d8e26df 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -76,7 +76,7 @@ class Window(Gtk.ApplicationWindow):
         """
         super().__init__(application=app, title=_("Music"))
 
-        self._settings = Gio.Settings.new('org.gnome.Music')
+        self._settings = app.props.settings
         self.add_action(self._settings.create_action('repeat'))
         select_all = Gio.SimpleAction.new('select_all', None)
         select_all.connect('activate', self._select_all)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]