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; +}