USSavingRecorderFixture::USSavingRecorderFixture(QObject* parent) : QObject(parent) { this->setUp(); mRecorder.reset(new cx::USSavingRecorder()); mRecorder->setWriteColor(true); mRecorder->set_rMpr(cx::Transform3D::Identity()); connect(mRecorder.get(), SIGNAL(saveDataCompleted(QString)), this, SLOT(dataSaved(QString))); QTimer::singleShot(0, this, SLOT(runOperations())); }
USAcquisition::USAcquisition(AcquisitionPtr base, QObject* parent) : QObject(parent), mBase(base), mReady(true), mInfoText("") { mCore.reset(new USSavingRecorder()); connect(mCore.get(), SIGNAL(saveDataCompleted(QString)), this, SLOT(checkIfReadySlot())); connect(mCore.get(), SIGNAL(saveDataCompleted(QString)), this, SIGNAL(saveDataCompleted(QString))); connect(this->getServices()->tracking().get(), &TrackingService::stateChanged, this, &USAcquisition::checkIfReadySlot); connect(this->getServices()->tracking().get(), SIGNAL(activeToolChanged(const QString&)), this, SLOT(checkIfReadySlot())); connect(this->getServices()->video().get(), SIGNAL(activeVideoSourceChanged()), this, SLOT(checkIfReadySlot())); connect(this->getServices()->video().get(), &VideoService::connected, this, &USAcquisition::checkIfReadySlot); connect(mBase.get(), SIGNAL(started()), this, SLOT(recordStarted())); connect(mBase.get(), SIGNAL(acquisitionStopped()), this, SLOT(recordStopped()), Qt::QueuedConnection); connect(mBase.get(), SIGNAL(cancelled()), this, SLOT(recordCancelled())); this->checkIfReadySlot(); }
void USSavingRecorder::fileMakerWriteFinished() { std::list<QFutureWatcher<QString>*>::iterator iter; for (iter=mSaveThreads.begin(); iter!=mSaveThreads.end();) { if (!(*iter)->isFinished()) { ++iter; continue; } QString result = (*iter)->future().result(); delete *iter; //this increments the iter, so no need to do it in the for statement iter = mSaveThreads.erase(iter); emit saveDataCompleted(result); } }