Index: sources/model/MTreatmentParametersResp.cpp =================================================================== diff -u -r5387db3e9735f3bbf768906858dbcd725cf23528 -r0622f1ec79b9a24a3f9d58cd2de329df997b37d6 --- sources/model/MTreatmentParametersResp.cpp (.../MTreatmentParametersResp.cpp) (revision 5387db3e9735f3bbf768906858dbcd725cf23528) +++ sources/model/MTreatmentParametersResp.cpp (.../MTreatmentParametersResp.cpp) (revision 0622f1ec79b9a24a3f9d58cd2de329df997b37d6) @@ -9,26 +9,25 @@ * @param list (&QVariantlist) - the list to write the data to */ void MTreatmentParametersResponse::toVariantList(QVariantList &list) const -{ - list += _data.requestValid.value; - list += _data.bloodFlowRate.value; - list += _data.dialysateFlowRate.value; - list += _data.duration.value; - list += _data.heparinDispensingRate.value; - list += _data.heparinBolusVolume.value; - list += _data.heparinStopTime.value; - list += _data.salineBolus.value; - list += _data.acidConcentrate.value; - list += _data.bicarbonateConcentrate.value; - list += _data.dialyzerType.value; - list += _data.dialysateTemp.value; - list += _data.arterialPressureLimitLow.value; - list += _data.arterialPressureLimitHigh.value; - list += _data.venousPressureLimitLow.value; - list += _data.venousPressureLimitHigh.value; - list += _data.bloodPressureMeasureInterval.value; - list += _data.rinsebackFlowRate.value; - +{ + list += _data.requestValid .value; + list += _data.bloodFlowRate .value; + list += _data.dialysateFlowRate .value; + list += _data.duration .value; + list += _data.heparinStopTime .value; + list += _data.salineBolus .value; + list += _data.acidConcentrate .value; + list += _data.bicarbonateConcentrate .value; + list += _data.dialyzerType .value; + list += _data.bloodPressureMeasureInterval .value; + list += _data.rinsebackFlowRate .value; + list += _data.arterialPressureLimitLow .value; + list += _data.arterialPressureLimitHigh .value; + list += _data.venousPressureLimitLow .value; + list += _data.venousPressureLimitHigh .value; + list += _data.heparinDispensingRate .value; + list += _data.heparinBolusVolume .value; + list += _data.dialysateTemp .value; } AdjustTreatmentParametersResponseData MTreatmentParametersResponse::fromVariantList(const QVariantList &list) @@ -43,20 +42,20 @@ data.bloodFlowRate = list[1].toUInt(); data.dialysateFlowRate = list[2].toUInt(); data.duration = list[3].toUInt(); - data.heparinDispensingRate = list[4].toUInt(); - data.heparinBolusVolume = list[5].toUInt(); - data.heparinStopTime = list[6].toUInt(); - data.salineBolus = list[7].toUInt(); - data.acidConcentrate = list[8].toUInt(); - data.bicarbonateConcentrate = list[9].toUInt(); - data.dialyzerType = list[10].toUInt(); - data.dialysateTemp = list[11].toUInt(); - data.arterialPressureLimitLow = list[12].toUInt(); - data.arterialPressureLimitHigh = list[13].toUInt(); - data.venousPressureLimitLow = list[14].toUInt(); - data.venousPressureLimitHigh = list[15].toUInt(); - data.bloodPressureMeasureInterval = list[16].toUInt(); - data.rinsebackFlowRate = list[17].toUInt(); + data.heparinStopTime = list[4].toUInt(); + data.salineBolus = list[5].toUInt(); + data.acidConcentrate = list[6].toUInt(); + data.bicarbonateConcentrate = list[7].toUInt(); + data.dialyzerType = list[8].toUInt(); + data.bloodPressureMeasureInterval = list[9].toUInt(); + data.rinsebackFlowRate = list[10].toUInt(); + data.arterialPressureLimitLow = list[11].toUInt(); + data.arterialPressureLimitHigh = list[12].toUInt(); + data.venousPressureLimitLow = list[13].toUInt(); + data.venousPressureLimitHigh = list[14].toUInt(); + data.heparinDispensingRate = list[15].toUInt(); + data.heparinBolusVolume = list[16].toUInt(); + data.dialysateTemp = list[17].toUInt(); return data; } @@ -66,20 +65,20 @@ if (GetValue(vByteArray, index, _data.bloodFlowRate )) if (GetValue(vByteArray, index, _data.dialysateFlowRate )) if (GetValue(vByteArray, index, _data.duration )) - if (GetValue(vByteArray, index, _data.heparinDispensingRate )) - if (GetValue(vByteArray, index, _data.heparinBolusVolume )) if (GetValue(vByteArray, index, _data.heparinStopTime )) if (GetValue(vByteArray, index, _data.salineBolus )) if (GetValue(vByteArray, index, _data.acidConcentrate )) if (GetValue(vByteArray, index, _data.bicarbonateConcentrate )) if (GetValue(vByteArray, index, _data.dialyzerType )) - if (GetValue(vByteArray, index, _data.dialysateTemp )) + if (GetValue(vByteArray, index, _data.bloodPressureMeasureInterval )) + if (GetValue(vByteArray, index, _data.rinsebackFlowRate )) if (GetValue(vByteArray, index, _data.arterialPressureLimitLow )) if (GetValue(vByteArray, index, _data.arterialPressureLimitHigh )) if (GetValue(vByteArray, index, _data.venousPressureLimitLow )) if (GetValue(vByteArray, index, _data.venousPressureLimitHigh )) - if (GetValue(vByteArray, index, _data.bloodPressureMeasureInterval )) - if (GetValue(vByteArray, index, _data.rinsebackFlowRate )) + if (GetValue(vByteArray, index, _data.heparinDispensingRate )) + if (GetValue(vByteArray, index, _data.heparinBolusVolume )) + if (GetValue(vByteArray, index, _data.dialysateTemp )) return true; else { if(vIndex) *vIndex = index; return false; } else { if(vIndex) *vIndex = index; return false; } @@ -107,20 +106,20 @@ .arg(_data.bloodFlowRate.value) .arg(_data.dialysateFlowRate.value) .arg(_data.duration.value) - .arg(_data.heparinDispensingRate.value) - .arg(_data.heparinBolusVolume.value) .arg(_data.heparinStopTime.value) .arg(_data.salineBolus.value) .arg(_data.acidConcentrate.value) .arg(_data.bicarbonateConcentrate.value) .arg(_data.dialyzerType.value) - .arg(_data.dialysateTemp.value) + .arg(_data.bloodPressureMeasureInterval.value) + .arg(_data.rinsebackFlowRate.value) .arg(_data.arterialPressureLimitLow.value) .arg(_data.arterialPressureLimitHigh.value) .arg(_data.venousPressureLimitLow.value) .arg(_data.venousPressureLimitHigh.value) - .arg(_data.bloodPressureMeasureInterval.value) - .arg(_data.rinsebackFlowRate.value); + .arg(_data.heparinDispensingRate.value) + .arg(_data.heparinBolusVolume.value) + .arg(_data.dialysateTemp.value); } AdjustTreatmentParametersResponseData MTreatmentParametersResponse::data() const { @@ -129,20 +128,20 @@ data.bloodFlowRate = _data.bloodFlowRate.value; data.dialysateFlowRate = _data.dialysateFlowRate.value; data.duration = _data.duration.value; - data.heparinDispensingRate = _data.heparinDispensingRate.value; - data.heparinBolusVolume = _data.heparinBolusVolume.value; data.heparinStopTime = _data.heparinStopTime.value; data.salineBolus = _data.salineBolus.value; data.acidConcentrate = _data.acidConcentrate.value; data.bicarbonateConcentrate = _data.bicarbonateConcentrate.value; data.dialyzerType = _data.dialyzerType.value; - data.dialysateTemp = _data.dialysateTemp.value; + data.bloodPressureMeasureInterval = _data.bloodPressureMeasureInterval.value; + data.rinsebackFlowRate = _data.rinsebackFlowRate.value; data.arterialPressureLimitLow = _data.arterialPressureLimitLow.value; data.arterialPressureLimitHigh = _data.arterialPressureLimitHigh.value; data.venousPressureLimitLow = _data.venousPressureLimitLow.value; data.venousPressureLimitHigh = _data.venousPressureLimitHigh.value; - data.bloodPressureMeasureInterval = _data.bloodPressureMeasureInterval.value; - data.rinsebackFlowRate = _data.rinsebackFlowRate.value; + data.heparinDispensingRate = _data.heparinDispensingRate.value; + data.heparinBolusVolume = _data.heparinBolusVolume.value; + data.dialysateTemp = _data.dialysateTemp.value; return data; } Index: sources/model/MTreatmentParametersResp.h =================================================================== diff -u -r5387db3e9735f3bbf768906858dbcd725cf23528 -r0622f1ec79b9a24a3f9d58cd2de329df997b37d6 --- sources/model/MTreatmentParametersResp.h (.../MTreatmentParametersResp.h) (revision 5387db3e9735f3bbf768906858dbcd725cf23528) +++ sources/model/MTreatmentParametersResp.h (.../MTreatmentParametersResp.h) (revision 0622f1ec79b9a24a3f9d58cd2de329df997b37d6) @@ -21,20 +21,20 @@ quint32 bloodFlowRate = 0; quint32 dialysateFlowRate = 0; quint32 duration = 0; - quint32 heparinDispensingRate = 0; - quint32 heparinBolusVolume = 0; quint32 heparinStopTime = 0; quint32 salineBolus = 0; quint32 acidConcentrate = 0; quint32 bicarbonateConcentrate = 0; quint32 dialyzerType = 0; - quint32 dialysateTemp = 0; + quint32 bloodPressureMeasureInterval = 0; + quint32 rinsebackFlowRate = 0; quint32 arterialPressureLimitLow = 0; quint32 arterialPressureLimitHigh = 0; quint32 venousPressureLimitLow = 0; quint32 venousPressureLimitHigh = 0; - quint32 bloodPressureMeasureInterval = 0; - quint32 rinsebackFlowRate = 0; + quint32 heparinDispensingRate = 0; + quint32 heparinBolusVolume = 0; + quint32 dialysateTemp = 0; }; Data fromVariantList(const QVariantList &list); @@ -44,35 +44,31 @@ Data data() const; protected: - struct _Data { - + struct _Data { Types::U32 requestValid ; Types::U32 bloodFlowRate ; Types::U32 dialysateFlowRate ; Types::U32 duration ; - Types::U32 heparinDispensingRate ; - Types::U32 heparinBolusVolume ; Types::U32 heparinStopTime ; Types::U32 salineBolus ; Types::U32 acidConcentrate ; Types::U32 bicarbonateConcentrate ; Types::U32 dialyzerType ; - Types::U32 dialysateTemp ; + Types::U32 bloodPressureMeasureInterval ; + Types::U32 rinsebackFlowRate ; Types::U32 arterialPressureLimitLow ; Types::U32 arterialPressureLimitHigh ; Types::U32 venousPressureLimitLow ; Types::U32 venousPressureLimitHigh ; - Types::U32 bloodPressureMeasureInterval ; - Types::U32 rinsebackFlowRate ; + Types::U32 heparinDispensingRate ; + Types::U32 heparinBolusVolume ; + Types::U32 dialysateTemp ; } _data; - private: QString stringPrefix = "Treatment Parameters Response"; - }; - } typedef Model::MTreatmentParametersResponse::Data AdjustTreatmentParametersResponseData; Index: sources/storage/filesaver.cpp =================================================================== diff -u -ra19862d191c2501faa4e8cde64804ef18b80c6b3 -r0622f1ec79b9a24a3f9d58cd2de329df997b37d6 --- sources/storage/filesaver.cpp (.../filesaver.cpp) (revision a19862d191c2501faa4e8cde64804ef18b80c6b3) +++ sources/storage/filesaver.cpp (.../filesaver.cpp) (revision 0622f1ec79b9a24a3f9d58cd2de329df997b37d6) @@ -23,7 +23,7 @@ * @param content (QString) the content to write to the file * @param append (bool) if True, append the content. Otherwise, overwrite it */ -void FileSaver::concurrentSave(const QString &filename, const QString &content, bool append) +void FileSaver::onConcurrentSave(const QString &filename, const QString &content, bool append) { QFuture future = QtConcurrent::run(&FileHandler::write, filename, content, append); _futureWatcher.setFuture(future); Index: sources/storage/filesaver.h =================================================================== diff -u -r24f6fd0fa333f68f555f945385e7d4c2dd5ed656 -r0622f1ec79b9a24a3f9d58cd2de329df997b37d6 --- sources/storage/filesaver.h (.../filesaver.h) (revision 24f6fd0fa333f68f555f945385e7d4c2dd5ed656) +++ sources/storage/filesaver.h (.../filesaver.h) (revision 0622f1ec79b9a24a3f9d58cd2de329df997b37d6) @@ -26,7 +26,7 @@ void fileSaved(bool result); public slots: - void concurrentSave(const QString &filename, const QString &content, bool append); // static ? + void onConcurrentSave(const QString &filename, const QString &content, bool append); private slots: void onFileSaved(); Index: sources/view/VCreateTreatment.cpp =================================================================== diff -u -rad32b29628ec7cd08892496cdad0afc8aeb166cf -r0622f1ec79b9a24a3f9d58cd2de329df997b37d6 --- sources/view/VCreateTreatment.cpp (.../VCreateTreatment.cpp) (revision ad32b29628ec7cd08892496cdad0afc8aeb166cf) +++ sources/view/VCreateTreatment.cpp (.../VCreateTreatment.cpp) (revision 0622f1ec79b9a24a3f9d58cd2de329df997b37d6) @@ -22,6 +22,9 @@ connect(&_GuiController, SIGNAL(didActionReceive(GuiActionType,QVariantList)), this, SLOT(onFWValidationResponse(GuiActionType,QVariantList))); loadTreatmentParameterRanges(); + + connect(this, SIGNAL(requestConcurrentSave(QString,QString,bool)), + &_FileSaver, SLOT(onConcurrentSave(QString,QString,bool))); } /** @@ -374,7 +377,7 @@ i++; } QString filename = QString("%0treatment%1.json").arg(dir).arg(i); - _FileSaver.concurrentSave(filename, document.toJson(), false); + emit requestConcurrentSave(filename, document.toJson(), false); return filename; } Index: sources/view/VCreateTreatment.h =================================================================== diff -u -r5387db3e9735f3bbf768906858dbcd725cf23528 -r0622f1ec79b9a24a3f9d58cd2de329df997b37d6 --- sources/view/VCreateTreatment.h (.../VCreateTreatment.h) (revision 5387db3e9735f3bbf768906858dbcd725cf23528) +++ sources/view/VCreateTreatment.h (.../VCreateTreatment.h) (revision 0622f1ec79b9a24a3f9d58cd2de329df997b37d6) @@ -151,6 +151,7 @@ void validateParamsWithFW(const GuiActionType &action, const QVariantList &data); void resetCreateTreatment(); void fwValidationFailed(QString reason); + void requestConcurrentSave(const QString &filename, const QString &content, bool append); public slots: void onResetCreateTreatment(); Index: unittests/tst_views.cpp =================================================================== diff -u -r9cd1441e28dece7d70550e96b291d6184b3adc4b -r0622f1ec79b9a24a3f9d58cd2de329df997b37d6 --- unittests/tst_views.cpp (.../tst_views.cpp) (revision 9cd1441e28dece7d70550e96b291d6184b3adc4b) +++ unittests/tst_views.cpp (.../tst_views.cpp) (revision 0622f1ec79b9a24a3f9d58cd2de329df997b37d6) @@ -15,7 +15,6 @@ #include "tst_views.h" // Qt -#include // Project #include "vtreatmentadjustmentresponsebase.h" @@ -566,18 +565,32 @@ QString dir = QString("/tmp/newTreatment_%0.json").arg(QDateTime::currentDateTime().toString(datetimeFormat)); QString oldFilename = view.saveNewTreatment(objectWritten, dir); + QDateTime startTime = QDateTime::currentDateTime(); + int elapsedSeconds = 0; + while (!QFile(oldFilename).exists()) + { + elapsedSeconds = startTime.secsTo(QDateTime::currentDateTime()); + } - QThread::msleep(500); + startTime = QDateTime::currentDateTime(); QString filename = view.saveNewTreatment(objectWritten, dir); QVERIFY(oldFilename != filename); + QVERIFY(elapsedSeconds < 0.5); + elapsedSeconds = 0; + QJsonObject objectReadTemp; + while (!FileHandler::readJSON(filename, objectReadTemp) || (objectWritten != objectReadTemp)) + { + elapsedSeconds = startTime.secsTo(QDateTime::currentDateTime()); + } - QThread::msleep(500); + QVERIFY(elapsedSeconds < 0.5); QJsonObject objectRead; QVERIFY(FileHandler::readJSON(filename, objectRead)); QCOMPARE(objectWritten, objectRead); + } /*! @@ -723,7 +736,7 @@ QString path = QString("/tmp/ranges_%0.json").arg(QDateTime::currentDateTime().toString(datetimeFormat));; - _FileSaver.concurrentSave(path, document.toJson(), false); + _FileSaver.onConcurrentSave(path, document.toJson(), false); QThread::msleep(500);