From 32dbc7335ea7865844cb9d528f7127e54308b9b6 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Thu, 28 Apr 2011 17:51:51 +0200 Subject: [PATCH] template qthread that will do the actual storage --- CMakeLists.txt | 1 + private/storagethread.cpp | 91 +++++++++++++++++++++++++++++++++++++++ private/storagethread_p.h | 58 +++++++++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 private/storagethread.cpp create mode 100644 private/storagethread_p.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b1edbe612..d3b61fd9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,7 @@ set(plasma_LIB_SRCS private/runnerjobs.cpp private/serviceprovider.cpp private/storage.cpp + private/storagethread.cpp private/style.cpp private/trustedonlyauthorization.cpp private/tooltip.cpp diff --git a/private/storagethread.cpp b/private/storagethread.cpp new file mode 100644 index 000000000..02f8845fa --- /dev/null +++ b/private/storagethread.cpp @@ -0,0 +1,91 @@ +/* + * Copyright 2011 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "storagethread_p.h" + +namespace Plasma +{ + +class StorageThreadSingleton +{ +public: + StorageThreadSingleton() + { + } + + StorageThread self; +}; + +K_GLOBAL_STATIC(StorageThreadSingleton, privateStorageThreadSelf) + + +StorageThread::StorageThread(QObject *parent) + : QThread(parent) +{ + +} + +StorageThread::~StorageThread() +{ + QString name = m_db.connectionName(); + QSqlDatabase::removeDatabase(name); +} + +Plasma::StorageThread *self() +{ + return &privateStorageThreadSelf->self; +} + +void StorageThread::save(ServiceJob* caller, const QVariantMap ¶ms) +{ + bool success = true; + + emit newResult(caller, success); +} + +void StorageThread::retrieve(ServiceJob* caller, const QVariantMap ¶ms) +{ + + bool success = true; + emit newResult(caller, success); +} + +void StorageThread::deleteEntry(ServiceJob* caller, const QVariantMap ¶ms) +{ + + const bool success = true; + emit newResult(caller, success); +} + +void StorageThread::expire(ServiceJob* caller, const QVariantMap ¶ms) +{ + + bool success = true; + emit newResult(caller, success); +} + + +void StorageThread::run() +{ + +} + +} + +#include "storagethread_p.moc" diff --git a/private/storagethread_p.h b/private/storagethread_p.h new file mode 100644 index 000000000..9df2bb4d8 --- /dev/null +++ b/private/storagethread_p.h @@ -0,0 +1,58 @@ +/* + * Copyright 2011 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef STORAGETHREAD_H +#define STORAGETHREAD_H + + +#include +#include + +#include "servicejob_p.h" + +namespace Plasma +{ + +class StorageThread : public QThread +{ + Q_OBJECT +public: + StorageThread(QObject *parent = 0); + ~StorageThread(); + + void run(); + + static StorageThread *self(); + +public Q_SLOTS: + void save(ServiceJob* caller, const QVariantMap ¶meters); + void retrieve(ServiceJob* caller, const QVariantMap ¶meters); + void deleteEntry(ServiceJob* caller, const QVariantMap ¶meters); + void expire(ServiceJob* caller, const QVariantMap ¶meters); + +Q_SIGNALS: + void newResult(ServiceJob* caller, bool result); + +private: + QSqlDatabase m_db; +}; + +} + +#endif