80 lines
2.2 KiB
C++
80 lines
2.2 KiB
C++
#include "SettingsHandler.h"
|
|
#include <QStandardPaths>
|
|
|
|
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, QStandardPaths::MusicLocation);
|
|
mDefaults.insert(enableEnergySaver, false);
|
|
mDefaults.insert(timeout, 60);
|
|
mDefaults.insert(shutdownScript, "/usr/local/sbin/do_shutdown.sh");
|
|
mDefaults.insert(profile, "RasPiTouch");
|
|
// @todo add profile Android? Or simply scale ui for RasPi
|
|
// mDefaults.insert(profile, "Android");
|
|
|
|
// Defaults for LenaPi
|
|
// 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");
|
|
}
|
|
|
|
|
|
|