settingsHandler: write default setting for missing keys
This commit is contained in:
parent
5e2e6e7f4b
commit
a567428093
5 changed files with 119 additions and 12 deletions
70
LenaPi/controllers/SettingsHandler.cpp
Normal file
70
LenaPi/controllers/SettingsHandler.cpp
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#include "SettingsHandler.h"
|
||||
|
||||
constexpr const char* const rootPath = "rootPath";
|
||||
constexpr const char* const profile = "profile";
|
||||
constexpr const char* const enableEnergySaver = "enableEnergySaver";
|
||||
constexpr const char* const timeout = "timeout";
|
||||
constexpr const char* const shutdownScript = "shutdownScript";
|
||||
|
||||
SettingsHandler::SettingsHandler(QObject *parent) : QObject(parent)
|
||||
{
|
||||
initDefaults();
|
||||
}
|
||||
|
||||
SettingsHandler::SettingsHandler(QSettings *settings, QObject *parent) : SettingsHandler(parent)
|
||||
{
|
||||
setSettings(settings);
|
||||
}
|
||||
|
||||
SettingsHandler* SettingsHandler::createSettingsHandlerAndFillWithDefaultsIfMissing(QSettings *settings)
|
||||
{
|
||||
const auto handler = new SettingsHandler(settings);
|
||||
handler->fillWithDefaultIfMissing();
|
||||
return handler;
|
||||
}
|
||||
|
||||
void SettingsHandler::fillWithDefaultIfMissing()
|
||||
{
|
||||
for(const auto& key : mDefaults.keys()){
|
||||
if(!mSettings->contains(key)){
|
||||
mSettings->setValue(key,mDefaults.value(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString SettingsHandler::getRootPath() const
|
||||
{
|
||||
return mSettings->value(rootPath).toString();
|
||||
}
|
||||
|
||||
QString SettingsHandler::getProfile() const
|
||||
{
|
||||
return mSettings->value(profile).toString();
|
||||
}
|
||||
|
||||
bool SettingsHandler::isEnergySaverEnabled() const
|
||||
{
|
||||
return mSettings->value(enableEnergySaver).toBool();
|
||||
}
|
||||
|
||||
int SettingsHandler::getEnergySaverTimeout() const
|
||||
{
|
||||
return mSettings->value(timeout).toInt();
|
||||
}
|
||||
|
||||
QString SettingsHandler::getShutdownScript() const
|
||||
{
|
||||
return mSettings->value(shutdownScript).toString();
|
||||
}
|
||||
|
||||
void SettingsHandler::initDefaults()
|
||||
{
|
||||
mDefaults.insert(rootPath, "/home/ar/source/lenaMusic/");
|
||||
mDefaults.insert(profile, "RasPiTouch");
|
||||
mDefaults.insert(enableEnergySaver, true);
|
||||
mDefaults.insert(timeout, 60);
|
||||
mDefaults.insert(shutdownScript, "/usr/local/sbin/do_shutdown.sh");
|
||||
}
|
||||
|
||||
|
||||
|
||||
37
LenaPi/controllers/SettingsHandler.h
Normal file
37
LenaPi/controllers/SettingsHandler.h
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
#ifndef SETTINGSHANDLER_H
|
||||
#define SETTINGSHANDLER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <qsettings.h>
|
||||
|
||||
/**
|
||||
* @brief Handles app settings
|
||||
*/
|
||||
class SettingsHandler : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit SettingsHandler(QObject *parent = nullptr);
|
||||
SettingsHandler(QSettings* settings, QObject *parent = nullptr);
|
||||
|
||||
static SettingsHandler* createSettingsHandlerAndFillWithDefaultsIfMissing(QSettings* settings);
|
||||
|
||||
inline void setSettings(QSettings* settings) { mSettings = settings;}
|
||||
inline QSettings* getSettings() const { return mSettings; }
|
||||
void fillWithDefaultIfMissing();
|
||||
|
||||
QString getRootPath() const;
|
||||
QString getProfile() const;
|
||||
bool isEnergySaverEnabled() const;
|
||||
int getEnergySaverTimeout() const;
|
||||
QString getShutdownScript() const;
|
||||
|
||||
|
||||
private:
|
||||
void initDefaults();
|
||||
QSettings* mSettings;
|
||||
QHash<QString,QVariant> mDefaults;
|
||||
};
|
||||
|
||||
#endif // SETTINGSHANDLER_H
|
||||
Loading…
Add table
Add a link
Reference in a new issue