Index: denali.pro.user =================================================================== diff -u -ra5fe0c9504558ddafc2af2ccd852b8f311a00616 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- denali.pro.user (.../denali.pro.user) (revision a5fe0c9504558ddafc2af2ccd852b8f311a00616) +++ denali.pro.user (.../denali.pro.user) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -1,6 +1,6 @@ - + EnvironmentId @@ -97,7 +97,7 @@ Desktop Qt 5.12.5 GCC 64bit Desktop Qt 5.12.5 GCC 64bit qt.qt5.5125.gcc_64_kit - 1 + 0 0 0 @@ -117,7 +117,7 @@ qmake QtProjectManager.QMakeBuildStep - false + true false false @@ -1230,7 +1230,7 @@ true false - /home/denali/Projects/tmp/build/denali-Desktop_Qt_5_12_5_GCC_64bit-Release + /home/denali/Projects/tmp/build/denali-Desktop_Qt_5_12_5_GCC_64bit-Debug 1 @@ -1241,7 +1241,7 @@ Qt 5.12.5 (iMX8) Qt 5.12.5 (iMX8) {5d6458ef-f917-4aef-a092-c77bbe106149} - 0 + 1 0 0 @@ -1324,6 +1324,15 @@ true + staging + /home/denali/Projects/application/alarmMapping.sh + %{sourceDir} + Custom Process Step + + ProjectExplorer.ProcessStep + + + true qmake QtProjectManager.QMakeBuildStep @@ -1333,7 +1342,7 @@ false false - + true Make @@ -1344,7 +1353,7 @@ false - + true -b --tag denali >> denali sha256sum @@ -1353,7 +1362,7 @@ ProjectExplorer.ProcessStep - 3 + 4 Build Build ProjectExplorer.BuildSteps.Build Index: sources/gui/qml/main.qml =================================================================== diff -u -ra5fe0c9504558ddafc2af2ccd852b8f311a00616 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/gui/qml/main.qml (.../main.qml) (revision a5fe0c9504558ddafc2af2ccd852b8f311a00616) +++ sources/gui/qml/main.qml (.../main.qml) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -341,6 +341,7 @@ // TODO: disable this later. this is only for diagnostic purpose. onDoubleClicked : { _diagnosticsDialog.open() + // WIP: vSettings.doSave("Configurations/Formats", "Navigation", "_KEY_", "-VAL~"); } } Index: sources/gui/qml/pages/MainStack.qml =================================================================== diff -u -ra674f3fdbf0649527672e2b8259731ebb323776b -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/gui/qml/pages/MainStack.qml (.../MainStack.qml) (revision a674f3fdbf0649527672e2b8259731ebb323776b) +++ sources/gui/qml/pages/MainStack.qml (.../MainStack.qml) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -116,7 +116,11 @@ MainHome { id: _mainHome onStartTreatment : { page( _treatmentStack )} - onCreateTreatment : { vPreTreatmentAdjustmentInitTreatment.doInitiate() } + onCreateTreatment : { vPreTreatmentAdjustmentInitTreatment.doInitiate() + // DEBUG: console.debug(vSettings.categorys) + if ( parseInt(vSettings.data["Development/NoCANBus"]["Navigation"]["Create Treatment To Patient ID"]) === 1 ) + vHDOperationMode.validateParametersChanged(true) + } onVisibleChanged: { if (visible) { _mainMenu.hidden = false // initially our landing screen is _initialModeScreen which should not have the Main menu. Index: sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml =================================================================== diff -u -rcd4b8fbd5ea88717e74dd4cbe00dac82d9844dde -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml (.../PreTreatmentCreate.qml) (revision cd4b8fbd5ea88717e74dd4cbe00dac82d9844dde) +++ sources/gui/qml/pages/pretreatment/create/PreTreatmentCreate.qml (.../PreTreatmentCreate.qml) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -197,8 +197,6 @@ vTreatmentCreate.heparinDispensingRate = 0 _heparinDispensingRate.value = 0 _heparinDispensingRate.active = ! checked - console.debug(vTreatmentCreate.heparinDispensingRate, - _heparinDispensingRate.value ) } x : width * -2 @@ -656,10 +654,10 @@ onBicarbonateConcentrate_ValidationFailed : _bicarbonateConcentrate .valid = false onDialyzerType_ValidationFailed : _dialyzerType .valid = false onDialysateTemp_ValidationFailed : _dialysateTemperature .valid = false - onArterialPressureLimitLow_ValidationFailed : _arterialPressureLimits .setLowValid ( false ) - onArterialPressureLimitHigh_ValidationFailed : _arterialPressureLimits .setHighValid ( false ) - onVenousPressureLimitLow_ValidationFailed : _venousPressureLimits .setLowValid ( false ) - onVenousPressureLimitHigh_ValidationFailed : _venousPressureLimits .setHighValid ( false ) +// onArterialPressureLimitLow_ValidationFailed : _arterialPressureLimits .setLowValid ( false ) +// onArterialPressureLimitHigh_ValidationFailed : _arterialPressureLimits .setHighValid ( false ) +// onVenousPressureLimitLow_ValidationFailed : _venousPressureLimits .setLowValid ( false ) +// onVenousPressureLimitHigh_ValidationFailed : _venousPressureLimits .setHighValid ( false ) onBloodPressureMeasureInterval_ValidationFailed : _bloodPressureInterval .valid = false onRinsebackFlowRate_ValidationFailed : _rinsebackFlowRate .valid = false onScrollToParameter: { Index: sources/model/hd/alarm/MAlarmMapping.cpp =================================================================== diff -u -rc75017688e992f20dd126054abf6e639883b0303 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision c75017688e992f20dd126054abf6e639883b0303) +++ sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -7,7 +7,7 @@ * * \file MAlarmMapping.cpp * \author (last) Behrouz NematiPour - * \date (last) 20-Jul-2022 + * \date (last) 22-Jul-2022 * \author (original) Behrouz NematiPour * \date (original) 03-May-2021 * Index: sources/model/settings/MSettings.cpp =================================================================== diff -u -r79a6cfcb10472261f3ec26eaf0baf6f1245cd311 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/model/settings/MSettings.cpp (.../MSettings.cpp) (revision 79a6cfcb10472261f3ec26eaf0baf6f1245cd311) +++ sources/model/settings/MSettings.cpp (.../MSettings.cpp) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -144,8 +144,14 @@ KeyValue mGroup = _settings[vGroup]; if ( mGroup.location != vLocation ) mGroup.location = vLocation; if ( mGroup.category != vCategory ) mGroup.category = vCategory; - mGroup.keys += vKey ; - mGroup.values += vValue ; + if ( mGroup.keys.contains(vKey)) { + int index = mGroup.keys.indexOf(vKey); + mGroup.values[index] = vValue; + } + else { + mGroup.keys += vKey ; + mGroup.values += vValue ; + } _settings[vGroup] = mGroup; } Index: sources/model/settings/MSettings.h =================================================================== diff -u -r79a6cfcb10472261f3ec26eaf0baf6f1245cd311 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/model/settings/MSettings.h (.../MSettings.h) (revision 79a6cfcb10472261f3ec26eaf0baf6f1245cd311) +++ sources/model/settings/MSettings.h (.../MSettings.h) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -35,12 +35,15 @@ { Q_OBJECT +public: struct KeyValue { QString category; QString location; QList keys; QList values; }; + +private: QMap _settings; QMap _category; @@ -60,7 +63,7 @@ QVariant value (const QString &vGroup , const QString &vKey); QString location (const QString &vGroup ); - void add (const QString &vGroup, const QString &vKey, const QVariant &vValue, const QString &vLocation, const QString &vCategory); + void add (const QString &vGroup, const QString &vKey, const QVariant &vValue, const QString &vLocation, const QString &vCategory); // the utility static functions private : QString _datetimeFormat = "MM/dd/yyyy HH:mm:ss"; Index: sources/storage/Settings.cpp =================================================================== diff -u -r79a6cfcb10472261f3ec26eaf0baf6f1245cd311 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/storage/Settings.cpp (.../Settings.cpp) (revision 79a6cfcb10472261f3ec26eaf0baf6f1245cd311) +++ sources/storage/Settings.cpp (.../Settings.cpp) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -39,9 +39,18 @@ } /*! - * \brief Settings::doRead - reads all the configuration files in the home folder - * \details + * \brief Settings::fileName + * \details returns the conf file by the settings information provided. + * \return QString configuration/settings file name */ +QString Settings::fileName(const QString &vCategory) { + return QString("%1%2.%3").arg(Storage::Settings_Path_Name).arg(vCategory).arg(_settingsExt); +} + +/*! + * \brief Settings::doRead + * \details Reads all the configuration files + */ int Settings::read() { QStringList fileFilter = QStringList() << QString("*.%1").arg(_settingsExt); @@ -122,3 +131,49 @@ } return 0; } + +/*! + * \brief Settings::save + * \details Writes the setting in the configuration files + * \return + */ +int Settings::save(const QString &vCategory, const QString &vGroup, const QString &vKey, const QString &vValue) +{ + // qDebug() << vCategory + // << vGroup + // << vKey + // << vValue; + QString mFileName = fileName(vCategory); + // qDebug() << " ~~~~~ " << mFileName; + QString mContent; + _Settings.add(vGroup, vKey, vValue,"", vCategory); + QString mPath = QFileInfo(mFileName).absolutePath(); + if ( mPath.trimmed().isEmpty() ) { + LOG_DEBUG("The settings path is empty."); + return 1; // TODO: define enum + } + + // qDebug() << " ~~~~~ " << mPath; + if ( ! FileHandler::makeFolder(mPath) ) { + LOG_DEBUG(QString("The settings path %1 can't be created.").arg(mPath)); + return 2; // TODO: define enum + } + + qDebug() << " ~~~~~ " << _Settings.groups(vCategory); + + for ( const auto &group : _Settings.groups(vCategory) ) { + mContent += QString("[%1]\n").arg(group); + for ( const auto &key : _Settings.keys(group) ) { + mContent += QString("%1 = %2\n").arg(key).arg(_Settings.value(group, key).toString()); + } + } + + qDebug() << mContent; + + if ( ! FileHandler::write(mFileName,mContent, false) ) { + LOG_DEBUG(QString("The settings file %1 can't be written.").arg(mFileName)); + return 3; // TODO: define enum + } + + return 0; +} Index: sources/storage/Settings.h =================================================================== diff -u -r86e9dfbff50cb7e16fd94c16c1c818cef3b47eac -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/storage/Settings.h (.../Settings.h) (revision 86e9dfbff50cb7e16fd94c16c1c818cef3b47eac) +++ sources/storage/Settings.h (.../Settings.h) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -52,11 +52,15 @@ bool isValid(const QString &vSettingFile); + QString fileName(const QString &vCategory); + + void update(); + public: Settings() {} int read(); - + int save(const QString &vCategory, const QString &vGroup, const QString &vKey, const QString &vValue); }; } Index: sources/storage/StorageGlobals.cpp =================================================================== diff -u -r3a528c6f3fce8132de2791b55d3227e715d68898 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision 3a528c6f3fce8132de2791b55d3227e715d68898) +++ sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -96,10 +96,11 @@ // Please notice that is the folder not the path // and it needs to be concatenated after SDCard_Base_Path_Name for each build configuration - const char *Log_Folder_Event = "log/" ; // Event Log - const char *Log_Folder_Data = "log/" ; // Data Log - const char *Log_Folder_Service = "service/" ; // Service Log - const char *Log_Folder_Treatment = "treatment/"; // Treatment + const char *Log_Folder_Base = SDCard_Base_Path_Name; // Base Log Folder + const char *Log_Folder_Event = "log/" ; // Event Log + const char *Log_Folder_Data = "log/" ; // Data Log + const char *Log_Folder_Service = "service/" ; // Service Log + const char *Log_Folder_Treatment = "treatment/" ; // Treatment Log // FIXME : Not sure having global settings object is a good idea. Index: sources/storage/StorageGlobals.h =================================================================== diff -u -r3a528c6f3fce8132de2791b55d3227e715d68898 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision 3a528c6f3fce8132de2791b55d3227e715d68898) +++ sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -54,10 +54,11 @@ extern const char *Scripts_Path_Name; // Log Type Folders - extern const char *Log_Folder_Event; // Event Log - extern const char *Log_Folder_Data; // Data Log - extern const char *Log_Folder_Service; // Service Log - extern const char *Log_Folder_Treatment; // Treatment + extern const char *Log_Folder_Base; // Base Log Folder + extern const char *Log_Folder_Event; // Event Log + extern const char *Log_Folder_Data; // Data Log + extern const char *Log_Folder_Service; // Service Log + extern const char *Log_Folder_Treatment; // Treatment Log // Date and Time extern const char *Date_Time_Set_Sh; Index: sources/view/settings/VSettings.cpp =================================================================== diff -u -r27cc308ff5113a9386899d3c8f8b29962a8498e1 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision 27cc308ff5113a9386899d3c8f8b29962a8498e1) +++ sources/view/settings/VSettings.cpp (.../VSettings.cpp) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -19,40 +19,55 @@ // Project #include "GuiController.h" #include "MSettings.h" +#include "Settings.h" VIEW_DEF(VSettings, SettingsData) void VSettings::onActionReceive(const SettingsData &) { - QVariantMap mCategorys; - for (const auto &category : _Settings.categorys()) { - QVariantMap details; + QVariantMap mSettings; + QVariantMap mData; + QStringList mCategorys = _Settings.categorys(); + for (const auto &category : mCategorys) { QStringList groups = _Settings.groups(category); - // DEBUG: - // qDebug() << " ----- " << category << groups; - details["groups"] = groups; - mCategorys[category] = details; - } - category(mCategorys); + for (const auto &group : groups) { + QVariantMap details; + QStringList keys = _Settings.keys (group); + QVariantList values = _Settings.values (group); + QString location = _Settings.location (group); + // DEBUG : + // qDebug() << " ##### " + // << group + // << keys + // << values + // << location ; + details["location"] = location; + details["keys" ] = keys ; + details["values" ] = values ; - QVariantMap mSettings; - for (const auto &group : _Settings.groups()) { - QVariantMap details; - // DEBUG : - // qDebug() << " ##### " - // << _Settings.keys (group) - // << _Settings.values (group) - // << _Settings.location (group); - QStringList keys = _Settings.keys (group); - QVariantList values = _Settings.values (group); - QString location = _Settings.location (group); + mSettings[group] = details; + for (const auto &key : keys) { - details["location"] = location; - details["keys" ] = keys ; - details["values" ] = values ; + QVariantMap keyValue; + keyValue[key] = _Settings.value(group, key); - mSettings[group] = details; + QVariantMap groups; + groups [group] = keyValue; + mData [category] = groups; + } + } } + + categorys(mCategorys); settings(mSettings); + data(mData); + + adjustment(true); } + +void VSettings::doSave(const QString &vCategory, const QString &vGroup, const QString &vKey, const QString &vValue) +{ + Storage::Settings settings; + settings.save(vCategory, vGroup, vKey, vValue); +} Index: sources/view/settings/VSettings.h =================================================================== diff -u -r27cc308ff5113a9386899d3c8f8b29962a8498e1 -ra82ee4f326b26c4369f1306f867edc1bca6dabbe --- sources/view/settings/VSettings.h (.../VSettings.h) (revision 27cc308ff5113a9386899d3c8f8b29962a8498e1) +++ sources/view/settings/VSettings.h (.../VSettings.h) (revision a82ee4f326b26c4369f1306f867edc1bca6dabbe) @@ -29,12 +29,19 @@ { Q_OBJECT - CONSTANT(QString , groupFormat, "%1^%2" ) - PROPERTY(bool , initialized, false ) - PROPERTY(QVariantMap, category , {} ) - PROPERTY(QVariantMap, settings , {} ) + TRIGGER ( bool , adjustment , 0 ) + // Don't use QVariantHash, qml don't like it and won't show the values. + CONSTANT(QString , groupFormat , "%1^%2" ) + PROPERTY(bool , initialized , false ) + PROPERTY(QStringList , categorys , {} ) + PROPERTY(QVariantMap , settings , {} ) + PROPERTY(QVariantMap , data , {} ) + VIEW_DEC(VSettings, SettingsData) + +public slots: + void doSave(const QString &vCategory, const QString &vGroup, const QString &vKey, const QString &vValue); }; }