[gnote] Use new preferences utilities in addin manager



commit 5418457da9ab3d8a2854615c7811b07da4218364
Author: Aurimas Černius <aurisc4 gmail com>
Date:   Fri Dec 18 22:46:44 2020 +0200

    Use new preferences utilities in addin manager

 src/addinmanager.cpp | 60 +++++++++++++++++++---------------------------------
 src/addinmanager.hpp |  3 +--
 2 files changed, 23 insertions(+), 40 deletions(-)
---
diff --git a/src/addinmanager.cpp b/src/addinmanager.cpp
index 537dc2e5..a6a1a58e 100644
--- a/src/addinmanager.cpp
+++ b/src/addinmanager.cpp
@@ -56,28 +56,21 @@ namespace gnote {
   m_app_addins.insert(std::make_pair(typeid(klass).name(),        \
                                      klass::create()))
 
-#define SETUP_NOTE_ADDIN(key, KEY, klass) \
-  do { \
-    if(key == KEY) { \
-      Glib::RefPtr<Gio::Settings> settings = m_preferences \
-        .get_schema_settings(Preferences::SCHEMA_GNOTE); \
-      if(settings->get_boolean(key)) { \
-        sharp::IfaceFactoryBase *iface = new sharp::IfaceFactory<klass>; \
-        m_builtin_ifaces.push_back(iface); \
-        load_note_addin(typeid(klass).name(), iface); \
-      } \
-      else { \
-        erase_note_addin_info(typeid(klass).name()); \
-      } \
+#define SETUP_NOTE_ADDIN(key, klass) \
+  m_preferences.signal_##key##_changed.connect([this]() { \
+    if(m_preferences.key()) { \
+      sharp::IfaceFactoryBase *iface = new sharp::IfaceFactory<klass>; \
+      m_builtin_ifaces.push_back(iface); \
+      load_note_addin(typeid(klass).name(), iface); \
     } \
-  } while(0)
-
-#define SETUP_APP_ADDIN(key, KEY, klass) \
-  do { \
-    if(key == KEY) { \
-      Glib::RefPtr<Gio::Settings> settings = m_preferences \
-        .get_schema_settings(Preferences::SCHEMA_GNOTE); \
-      if(settings->get_boolean(key)) { \
+    else { \
+      erase_note_addin_info(typeid(klass).name()); \
+    } \
+  })
+
+#define SETUP_APP_ADDIN(key, klass) \
+  m_preferences.signal_##key##_changed.connect([this]() { \
+      if(m_preferences.key()) { \
         auto iter = m_app_addins.find(typeid(klass).name()); \
         if(iter != m_app_addins.end()) { \
           iter->second->initialize(); \
@@ -94,8 +87,7 @@ namespace gnote {
           addin->second->shutdown(); \
         } \
       } \
-    } \
-  } while(0)
+  })
 
 namespace {
   template <typename AddinType>
@@ -284,21 +276,21 @@ namespace {
     if (!sharp::directory_exists (m_addins_prefs_dir))
       g_mkdir_with_parents(m_addins_prefs_dir.c_str(), S_IRWXU);
 
-    Glib::RefPtr<Gio::Settings> settings = m_preferences
-      .get_schema_settings(Preferences::SCHEMA_GNOTE);
-    settings->signal_changed()
-      .connect(sigc::mem_fun(*this, &AddinManager::on_setting_changed));
+    SETUP_NOTE_ADDIN(enable_url_links, NoteUrlWatcher);
+    SETUP_NOTE_ADDIN(enable_auto_links, NoteLinkWatcher);
+    SETUP_APP_ADDIN(enable_auto_links, AppLinkWatcher);
+    SETUP_NOTE_ADDIN(enable_wikiwords, NoteWikiWatcher);
 
     REGISTER_BUILTIN_NOTE_ADDIN(NoteRenameWatcher);
     REGISTER_BUILTIN_NOTE_ADDIN(NoteSpellChecker);
-    if(settings->get_boolean(Preferences::ENABLE_URL_LINKS)) {
+    if(m_preferences.enable_url_links()) {
       REGISTER_BUILTIN_NOTE_ADDIN(NoteUrlWatcher);
     }
-    if(settings->get_boolean(Preferences::ENABLE_AUTO_LINKS)) {
+    if(m_preferences.enable_auto_links()) {
       REGISTER_APP_ADDIN(AppLinkWatcher);
       REGISTER_BUILTIN_NOTE_ADDIN(NoteLinkWatcher);
     }
-    if(settings->get_boolean(Preferences::ENABLE_WIKIWORDS)) {
+    if(m_preferences.enable_wikiwords()) {
       REGISTER_BUILTIN_NOTE_ADDIN(NoteWikiWatcher);
     }
     REGISTER_BUILTIN_NOTE_ADDIN(MouseHandWatcher);
@@ -595,14 +587,6 @@ namespace {
     return NULL;
   }
 
-  void AddinManager::on_setting_changed(const Glib::ustring & key)
-  {
-    SETUP_NOTE_ADDIN(key, Preferences::ENABLE_URL_LINKS, NoteUrlWatcher);
-    SETUP_NOTE_ADDIN(key, Preferences::ENABLE_AUTO_LINKS, NoteLinkWatcher);
-    SETUP_APP_ADDIN(key, Preferences::ENABLE_AUTO_LINKS, AppLinkWatcher);
-    SETUP_NOTE_ADDIN(key, Preferences::ENABLE_WIKIWORDS, NoteWikiWatcher);
-  }
-
   void AddinManager::register_addin_actions() const
   {
     auto & manager(m_gnote.action_manager());
diff --git a/src/addinmanager.hpp b/src/addinmanager.hpp
index 3a9d7a6d..b18ff45f 100644
--- a/src/addinmanager.hpp
+++ b/src/addinmanager.hpp
@@ -1,7 +1,7 @@
 /*
  * gnote
  *
- * Copyright (C) 2010,2012-2015,2017,2019 Aurimas Cernius
+ * Copyright (C) 2010,2012-2015,2017,2019-2020 Aurimas Cernius
  * Copyright (C) 2009 Debarshi Ray
  * Copyright (C) 2009 Hubert Figuiere
  *
@@ -92,7 +92,6 @@ private:
   void initialize_sharp_addins();
   void add_module_addins(const Glib::ustring & mod_id, sharp::DynamicModule * dmod);
   AddinInfo get_info_for_module(const Glib::ustring & module) const;
-  void on_setting_changed(const Glib::ustring & key);
   void register_addin_actions() const;
     
   IGnote & m_gnote;


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