#include "SettingsHandler.h" #include 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() { #ifdef ANDROID // three out of four devices report '4' as QStandardPaths::MusicLocation //mDefaults.insert(rootPath, "/storage/self/primary/Music"); mDefaults.insert(rootPath, QStandardPaths::writableLocation(QStandardPaths::MusicLocation)); #else mDefaults.insert(rootPath, QStandardPaths::MusicLocation); #endif 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"); }