Index: sources/storage/Settings.cpp =================================================================== diff -u -r16bd55822fa77e5bea6fdfa7b54abf123c1da8bb -r6c6f1f5d466badd9b4fd67be7c907234c342b2a2 --- sources/storage/Settings.cpp (.../Settings.cpp) (revision 16bd55822fa77e5bea6fdfa7b54abf123c1da8bb) +++ sources/storage/Settings.cpp (.../Settings.cpp) (revision 6c6f1f5d466badd9b4fd67be7c907234c342b2a2) @@ -1,13 +1,13 @@ /*! * - * Copyright (c) 2021-2022 Diality Inc. - All Rights Reserved. + * Copyright (c) 2021-2023 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file Settings.cpp * \author (last) Behrouz NematiPour - * \date (last) 15-Aug-2022 + * \date (last) 01-Mar-2023 * \author (original) Behrouz NematiPour * \date (original) 29-Mar-2021 * @@ -31,8 +31,10 @@ bool Settings::isValid(const QString &vSettingFile) { + int err = Settings::Settings_Error::eError_None; if (! QFileInfo::exists(vSettingFile)) { - LOG_DEBUG("Setting file " + vSettingFile + " does not exist."); + err = Settings::Settings_Error::eError_SettingNotExists; + LOG_DEBUG(errorMessage(err).arg(vSettingFile)); return false; } return true; @@ -44,7 +46,7 @@ * \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); + return QString("%1%2.%3").arg(Storage::Settings_Path()).arg(vCategory).arg(_settingsExt); } /*! @@ -53,17 +55,19 @@ */ int Settings::read() { + int err = Settings::Settings_Error::eError_None; QStringList fileFilter = QStringList() << QString("*.%1").arg(_settingsExt); - QFileInfoList settingFiles = FileHandler::find (Storage::Settings_Path_Name, fileFilter); - QStringList settingFolders = FileHandler::subFolders(Storage::Settings_Path_Name); + QFileInfoList settingFiles = FileHandler::find (Storage::Settings_Path(), fileFilter); + QStringList settingFolders = FileHandler::subFolders(Storage::Settings_Path()); if ( ! settingFolders.count() ) { - LOG_DEBUG(QObject::tr("No setting folder in the %1").arg(Storage::Settings_Path_Name)); - return 1; // TODO : Define an error enum when completed + err = Settings::Settings_Error::eError_No_SettingsFolder; + LOG_DEBUG(errorMessage(err).arg(Storage::Settings_Path())); + return err; } for ( QString &settingFolder : settingFolders ) { - QString folder = settingFolder.prepend(Storage::Settings_Path_Name); + QString folder = settingFolder.prepend(Storage::Settings_Path()); settingFiles += FileHandler::find(folder, fileFilter); } // DEBUG: @@ -73,8 +77,9 @@ // QFileInfo("/home/denali/Projects/application/resources/settings/Alarms/Alarms.conf") // }; if ( ! settingFiles.count() ) { - LOG_DEBUG(QObject::tr("No setting files in the %1").arg(Storage::Settings_Path_Name)); - return 2; // TODO : Define an error enum when completed + err = Settings::Settings_Error::eError_No_SettingsFile; + LOG_DEBUG(errorMessage(err).arg(Storage::Settings_Path())); + return err; } QList details; @@ -87,7 +92,7 @@ detail.content = file.readAll().trimmed(); if (detail.content.isEmpty()) continue; detail.location = settingFile.absolutePath() + "/"; - detail.category = QString(detail.location + settingFile.baseName()).remove(Storage::Settings_Path_Name); + detail.category = QString(detail.location + settingFile.baseName()).remove(Storage::Settings_Path()); details += detail; } } @@ -130,9 +135,10 @@ // ----- remove inline comment if ( commentPosition > 0 ) line.truncate(commentPosition); + line = line.trimmed(); // ----- find group - if (line.contains("[") && line.contains("]")) { + if (line.startsWith("[") && line.endsWith("]")) { line.replace("[","").replace("]", ""); group = line; } @@ -160,7 +166,7 @@ // DEBUG: qDebug() << group << line; } } - return 0; + return err; } /*! @@ -176,20 +182,23 @@ // << vValue; QString mFileName = fileName(vCategory); QString mContent; + int err = Settings_Error::eError_None; // -------------------------------------------------------------------------------------------------------------- //Note: the configuration files which can be saved, are like settings and should not have duplicate values. // as an example the Alarm volume can't have two separate duplicate entry in the settings. // -------------------------------------------------------------------------------------------------------------- _Settings.add(vCategory, vGroup, vKey, vValue, false); QString mPath = QFileInfo(mFileName).absolutePath(); if ( mPath.trimmed().isEmpty() ) { - LOG_DEBUG("The settings path is empty."); - return 1; // TODO: define enum + err = Settings_Error::eError_PathEmpty; + LOG_DEBUG(errorMessage(err)); + return err; } if ( ! FileHandler::makeFolder(mPath) ) { - LOG_DEBUG(QString("The settings path %1 can't be created.").arg(mPath)); - return 2; // TODO: define enum + err = Settings_Error::eError_MkDir; + LOG_DEBUG(errorMessage(err).arg(mPath)); + return err; } for ( const auto &group : _Settings.groups(vCategory) ) { @@ -200,9 +209,38 @@ } if ( ! FileHandler::write(mFileName,mContent, false) ) { - LOG_DEBUG(QString("The settings file %1 can't be written.").arg(mFileName)); - return 3; // TODO: define enum + err = Settings_Error::eError_Write; + LOG_DEBUG(errorMessage(err).arg(mFileName)); + return err; } - return 0; + return err; } + +/*! + * \brief Settings::configurationsMove + * \details After the encrypted partition is ready the configuration files are moved from the root home to denali home. + * \param vMessage + * \return + */ +int Settings::configurationsMove(QString *vMessage) +{ + int err = Settings_Error::eError_None ; + Location_Enum loc = Location_Enum ::eInit; + QString src = Settings::location(Location_Enum ::eInit ) ; + QString dst = Settings::location(Location_Enum ::eSecured ) ; + QString msg = ""; + if ( ! Settings ::configurationsPOST(loc )) { msg = errorMessage(err ); LOG_DEBUG(msg); err = Settings_Error::eError_POST ; goto lOut; } + if ( ! FileHandler ::makeFolder ( dst )) { msg = errorMessage(err ); LOG_DEBUG(msg); err = Settings_Error::eError_MkDir ; goto lOut; } + for( QString dir : FileHandler::subFolders(src)) { + QString sub = src + dir; + if ( FileHandler ::copyFolder (sub, dst )) { msg = errorMessage(err, dir); LOG_DEBUG(msg); err = Settings_Error::eError_Copy ; goto lOut; } + if ( FileHandler ::removeFolder (sub )) { msg = errorMessage(err, dir); LOG_DEBUG(msg); err = Settings_Error::eError_Remove ; goto lOut; } + } + + Storage::Settings_Secured(); + +lOut: + if ( vMessage ) { *vMessage = msg; } + return err; +}