namespace LocalMyList {
AbstractTask::AbstractTask(QObject *parent) :
- QObject(parent), db(0)
+ QObject(parent), db(0), settings(0)
{
connect(this, SIGNAL(nextWorkUnit()), this, SLOT(doNextWorkUnit()), Qt::QueuedConnection);
}
this->db = db;
}
+void AbstractTask::setSettings(Settings *settings)
+{
+ this->settings = settings;
+}
+
void AbstractTask::start()
{
}
namespace LocalMyList {
class Database;
+class Settings;
class LOCALMYLISTSHARED_EXPORT AbstractTask : public QObject
{
virtual bool canUseThreads() const;
void setDatabase(Database *db);
+ void setSettings(Settings *settings);
public slots:
virtual void start() = 0;
protected:
Database *db;
+ Settings *settings;
static const int OPERATIONS_PER_UNIT = 100;
};
setupWorkThread();
- m_renameHandler = new RenameHandler(workThread->database());
+ m_renameHandler = new RenameHandler(workThread->database(), workThread->settings());
m_renameHandler->moveToThread(workThread);
- connect(db, SIGNAL(renameDataChanged()), m_renameHandler, SLOT(handleRename()), Qt::QueuedConnection);
}
void MyList::setupWorkThread()
{
setupWorkThread();
task->setDatabase(workThread->database());
+ task->setSettings(workThread->settings());
task->moveToThread(workThread);
}
else
task->moveToThread(thread());
task->setDatabase(database());
+ task->setSettings(settings());
}
connect(task, SIGNAL(finished()), this, SLOT(taskFinished()), Qt::QueuedConnection);
namespace LocalMyList {
WorkThread::WorkThread(const QString &threadName, const DatabaseConnectionSettings &dbs, QObject *parent) :
- QThread(parent), m_threadName(threadName), db(0)
+ QThread(parent), m_threadName(threadName), db(0), m_settings(0)
{
db = new Database(m_threadName);
db->setConnectionSettings(dbs);
db->moveToThread(this);
+ m_settings = new Settings(db);
+ m_settings->moveToThread(this);
}
WorkThread::~WorkThread()
{
if (db)
delete db;
+ if (m_settings)
+ delete m_settings;
}
QString WorkThread::threadName() const
return db;
}
+Settings *WorkThread::settings() const
+{
+ return m_settings;
+}
+
void WorkThread::run()
{
db->connect();
#include <QThread>
#include "abstracttask.h"
#include "database.h"
+#include "settings.h"
namespace LocalMyList {
QString threadName() const;
Database *database() const;
+ Settings *settings() const;
protected:
void run();
private:
QString m_threadName;
Database *db;
+ Settings *m_settings;
};
} // namespace LocalMyList