dataservice/mainwindow.cpp
2018-08-31 18:20:47 +02:00

108 lines
3.5 KiB
C++

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "converttoseries.h"
#include <iostream>
using namespace QtCharts;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*
dataService = new DataService();
dataService->moveToThread(&dataServiceThread);
connect(&dataServiceThread, &QThread::finished, dataService, &QObject::deleteLater);
connect(ui->goBtn, SIGNAL(clicked(bool)), dataService, SLOT(doWork()));
connect(dataService, SIGNAL(resultReady()), this, SLOT(handleResult()));
dataServiceThread.start();
*/
connect(&dataQueue, SIGNAL(resultReady(QString)), this, SLOT(dataReady(QString)));
//connect(&dataQueue, SIGNAL(finished()), &dataQueue, SLOT(deleteLater()));
DataLoader *loader = new DataLoader();
loader->moveToThread(&dataQueue);
dataQueue.start();
connect(ui->requestDataBtn, SIGNAL(clicked(bool)), this, SLOT(requestData()));
file = nix::File::open("/home/grewe/zwischenlager/2017-08-17-af-invivo-1/2017-08-17-af-invivo-1.nix",
nix::FileMode::ReadOnly);
//file = nix::File::open("/Users/jan/zwischenlager/threading_test/event_queue/DataService/data/2017-08-17-af-invivo-1.nix",
// nix::FileMode::ReadOnly);
nix::Block b = file.getBlock(0);
this->voltage = b.getDataArray("V-1");
this->eod = b.getDataArray("EOD");
voltageChart = new QChart();
voltageChart->legend()->hide();
//voltageChart->createDefaultAxes();
eodChart = new QChart();
eodChart->legend()->hide();
//eodChart->createDefaultAxes();
chartMap.insert(std::pair<std::string, QChart*>(voltage.id(), voltageChart));
chartMap.insert(std::pair<std::string, QChart*>(eod.id(), eodChart));
voltageChart->setTitle(QString::fromStdString(this->voltage.name()));
eodChart->setTitle(QString::fromStdString(this->eod.name()));
QMargins margins = voltageChart->margins();
int marg1 = margins.left();
margins.setLeft(marg1 * 4);
eodChart->setMargins(margins);
voltageView = new QtCharts::QChartView(voltageChart);
eodView = new QtCharts::QChartView(eodChart);
voltageView->setRenderHint(QPainter::Antialiasing);
eodView->setRenderHint(QPainter::Antialiasing);
ui->vbox->addWidget(voltageView);
ui->vbox->addWidget(eodView);
}
MainWindow::~MainWindow() {
if (file) {
file.close();
}
//dataServiceThread.quit();
//dataServiceThread.wait();
dataQueue.stop();
dataQueue.quit();
dataQueue.wait();
delete ui;
}
void MainWindow::dataReady(QString requestId) {
DataResult1D data = dataQueue.getData(requestId);
if (data.id.empty()) {
return;
}
ConvertToSeries *task = new ConvertToSeries();
QLineSeries *series = new QLineSeries();
task->setData(series, data);
connect(task, SIGNAL(dataConverted(QLineSeries*,QString)), this, SLOT(dataConverted(QLineSeries*,QString)));
QThreadPool::globalInstance()->start(task);
}
void MainWindow::dataConverted(QLineSeries *series, QString entityId) {
QPen pen = series->pen();
pen.setWidth(1);
series->setPen(pen);
chartMap[entityId.toStdString()]->addSeries(series);
}
void MainWindow::requestData() {
if (voltage && eod) {
nix::NDSize count(1, 10000);
nix::NDSize start(1, 0);
std::string vId, eodId;
dataQueue.requestData(voltage, count, start, vId);
dataQueue.requestData(eod, count, start, eodId);
}
}