[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [KSecretService] 1d56245: Make BackendMaster a K_GLOBAL_STATIC so the
From:       Michael Leupold <lemma () confuego ! org>
Date:       2010-11-09 19:14:28
Message-ID: 20101109191428.80A82A60E5 () git ! kde ! org
[Download RAW message or body]

commit 1d562458a1547ef6cdecea395b494b864f88922c
branch master
Author: Michael Leupold <lemma@confuego.org>
Date:   Sat Sep 4 19:45:04 2010 +0000

    Make BackendMaster a K_GLOBAL_STATIC so the AbstractUiManager it holds can be accessed from anywhere.
    
    svn path=/trunk/playground/base/ksecretservice/; revision=1171666

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 929968e..43719d6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,6 +19,7 @@ TARGET_LINK_LIBRARIES (ksecretserviced
    ksecretservicebackend
    ksecretservicefrontend
    ksecretservicelib
+   ksecretserviceui
    ${KDE4_KDEUI_LIBS}
 )
 
diff --git a/backend/backendmaster.cpp b/backend/backendmaster.cpp
index 791575e..e0a7435 100644
--- a/backend/backendmaster.cpp
+++ b/backend/backendmaster.cpp
@@ -22,15 +22,25 @@
 #include "backendcollection.h"
 #include "backendcollectionmanager.h"
 
+#include "ui/abstractuimanager.h"
+
 #include <QtCore/QEventLoop>
 
-BackendMaster::BackendMaster(QObject *parent) : QObject(parent)
+K_GLOBAL_STATIC(BackendMaster, s_backendMaster)
+
+BackendMaster::BackendMaster()
+ : m_uiManager(0)
 {
 }
 
 BackendMaster::~BackendMaster()
 {
-   // TODO: delete objects in m_collections?
+   delete m_uiManager;
+}
+
+BackendMaster *BackendMaster::instance()
+{
+   return s_backendMaster;
 }
 
 void BackendMaster::addManager(BackendCollectionManager *manager)
@@ -62,6 +72,18 @@ QList<BackendCollectionManager*> &BackendMaster::managers()
    return m_collectionManagers;
 }
 
