[gnote] Use NoteManagerBase instead of NoteManager in SyncManager
- From: Aurimas Černius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote] Use NoteManagerBase instead of NoteManager in SyncManager
- Date: Sun, 25 May 2014 18:00:07 +0000 (UTC)
commit 87815820822e7d7c7402aaba1c27f8f43ac31d18
Author: Aurimas Černius <aurisc4 gmail com>
Date: Sun May 25 20:56:35 2014 +0300
Use NoteManagerBase instead of NoteManager in SyncManager
src/synchronization/syncmanager.cpp | 64 +++++++++++++++++++++++++---------
src/synchronization/syncmanager.hpp | 15 +++++---
2 files changed, 56 insertions(+), 23 deletions(-)
---
diff --git a/src/synchronization/syncmanager.cpp b/src/synchronization/syncmanager.cpp
index 987d554..86ff9c8 100644
--- a/src/synchronization/syncmanager.cpp
+++ b/src/synchronization/syncmanager.cpp
@@ -42,7 +42,7 @@
namespace gnote {
namespace sync {
- SyncManager::SyncManager(NoteManager & m)
+ SyncManager::SyncManager(NoteManagerBase & m)
: m_note_manager(m)
, m_state(IDLE)
, m_sync_thread(NULL)
@@ -50,14 +50,14 @@ namespace sync {
}
- void SyncManager::init(NoteManager & m)
+ void SyncManager::init(NoteManagerBase & m)
{
SyncManager *manager = new SyncManager(m);
manager->_init(m);
}
- void SyncManager::_init(NoteManager & manager)
+ void SyncManager::_init(NoteManagerBase & manager)
{
m_client = SyncClient::Ptr(new GnoteSyncClient(manager));
// Add a "Synchronize Notes" to Gnote's Application Menu
@@ -66,20 +66,44 @@ namespace sync {
am.add_app_menu_item(IActionManager::APP_ACTION_MANAGE, 200, _("Synchronize Notes"), "app.sync-notes");
// Initialize all the SyncServiceAddins
- manager.get_addin_manager().initialize_sync_service_addins();
+ initialize_sync_service_addins(manager);
- Preferences::obj().get_schema_settings(Preferences::SCHEMA_SYNC)->signal_changed()
- .connect(sigc::mem_fun(*this, &SyncManager::preferences_setting_changed));
- note_mgr().signal_note_saved.connect(sigc::mem_fun(*this, &SyncManager::handle_note_saved_or_deleted));
- note_mgr().signal_note_deleted.connect(sigc::mem_fun(*this, &SyncManager::handle_note_saved_or_deleted));
- note_mgr().signal_note_buffer_changed.connect(sigc::mem_fun(*this,
&SyncManager::handle_note_buffer_changed));
- m_autosync_timer.signal_timeout.connect(sigc::mem_fun(*this, &SyncManager::background_sync_checker));
+ connect_system_signals();
// Update sync item based on configuration.
update_sync_action();
}
+ void SyncManager::initialize_sync_service_addins(NoteManagerBase & note_manager)
+ {
+ try {
+ NoteManager & manager(dynamic_cast<NoteManager&>(note_manager));
+ manager.get_addin_manager().initialize_sync_service_addins();
+ }
+ catch(std::bad_cast & e) {
+ ERR_OUT(_("Report a bug. Cast failed: %s"), e.what());
+ }
+ }
+
+
+ void SyncManager::connect_system_signals()
+ {
+ try {
+ NoteManager & manager(dynamic_cast<NoteManager&>(note_mgr()));
+ Preferences::obj().get_schema_settings(Preferences::SCHEMA_SYNC)->signal_changed()
+ .connect(sigc::mem_fun(*this, &SyncManager::preferences_setting_changed));
+ manager.signal_note_saved.connect(sigc::mem_fun(*this, &SyncManager::handle_note_saved_or_deleted));
+ manager.signal_note_deleted.connect(sigc::mem_fun(*this, &SyncManager::handle_note_saved_or_deleted));
+ manager.signal_note_buffer_changed.connect(sigc::mem_fun(*this,
&SyncManager::handle_note_buffer_changed));
+ m_autosync_timer.signal_timeout.connect(sigc::mem_fun(*this, &SyncManager::background_sync_checker));
+ }
+ catch(std::bad_cast & e) {
+ ERR_OUT(_("Report a bug. Cast failed: %s"), e.what());
+ }
+ }
+
+
void SyncManager::reset_client()
{
try {
@@ -536,14 +560,20 @@ namespace sync {
{
SyncServiceAddin *addin = NULL;
- std::list<SyncServiceAddin*> addins;
- m_note_manager.get_addin_manager().get_sync_service_addins(addins);
- for(std::list<SyncServiceAddin*>::iterator iter = addins.begin(); iter != addins.end(); ++iter) {
- if((*iter)->id() == sync_service_id) {
- addin = *iter;
- break;
+ try {
+ NoteManager & manager(dynamic_cast<NoteManager&>(m_note_manager));
+ std::list<SyncServiceAddin*> addins;
+ manager.get_addin_manager().get_sync_service_addins(addins);
+ for(std::list<SyncServiceAddin*>::iterator iter = addins.begin(); iter != addins.end(); ++iter) {
+ if((*iter)->id() == sync_service_id) {
+ addin = *iter;
+ break;
+ }
}
}
+ catch(std::bad_cast & e) {
+ ERR_OUT(_("Report a bug. Cast failed: %s"), e.what());
+ }
return addin;
}
@@ -605,7 +635,7 @@ namespace sync {
}
- NoteManager & SyncManager::note_mgr()
+ NoteManagerBase & SyncManager::note_mgr()
{
return m_note_manager;
}
diff --git a/src/synchronization/syncmanager.hpp b/src/synchronization/syncmanager.hpp
index e7ea829..bf4ef64 100644
--- a/src/synchronization/syncmanager.hpp
+++ b/src/synchronization/syncmanager.hpp
@@ -40,8 +40,8 @@ namespace sync {
: public ISyncManager
{
public:
- SyncManager(NoteManager &);
- static void init(NoteManager &);
+ SyncManager(NoteManagerBase &);
+ static void init(NoteManagerBase &);
virtual void reset_client() override;
virtual void perform_synchronization(const SyncUI::Ptr & sync_ui) override;
void synchronization_thread();
@@ -51,12 +51,16 @@ namespace sync {
{
return m_state;
}
+ protected:
+ virtual void initialize_sync_service_addins(NoteManagerBase &);
+ virtual void connect_system_signals();
+ virtual SyncServiceAddin *get_sync_service_addin(const std::string & sync_service_id);
private:
static SyncManager & _obj()
{
return static_cast<SyncManager&>(obj());
}
- void _init(NoteManager &);
+ void _init(NoteManagerBase &);
void handle_note_saved_or_deleted(const NoteBase::Ptr & note);
void handle_note_buffer_changed(const NoteBase::Ptr & note);
void preferences_setting_changed(const Glib::ustring & key);
@@ -64,13 +68,12 @@ namespace sync {
void background_sync_checker();
void set_state(SyncState new_state);
SyncServiceAddin *get_configured_sync_service();
- SyncServiceAddin *get_sync_service_addin(const std::string & sync_service_id);
void create_note_in_main_thread(const NoteUpdate & noteUpdate);
void update_note_in_main_thread(const Note::Ptr & existingNote, const NoteUpdate & noteUpdate);
void delete_note_in_main_thread(const Note::Ptr & existingNote);
void update_local_note(const NoteBase::Ptr & localNote, const NoteUpdate & serverNote, NoteSyncType
syncType);
NoteBase::Ptr find_note_by_uuid(const std::string & uuid);
- NoteManager & note_mgr();
+ NoteManagerBase & note_mgr();
void get_synchronized_xml_bits(const std::string & noteXml, std::string & title, std::string & tags,
std::string & content);
void delete_notes(const SyncServer::Ptr & server);
void create_note(const NoteUpdate & noteUpdate);
@@ -78,7 +81,7 @@ namespace sync {
void delete_note(const Note::Ptr & existingNote);
static void note_save(const Note::Ptr & note);
- NoteManager & m_note_manager;
+ NoteManagerBase & m_note_manager;
SyncUI::Ptr m_sync_ui;
SyncClient::Ptr m_client;
SyncState m_state;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]