SqpApplication.cpp
91 lines
| 3.3 KiB
| text/x-c
|
CppLexer
r21 | #include "SqpApplication.h" | |||
#include <DataSource/DataSourceController.h> | ||||
#include <QThread> | ||||
Alexandre Leroux
|
r106 | #include <Variable/VariableController.h> | ||
r53 | #include <Visualization/VisualizationController.h> | |||
r21 | ||||
Q_LOGGING_CATEGORY(LOG_SqpApplication, "SqpApplication") | ||||
class SqpApplication::SqpApplicationPrivate { | ||||
public: | ||||
r55 | SqpApplicationPrivate() | |||
: m_DataSourceController{std::make_unique<DataSourceController>()}, | ||||
Alexandre Leroux
|
r106 | m_VariableController{std::make_unique<VariableController>()}, | ||
r55 | m_VisualizationController{std::make_unique<VisualizationController>()} | |||
Alexandre Leroux
|
r32 | { | ||
m_DataSourceController->moveToThread(&m_DataSourceControllerThread); | ||||
Alexandre Leroux
|
r106 | m_VariableController->moveToThread(&m_VariableControllerThread); | ||
r55 | m_VisualizationController->moveToThread(&m_VisualizationControllerThread); | |||
Alexandre Leroux
|
r32 | } | ||
r24 | virtual ~SqpApplicationPrivate() | |||
r22 | { | |||
Alexandre Leroux
|
r32 | qCInfo(LOG_SqpApplication()) << tr("SqpApplicationPrivate destruction"); | ||
r22 | m_DataSourceControllerThread.quit(); | |||
m_DataSourceControllerThread.wait(); | ||||
r53 | ||||
Alexandre Leroux
|
r106 | m_VariableControllerThread.quit(); | ||
m_VariableControllerThread.wait(); | ||||
r55 | m_VisualizationControllerThread.quit(); | |||
m_VisualizationControllerThread.wait(); | ||||
r22 | } | |||
r21 | ||||
std::unique_ptr<DataSourceController> m_DataSourceController; | ||||
Alexandre Leroux
|
r106 | std::unique_ptr<VariableController> m_VariableController; | ||
r53 | std::unique_ptr<VisualizationController> m_VisualizationController; | |||
r21 | QThread m_DataSourceControllerThread; | |||
Alexandre Leroux
|
r106 | QThread m_VariableControllerThread; | ||
r55 | QThread m_VisualizationControllerThread; | |||
r21 | }; | |||
SqpApplication::SqpApplication(int &argc, char **argv) | ||||
Alexandre Leroux
|
r32 | : QApplication{argc, argv}, impl{spimpl::make_unique_impl<SqpApplicationPrivate>()} | ||
r21 | { | |||
Alexandre Leroux
|
r32 | qCInfo(LOG_SqpApplication()) << tr("SqpApplication construction"); | ||
r21 | ||||
connect(&impl->m_DataSourceControllerThread, &QThread::started, | ||||
impl->m_DataSourceController.get(), &DataSourceController::initialize); | ||||
connect(&impl->m_DataSourceControllerThread, &QThread::finished, | ||||
impl->m_DataSourceController.get(), &DataSourceController::finalize); | ||||
Alexandre Leroux
|
r106 | connect(&impl->m_VariableControllerThread, &QThread::started, impl->m_VariableController.get(), | ||
&VariableController::initialize); | ||||
connect(&impl->m_VariableControllerThread, &QThread::finished, impl->m_VariableController.get(), | ||||
&VariableController::finalize); | ||||
r55 | connect(&impl->m_VisualizationControllerThread, &QThread::started, | |||
impl->m_VisualizationController.get(), &VisualizationController::initialize); | ||||
connect(&impl->m_VisualizationControllerThread, &QThread::finished, | ||||
impl->m_VisualizationController.get(), &VisualizationController::finalize); | ||||
r53 | ||||
r21 | impl->m_DataSourceControllerThread.start(); | |||
Alexandre Leroux
|
r106 | impl->m_VariableControllerThread.start(); | ||
r55 | impl->m_VisualizationControllerThread.start(); | |||
r21 | } | |||
SqpApplication::~SqpApplication() | ||||
{ | ||||
} | ||||
void SqpApplication::initialize() | ||||
{ | ||||
} | ||||
Alexandre Leroux
|
r33 | |||
DataSourceController &SqpApplication::dataSourceController() const noexcept | ||||
{ | ||||
return *impl->m_DataSourceController; | ||||
} | ||||
r53 | ||||
Alexandre Leroux
|
r106 | VariableController &SqpApplication::variableController() const noexcept | ||
{ | ||||
return *impl->m_VariableController; | ||||
} | ||||
r53 | VisualizationController &SqpApplication::visualizationController() const noexcept | |||
{ | ||||
return *impl->m_VisualizationController; | ||||
} | ||||