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
|
|
@ -12,7 +12,8 @@ SOURCES += main.cpp \
|
||||||
controllers/MusicController.cpp \
|
controllers/MusicController.cpp \
|
||||||
models/MusicModel.cpp \
|
models/MusicModel.cpp \
|
||||||
MouseEventSpy.cpp \
|
MouseEventSpy.cpp \
|
||||||
EnergySaver.cpp
|
EnergySaver.cpp \
|
||||||
|
controllers/SettingsHandler.cpp
|
||||||
|
|
||||||
RESOURCES += qml.qrc \
|
RESOURCES += qml.qrc \
|
||||||
lenapi.qrc
|
lenapi.qrc
|
||||||
|
|
@ -47,6 +48,7 @@ HEADERS += \
|
||||||
controllers/MusicController.h \
|
controllers/MusicController.h \
|
||||||
models/MusicModel.h \
|
models/MusicModel.h \
|
||||||
MouseEventSpy.h \
|
MouseEventSpy.h \
|
||||||
EnergySaver.h
|
EnergySaver.h \
|
||||||
|
controllers/SettingsHandler.h
|
||||||
|
|
||||||
INCLUDEPATH+=/usr/local/include
|
INCLUDEPATH+=/usr/local/include
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE QtCreatorProject>
|
<!DOCTYPE QtCreatorProject>
|
||||||
<!-- Written by QtCreator 4.8.2, 2021-09-25T15:10:11. -->
|
<!-- Written by QtCreator 4.8.2, 2021-09-26T21:51:47. -->
|
||||||
<qtcreator>
|
<qtcreator>
|
||||||
<data>
|
<data>
|
||||||
<variable>EnvironmentId</variable>
|
<variable>EnvironmentId</variable>
|
||||||
|
|
|
||||||
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
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
#include "controllers/NavigationController.h"
|
#include "controllers/NavigationController.h"
|
||||||
#include "MouseEventSpy.h"
|
#include "MouseEventSpy.h"
|
||||||
#include "EnergySaver.h"
|
#include "EnergySaver.h"
|
||||||
|
#include "controllers/SettingsHandler.h"
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
|
@ -41,24 +42,21 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read Settings */
|
/* Read Settings */
|
||||||
const auto rootPath = settings->value("rootPath", "/home/ar/source/lenaMusic/").toString(); // path to music files
|
const auto settingsHandler = SettingsHandler::createSettingsHandlerAndFillWithDefaultsIfMissing(settings);
|
||||||
const auto profile = settings->value("profile", "RasPiTouch").toString(); // known profiles are "RasPiTouch" and "Desktop"
|
|
||||||
const auto isEnergySavingEnabled = settings->value("enableEnergySaver", true).toBool(); // enable/disable energy saver
|
|
||||||
const auto energySaverTimeout = settings->value("timeout", 60).toInt(); //timeout in seconds
|
|
||||||
const auto shutdownScript = settings->value("shutdownScript", "/usr/local/sbin/do_shutdown.sh").toString();
|
|
||||||
|
|
||||||
// init main app
|
// init main app
|
||||||
NavigationController navController;
|
NavigationController navController;
|
||||||
navController.setContext(engine.rootContext());
|
navController.setContext(engine.rootContext());
|
||||||
navController.init(rootPath);
|
navController.init(settingsHandler->getRootPath());
|
||||||
navController.setUiProfile(profile);
|
navController.setUiProfile(settingsHandler->getProfile());
|
||||||
|
|
||||||
if(isEnergySavingEnabled){
|
if(settingsHandler->isEnergySaverEnabled()){
|
||||||
/* install MouseEventSpy and energy saver used for auto shut down of device
|
/* install MouseEventSpy and energy saver used for auto shut down of device
|
||||||
* if not used for a predefined time.
|
* if not used for a predefined time.
|
||||||
*/
|
*/
|
||||||
MouseEventSpy::init();
|
MouseEventSpy::init();
|
||||||
EnergySaver::init(energySaverTimeout, shutdownScript);
|
EnergySaver::init(settingsHandler->getEnergySaverTimeout(), settingsHandler->getShutdownScript());
|
||||||
QObject::connect(MouseEventSpy::instance(), &MouseEventSpy::mouseEventDetected,
|
QObject::connect(MouseEventSpy::instance(), &MouseEventSpy::mouseEventDetected,
|
||||||
EnergySaver::instance(), &EnergySaver::restartTimer);
|
EnergySaver::instance(), &EnergySaver::restartTimer);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue