Skip to content
Snippets Groups Projects
worker.cpp 1.48 KiB
#include "worker.h"
#include "TSystem.h"
#include <QFile>
#include <QString>
#include <QTextStream>
#include <QDebug>

void Worker::run()
{
    // simulate some cones
    // or import cones from file
    QFile conefile(config->conefilePath.c_str());
    if (!conefile.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        throw std::invalid_argument("Cannot find file: " + config->conefilePath);
    }

    QString line;
    QTextStream in(&conefile);
    // skip header (first line)
    in.readLineInto(&line);
    std::vector<Cone> cones(config->chuckSize, Cone());
    while(!exitted)
    {
        if (!stopped)
        {
            //some work to get data (read board or file)
            int i(0);
            while (!exitted && i < config->chuckSize && in.readLineInto(&line))
            {
                cones[i]=Cone(line);
                i++;
            }
            if (exitted)
                break;
            localCounts+=i;
            // update image
            image->updateImage(cones.cbegin(), cones.cbegin()+i, true);
//            if (exitted || in.atEnd() || localCounts >= config->maxN)
            if (exitted || localCounts >= config->maxN)
                break;
        }
    }
    conefile.close();
    qDebug() << "Worker thread exited.";
}

void Worker::handleStart()
{
    stopped=false;
}

void Worker::handleStop()
{
    stopped=true;
}

void Worker::stopExecution()
{
    exitted = true;
}

void Worker::handleClear()
{
    localCounts = 0;
    image->clear();
}