108 lines
3.5 KiB
C++
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);
|
|
}
|
|
}
|