[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