+void BackendMaster::setUiManager(AbstractUiManager *uiManager)
+{
+   delete m_uiManager;
+   m_uiManager = uiManager;
+}
+
+AbstractUiManager *BackendMaster::uiManager()
+{
+   Q_ASSERT(m_uiManager);
+   return m_uiManager;
+}
+
 CreateCollectionMasterJob *BackendMaster::createCreateCollectionMasterJob(
    const QString &label, bool locked)
 {
diff --git a/backend/backendmaster.h b/backend/backendmaster.h
index e6b1ac9..3d8dfbb 100644
--- a/backend/backendmaster.h
+++ b/backend/backendmaster.h
@@ -31,6 +31,7 @@
 
 class BackendCollection;
 class BackendCollectionManager;
+class AbstractUiManager;
 
 /**
  * @todo find a better name for this class
@@ -47,19 +48,22 @@ class BackendMaster : public QObject, public JobQueue
    Q_OBJECT
 
 public:
-   friend class AsyncCreateCollectionMaster;
-   
    /**
     * Constructor.
     *
-    * @param parent Parent object
+    * @remarks only called by K_GLOBAL_STATIC
     */
-   BackendMaster(QObject *parent = 0);
+   BackendMaster();
 
    /**
     * Destructor
     */
    virtual ~BackendMaster();
+   
+   /**
+    * Get the singleton BackendMaster instance.
+    */
+   static BackendMaster *instance();
 
    /**
     * Adds a new collection manager to the list of known managers.
@@ -100,6 +104,19 @@ public:
     */
    CreateCollectionMasterJob *createCreateCollectionMasterJob(const QString &label,
                                                               bool locked);
+      
+   /**
+    * Set the user interface manager to use.
+    *
+    * @remarks Any previously set user interface manager will be deleted.
+    *          This MUST be set before using any of the backend methods.
+    */
+   void setUiManager(AbstractUiManager *manager);
+   
+   /**
+    * Get the user interface manager to use.
+    */
+   AbstractUiManager *uiManager();
 
 private Q_SLOTS:
    /**
@@ -141,6 +158,8 @@ Q_SIGNALS:
 private:
    QList<BackendCollection*> m_collections;
    QList<BackendCollectionManager*> m_collectionManagers;
+   
+   AbstractUiManager *m_uiManager;
 };
 
 #endif
diff --git a/backend/tests/CMakeLists.txt b/backend/tests/CMakeLists.txt
index 3951b1d..d37fd1d 100644
--- a/backend/tests/CMakeLists.txt
+++ b/backend/tests/CMakeLists.txt
@@ -4,6 +4,7 @@ KDE4_ADD_EXECUTABLE (ksecretservice_backend_test backendtest.cpp)
 TARGET_LINK_LIBRARIES (ksecretservice_backend_test
    ksecretservicebackend
    ksecretservicelib
+   ksecretserviceui
    ${QT_QTTEST_LIBRARIES}
 )
 
diff --git a/backend/tests/backendtest.cpp b/backend/tests/backendtest.cpp
index 0cf8888..4ad9635 100644
--- a/backend/tests/backendtest.cpp
+++ b/backend/tests/backendtest.cpp
@@ -23,6 +23,7 @@
 #include <temporary/temporarycollectionmanager.h>
 #include <backendcollection.h>
 #include <backenditem.h>
+#include <ui/nouimanager.h>
 
 Q_DECLARE_METATYPE(BackendCollection*)
 Q_DECLARE_METATYPE(BackendItem*)
@@ -42,7 +43,8 @@ void BackendTest::initTestCase()
     qRegisterMetaType<BackendCollection*>();
     qRegisterMetaType<BackendItem*>();
     QCA::init();
-    m_master = new BackendMaster(this);
+    m_master = BackendMaster::instance();
+    m_master->setUiManager(new NoUiManager);
     m_manager = new TemporaryCollectionManager(m_master);
     m_master->addManager(m_manager);
 }
diff --git a/frontend/tests/CMakeLists.txt b/frontend/tests/CMakeLists.txt
index 3d8f298..1dece2a 100644
--- a/frontend/tests/CMakeLists.txt
+++ b/frontend/tests/CMakeLists.txt
@@ -18,6 +18,7 @@ TARGET_LINK_LIBRARIES (ksecretservice_frontend_test
    ksecretservicebackend
    ksecretservicefrontend
    ksecretservicelib
+   ksecretserviceui
    ${QT_QTTEST_LIBRARIES}
 )
 
diff --git a/frontend/tests/servicetest.cpp b/frontend/tests/servicetest.cpp
index 8b76a0d..2ad0019 100644
--- a/frontend/tests/servicetest.cpp
+++ b/frontend/tests/servicetest.cpp
@@ -25,6 +25,7 @@
 #include "tempblockingcollectionmanager.h"
 #include "secret/service.h"
 #include "secret/adaptors/dbustypes.h"
+#include "ui/nouimanager.h"
 
 #include <qtest_kde.h>
 
@@ -44,7 +45,8 @@ void ServiceTest::initTestCase()
 
    QCA::init();
    
-   m_master = new BackendMaster;
+   m_master = BackendMaster::instance();
+   m_master->setUiManager(new NoUiManager);
    m_tempCollMan = new TemporaryCollectionManager(m_master);
    m_master->addManager(m_tempCollMan);
    m_service = new Service(m_master);
@@ -622,7 +624,6 @@ void ServiceTest::blockingItem()
 void ServiceTest::cleanupTestCase()
 {
    delete m_service;
-   delete m_master;
 
    QCA::deinit();
 }
diff --git a/main.cpp b/main.cpp
index 3088e10..927e65e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -28,6 +28,7 @@
 #include "backend/backendmaster.h"
 #include "backend/temporary/temporarycollectionmanager.h"
 #include "frontend/secret/service.h"
+#include "ui/dialoguimanager.h"
 
 int main(int argc, char **argv)
 {
@@ -56,9 +57,10 @@ int main(int argc, char **argv)
    // initialize QCA
    QCA::Initializer qcaInit;
 
-   BackendMaster master;
-   master.addManager(new TemporaryCollectionManager(&master));
-   Service service(&master);
+   BackendMaster *master = BackendMaster::instance();
+   master->setUiManager(new DialogUiManager);
+   master->addManager(new TemporaryCollectionManager(master));
+   Service service(BackendMaster::instance());
 
    return app.exec();
 }
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic