Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2018-07-14 08:15:23 -07:00
commit dc22747cb0
14 changed files with 191 additions and 51 deletions

View file

@ -100,6 +100,7 @@ set(SUBSURFACE_CORE_LIB_SRCS
# classes to manage struct preferences for QWidget and QML
settings/qPref.cpp
settings/qPrefAnimations.cpp
settings/qPrefDisplay.cpp
#Subsurface Qt have the Subsurface structs QObjectified for easy access via QML.

View file

@ -6,6 +6,7 @@
#include <QSettings>
#include "core/pref.h"
#include "qPrefAnimations.h"
#include "qPrefDisplay.h"
class qPref : public QObject {
@ -34,8 +35,6 @@ public:
const QString canonical_version() const;
const QString mobile_version() const;
private:
};
#endif

View file

@ -0,0 +1,20 @@
// SPDX-License-Identifier: GPL-2.0
#include "qPref.h"
#include "qPref_private.h"
#include "qPrefAnimations.h"
qPrefAnimations::qPrefAnimations(QObject *parent) : QObject(parent)
{
}
qPrefAnimations *qPrefAnimations::instance()
{
static qPrefAnimations *self = new qPrefAnimations;
return self;
}
void qPrefAnimations::loadSync(bool doSync)
{
disk_animation_speed(doSync);
}
HANDLE_PREFERENCE_INT(Animations, "/animation_speed", animation_speed);

View file

@ -0,0 +1,38 @@
// SPDX-License-Identifier: GPL-2.0
#ifndef QPREFANIMATIONS_H
#define QPREFANIMATIONS_H
#include <QObject>
#include <QSettings>
class qPrefAnimations : public QObject {
Q_OBJECT
Q_PROPERTY(int animation_speed READ animation_speed WRITE set_animation_speed NOTIFY animation_speed_changed);
public:
qPrefAnimations(QObject *parent = NULL);
static qPrefAnimations *instance();
// Load/Sync local settings (disk) and struct preference
void loadSync(bool doSync);
void load() { loadSync(false); }
void sync() { loadSync(true); }
public:
int animation_speed() const;
public slots:
void set_animation_speed(int value);
signals:
void animation_speed_changed(int value);
private:
const QString group = QStringLiteral("Animations");
QSettings setting;
// functions to load/sync variable with disk
void disk_animation_speed(bool doSync);
};
#endif

View file

@ -2054,27 +2054,6 @@ void LanguageSettingsObjectWrapper::setDateFormatOverride(bool value)
emit dateFormatOverrideChanged(value);
}
AnimationsSettingsObjectWrapper::AnimationsSettingsObjectWrapper(QObject* parent):
QObject(parent)
{
}
int AnimationsSettingsObjectWrapper::animationSpeed() const
{
return prefs.animation_speed;
}
void AnimationsSettingsObjectWrapper::setAnimationSpeed(int value)
{
if (value == prefs.animation_speed)
return;
QSettings s;
s.beginGroup(group);
s.setValue("animation_speed", value);
prefs.animation_speed = value;
emit animationSpeedChanged(value);
}
LocationServiceSettingsObjectWrapper::LocationServiceSettingsObjectWrapper(QObject* parent):
QObject(parent)
@ -2127,7 +2106,7 @@ QObject(parent),
general_settings(new GeneralSettingsObjectWrapper(this)),
display_settings(new qPrefDisplay(this)),
language_settings(new LanguageSettingsObjectWrapper(this)),
animation_settings(new AnimationsSettingsObjectWrapper(this)),
animation_settings(new qPrefAnimations(this)),
location_settings(new LocationServiceSettingsObjectWrapper(this)),
update_manager_settings(new UpdateManagerSettings(this)),
dive_computer_settings(new DiveComputerSettings(this))

View file

@ -640,23 +640,6 @@ private:
const QString group = QStringLiteral("Language");
};
class AnimationsSettingsObjectWrapper : public QObject {
Q_OBJECT
Q_PROPERTY(int animation_speed READ animationSpeed WRITE setAnimationSpeed NOTIFY animationSpeedChanged)
public:
AnimationsSettingsObjectWrapper(QObject *parent);
int animationSpeed() const;
public slots:
void setAnimationSpeed(int value);
signals:
void animationSpeedChanged(int value);
private:
const QString group = QStringLiteral("Animations");
};
class LocationServiceSettingsObjectWrapper : public QObject {
Q_OBJECT
Q_PROPERTY(int time_threshold READ timeThreshold WRITE setTimeThreshold NOTIFY timeThresholdChanged)
@ -690,7 +673,7 @@ class SettingsObjectWrapper : public QObject {
Q_PROPERTY(GeneralSettingsObjectWrapper* general MEMBER general_settings CONSTANT)
Q_PROPERTY(qPrefDisplay* display MEMBER display_settings CONSTANT)
Q_PROPERTY(LanguageSettingsObjectWrapper* language MEMBER language_settings CONSTANT)
Q_PROPERTY(AnimationsSettingsObjectWrapper* animation MEMBER animation_settings CONSTANT)
Q_PROPERTY(qPrefAnimations* animation MEMBER animation_settings CONSTANT)
Q_PROPERTY(LocationServiceSettingsObjectWrapper* Location MEMBER location_settings CONSTANT)
Q_PROPERTY(UpdateManagerSettings* update MEMBER update_manager_settings CONSTANT)
@ -709,7 +692,7 @@ public:
GeneralSettingsObjectWrapper *general_settings;
qPrefDisplay *display_settings;
LanguageSettingsObjectWrapper *language_settings;
AnimationsSettingsObjectWrapper *animation_settings;
qPrefAnimations *animation_settings;
LocationServiceSettingsObjectWrapper *location_settings;
UpdateManagerSettings *update_manager_settings;
DiveComputerSettings *dive_computer_settings;