[gnote] Improve AddinManager for synchronization add-ins



commit 155ca88bd227898ed6d796190f7aa9b14e4886ef
Author: Aurimas Äernius <aurisc4 gmail com>
Date:   Wed Aug 15 16:20:24 2012 +0300

    Improve AddinManager for synchronization add-ins
    
    * Add method get_sync_service_addin
    * Add method initialize_sync_service_addins

 src/addinmanager.cpp |   30 ++++++++++++++++++++++++++++++
 src/addinmanager.hpp |    7 +++----
 2 files changed, 33 insertions(+), 4 deletions(-)
---
diff --git a/src/addinmanager.cpp b/src/addinmanager.cpp
index 3b1cbe1..9cbab8a 100644
--- a/src/addinmanager.cpp
+++ b/src/addinmanager.cpp
@@ -312,6 +312,16 @@ namespace gnote {
     return 0;
   }
 
+  sync::SyncServiceAddin *AddinManager::get_sync_service_addin(const std::string & id) const
+  {
+    const IdSyncServiceAddinMap::const_iterator iter = m_sync_service_addins.find(id);
+    if(iter != m_sync_service_addins.end()) {
+      return iter->second;
+    }
+
+    return NULL;
+  }
+
   void AddinManager::get_preference_tab_addins(std::list<PreferenceTabAddin *> &l) const
   {
     sharp::map_get_values(m_pref_tab_addins, l);
@@ -342,6 +352,26 @@ namespace gnote {
     }
   }
 
+  void AddinManager::initialize_sync_service_addins() const
+  {
+    for(IdSyncServiceAddinMap::const_iterator iter = m_sync_service_addins.begin();
+        iter != m_sync_service_addins.end(); ++iter) {
+      sync::SyncServiceAddin *addin = NULL;
+      try {
+        addin = iter->second;
+        const sharp::DynamicModule *dmod = m_module_manager.get_module(iter->first);
+        if(!dmod || dmod->is_enabled()) {
+          addin->initialize();
+        }
+      }
+      catch(std::exception & e) {
+        DBG_OUT("Error calling %s.initialize (): %s", addin->id().c_str(), e.what());
+
+        // TODO: Call something like AddinManager.Disable (addin)
+      }
+    }
+  }
+
   void AddinManager::shutdown_application_addins() const
   {
     for(AppAddinMap::const_iterator iter = m_app_addins.begin();
diff --git a/src/addinmanager.hpp b/src/addinmanager.hpp
index cb8d059..9be4d65 100644
--- a/src/addinmanager.hpp
+++ b/src/addinmanager.hpp
@@ -61,12 +61,13 @@ public:
     }
 
   void load_addins_for_note(const Note::Ptr &);
-  ApplicationAddin * get_application_addin(const std::string & id)
-                                           const;
+  ApplicationAddin *get_application_addin(const std::string & id) const;
+  sync::SyncServiceAddin *get_sync_service_addin(const std::string & id) const;
   void get_preference_tab_addins(std::list<PreferenceTabAddin *> &) const;
   void get_sync_service_addins(std::list<sync::SyncServiceAddin *> &) const;
   void get_import_addins(std::list<ImportAddin*> &) const;
   void initialize_application_addins() const;
+  void initialize_sync_service_addins() const;
   void shutdown_application_addins() const;
   void save_addins_prefs() const;
 
@@ -76,8 +77,6 @@ public:
     }
 
   Gtk::Widget * create_addin_preference_widget(const std::string & id);
-
-  sigc::signal<void> & signal_application_addin_list_changed();
 private:
 
   void initialize_sharp_addins();



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