Files
GUI/src/utilities/ScanProcessSequence.cpp

63 lines
1.7 KiB
C++

#include "ScanProcessSequence.h"
#include "event/EventCenter.h"
#include "device/DeviceManager.h"
ScanProcessSequence* ScanProcessSequence::getInstance()
{
static ScanProcessSequence instance;
return &instance;
}
ScanProcessSequence::ScanProcessSequence(QObject* aParent)
: QObject(aParent)
, mScanProtocol()
{
connect(DeviceManager::Default(), &DeviceManager::startAutoLocateResult, this, &ScanProcessSequence::startAutoLocate);
connect(DeviceManager::Default(), &DeviceManager::updateAutoLocatePosition, this, &ScanProcessSequence::updateAutoLocatePosition);
connect(DeviceManager::Default(), &DeviceManager::autolocatePositionEffective, this, &ScanProcessSequence::stopAutoLocate);
connect(EventCenter::Default(), &EventCenter::StopScanProcess, this, &ScanProcessSequence::quitAutoLocate);
}
void ScanProcessSequence::updateAutoLocatePosition(int aX, int aY, int aZ)
{
emit autoLocateXYUpdated(aX, aY);
emit autoLocateZUpdated(aZ);
}
void ScanProcessSequence::pushAccession(AccessionInformation* aAccession, ScanPosition aPostion)
{
mScanProtocol.push(QPair<AccessionInformation*, ScanPosition>(aAccession, aPostion));
}
QPair<AccessionInformation*,ScanPosition> ScanProcessSequence::topAccession()
{
return mScanProtocol.top();
}
ScanPosition ScanProcessSequence::popPosition()
{
ScanPosition result = mScanProtocol.pop().second;
if(mScanProtocol.size() == 0)
{
emit ScanProcessSequenceFinished();
}
return result;
}
ScanPosition ScanProcessSequence::topPosition()
{
return mScanProtocol.top().second;
}
void ScanProcessSequence::clear()
{
return mScanProtocol.clear();
}
int ScanProcessSequence::getScanPositionSize()
{
return mScanProtocol.size();
}