summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controller.cxx16
-rw-r--r--controller.hxx18
-rw-r--r--kelakon.pro8
-rw-r--r--main.cxx9
-rw-r--r--networkworker.cxx13
-rw-r--r--networkworker.hxx14
-rw-r--r--worker.cxx13
-rw-r--r--worker.hxx14
8 files changed, 68 insertions, 37 deletions
diff --git a/controller.cxx b/controller.cxx
new file mode 100644
index 0000000..d1271b9
--- /dev/null
+++ b/controller.cxx
@@ -0,0 +1,16 @@
+#include "worker.hxx"
+#include "controller.hxx"
+
+Controller::Controller()
+{
+ Worker* worker = new Worker{};
+ worker->moveToThread(&thread);
+ connect(&thread, &QThread::finished, worker, &QObject::deleteLater);
+ thread.start();
+}
+
+Controller::~Controller()
+{
+ thread.quit();
+ thread.wait();
+}
diff --git a/controller.hxx b/controller.hxx
new file mode 100644
index 0000000..e293ec4
--- /dev/null
+++ b/controller.hxx
@@ -0,0 +1,18 @@
+#ifndef CONTROLLER_HXX
+#define CONTROLLER_HXX
+
+#include <QThread>
+
+class Controller : public QObject
+{
+ Q_OBJECT
+
+ public:
+ Controller();
+ ~Controller();
+
+ private:
+ QThread thread;
+};
+
+#endif // CONTROLLER_HXX
diff --git a/kelakon.pro b/kelakon.pro
index 388027c..5df2f8e 100644
--- a/kelakon.pro
+++ b/kelakon.pro
@@ -5,12 +5,14 @@ QT += \
debug: DEFINES += DEBUG
HEADERS += \
- networkworker.hxx \
- user.hxx
+ user.hxx \
+ worker.hxx \
+ controller.hxx
SOURCES += \
- networkworker.cxx \
user.cxx \
+ worker.cxx \
+ controller.cxx \
main.cxx
RESOURCES += kelakon.qrc
diff --git a/main.cxx b/main.cxx
index cacf2cd..0b52736 100644
--- a/main.cxx
+++ b/main.cxx
@@ -1,8 +1,7 @@
#include <QGuiApplication>
#include <QQmlApplicationEngine>
-#include <QThread>
#include "user.hxx"
-#include "networkworker.hxx"
+#include "controller.hxx"
int main(int argc, char* argv[])
{
@@ -10,10 +9,6 @@ int main(int argc, char* argv[])
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
- NetworkWorker worker{};
- QThread thread;
- worker.moveToThread(&thread);
-
qmlRegisterSingletonType<User>("id.co.darapsa.kelakon.user", 0, 1, "User", [](QQmlEngine *engine, QJSEngine *scriptEngine) -> QObject* {
Q_UNUSED(engine)
Q_UNUSED(scriptEngine)
@@ -23,7 +18,7 @@ int main(int argc, char* argv[])
});
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
- thread.start();
+ Controller controller{};
return app.exec();
}
diff --git a/networkworker.cxx b/networkworker.cxx
deleted file mode 100644
index 3487d4c..0000000
--- a/networkworker.cxx
+++ /dev/null
@@ -1,13 +0,0 @@
-#include "rtclient.h"
-#include "networkworker.hxx"
-
-NetworkWorker::NetworkWorker(QObject* parent) :
- QObject{parent}
-{
- rtclient_init();
-}
-
-NetworkWorker::~NetworkWorker()
-{
- rtclient_cleanup();
-}
diff --git a/networkworker.hxx b/networkworker.hxx
deleted file mode 100644
index 05124d5..0000000
--- a/networkworker.hxx
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef NETWORKWORKER_HXX
-#define NETWORKWORKER_HXX
-
-#include <QObject>
-
-class NetworkWorker : public QObject
-{
- Q_OBJECT
- public:
- explicit NetworkWorker(QObject* parent = nullptr);
- virtual ~NetworkWorker();
-};
-
-#endif // NETWORKWORKER_HXX
diff --git a/worker.cxx b/worker.cxx
new file mode 100644
index 0000000..8c915f8
--- /dev/null
+++ b/worker.cxx
@@ -0,0 +1,13 @@
+#include "rtclient.h"
+#include "worker.hxx"
+
+Worker::Worker(QObject* parent) :
+ QObject{parent}
+{
+ rtclient_init();
+}
+
+Worker::~Worker()
+{
+ rtclient_cleanup();
+}
diff --git a/worker.hxx b/worker.hxx
new file mode 100644
index 0000000..cdb2811
--- /dev/null
+++ b/worker.hxx
@@ -0,0 +1,14 @@
+#ifndef WORKER_HXX
+#define WORKER_HXX
+
+#include <QObject>
+
+class Worker : public QObject
+{
+ Q_OBJECT
+ public:
+ explicit Worker(QObject* parent = nullptr);
+ virtual ~Worker();
+};
+
+#endif // WORKER_HXX