/*========================================================================= medInria Copyright (c) INRIA 2013 - 2020. All rights reserved. See LICENSE.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =========================================================================*/ #include #include #include #include #include #include class medPacsMoverPrivate { public: medAbstractPacsMoveScu* move; QVector cmdList; }; medPacsMover::medPacsMover(const QVector& cmdList): medJobItemL(), d(new medPacsMoverPrivate) { d->cmdList = cmdList; d->move = nullptr; } medPacsMover::~medPacsMover( void ) { if (d->move) { delete d->move; } delete d; d = nullptr; } void medPacsMover::internalRun( void ) { doQueuedMove(); } void medPacsMover::doQueuedMove() { if(!d->move) { d->move = medAbstractPacsFactory::instance()->createMoveScu("dcmtkMoveScu"); connect(d->move,SIGNAL(progressed(int)),this, SLOT(progressForward(int))); } if(d->move) { for(int i=0; icmdList.size(); i++) { medPacsNode source; source.setTitle(d->cmdList.at(i).sourceTitle); source.setIp(d->cmdList.at(i).sourceIp); source.setPort(d->cmdList.at(i).sourcePort); medPacsNode target; target.setTitle(d->cmdList.at(i).targetTitle); target.setIp(d->cmdList.at(i).targetIp); target.setPort(d->cmdList.at(i).targetPort); d->move->addRequestToQueue(d->cmdList.at(i).group, d->cmdList.at(i).elem, d->cmdList.at(i).query.toLatin1(), source, target); } if(d->move->performQueuedMoveRequests() == 0) { emit success(this); } else { emit failure(this); } } } void medPacsMover::onCancel(QObject* sender) { if(d->move && sender == this) { d->move->sendCancelRequest(); emit cancelled(this); } } void medPacsMover::progressForward( int prog) { emit progress(this, prog); }