mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 18:13:24 +00:00
core: make methods in qPrefPrivate static
Small cleanup, using static methods is simpler and faster Added propSetValue and propValue instead of exposing setting variable. Signed-off-by: Jan Iversen <jani@apache.org>
This commit is contained in:
parent
c3a54826a2
commit
69f21d9aed
7 changed files with 65 additions and 74 deletions
|
@ -46,9 +46,9 @@ void qPrefCloudStorage::set_cloud_base_url(const QString &value)
|
|||
void qPrefCloudStorage::disk_cloud_base_url(bool doSync)
|
||||
{
|
||||
if (doSync) {
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/cloud_base_url", prefs.cloud_base_url);
|
||||
qPrefPrivate::propSetValue(group + "/cloud_base_url", prefs.cloud_base_url);
|
||||
} else {
|
||||
prefs.cloud_base_url = copy_qstring(qPrefPrivate::instance()->setting.value(group + "/cloud_base_url", default_prefs.cloud_base_url).toString());
|
||||
prefs.cloud_base_url = copy_qstring(qPrefPrivate::propValue(group + "/cloud_base_url", default_prefs.cloud_base_url).toString());
|
||||
qPrefPrivate::copy_txt(&prefs.cloud_git_url, QString(prefs.cloud_base_url) + "/git");
|
||||
}
|
||||
}
|
||||
|
@ -80,9 +80,9 @@ void qPrefCloudStorage::disk_cloud_storage_password(bool doSync)
|
|||
{
|
||||
if (doSync) {
|
||||
if (prefs.save_password_local)
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/password", prefs.cloud_storage_password);
|
||||
qPrefPrivate::propSetValue(group + "/password", prefs.cloud_storage_password);
|
||||
} else {
|
||||
prefs.cloud_storage_password = copy_qstring(qPrefPrivate::instance()->setting.value(group + "/password", default_prefs.cloud_storage_password).toString());
|
||||
prefs.cloud_storage_password = copy_qstring(qPrefPrivate::propValue(group + "/password", default_prefs.cloud_storage_password).toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,14 +103,14 @@ void qPrefCloudStorage::disk_userid(bool doSync)
|
|||
{
|
||||
if (doSync) {
|
||||
// always save in new position (part of cloud storage group)
|
||||
qPrefPrivate::instance()->setting.setValue(group + "subsurface_webservice_uid", prefs.userid);
|
||||
qPrefPrivate::propSetValue(group + "subsurface_webservice_uid", prefs.userid);
|
||||
} else {
|
||||
//WARNING: UserId was stored outside of any group.
|
||||
// try to read from new location, if it fails read from old location
|
||||
prefs.userid = copy_qstring(qPrefPrivate::instance()->setting.value(group + "subsurface_webservice_uid", "NoUserIdHere").toString());
|
||||
prefs.userid = copy_qstring(qPrefPrivate::propValue(group + "subsurface_webservice_uid", "NoUserIdHere").toString());
|
||||
if (QString(prefs.userid) == "NoUserIdHere") {
|
||||
const QString group = QStringLiteral("");
|
||||
prefs.userid = copy_qstring(qPrefPrivate::instance()->setting.value(group + "subsurface_webservice_uid", default_prefs.userid).toString());
|
||||
prefs.userid = copy_qstring(qPrefPrivate::propValue(group + "subsurface_webservice_uid", default_prefs.userid).toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ void qPrefDisplay::set_divelist_font(const QString &value)
|
|||
void qPrefDisplay::disk_divelist_font(bool doSync)
|
||||
{
|
||||
if (doSync)
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/divelist_font", prefs.divelist_font);
|
||||
qPrefPrivate::propSetValue(group + "/divelist_font", prefs.divelist_font);
|
||||
else
|
||||
setCorrectFont();
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ void qPrefDisplay::set_font_size(double value)
|
|||
void qPrefDisplay::disk_font_size(bool doSync)
|
||||
{
|
||||
if (doSync)
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/font_size", prefs.font_size);
|
||||
qPrefPrivate::propSetValue(group + "/font_size", prefs.font_size);
|
||||
else
|
||||
setCorrectFont();
|
||||
}
|
||||
|
@ -78,18 +78,15 @@ HANDLE_PREFERENCE_TXT(Display, "/theme", theme);
|
|||
|
||||
void qPrefDisplay::setCorrectFont()
|
||||
{
|
||||
QSettings s;
|
||||
QVariant v;
|
||||
|
||||
// get the font from the settings or our defaults
|
||||
// respect the system default font size if none is explicitly set
|
||||
QFont defaultFont = s.value(group + "/divelist_font", prefs.divelist_font).value<QFont>();
|
||||
QFont defaultFont = qPrefPrivate::propValue(group + "/divelist_font", prefs.divelist_font).value<QFont>();
|
||||
if (IS_FP_SAME(system_divelist_default_font_size, -1.0)) {
|
||||
prefs.font_size = qApp->font().pointSizeF();
|
||||
system_divelist_default_font_size = prefs.font_size; // this way we don't save it on exit
|
||||
}
|
||||
|
||||
prefs.font_size = s.value(group + "/font_size", prefs.font_size).toFloat();
|
||||
prefs.font_size = qPrefPrivate::propValue(group + "/font_size", prefs.font_size).toFloat();
|
||||
// painful effort to ignore previous default fonts on Windows - ridiculous
|
||||
QString fontName = defaultFont.toString();
|
||||
if (fontName.contains(","))
|
||||
|
@ -103,5 +100,5 @@ void qPrefDisplay::setCorrectFont()
|
|||
defaultFont.setPointSizeF(prefs.font_size);
|
||||
qApp->setFont(defaultFont);
|
||||
|
||||
prefs.display_invalid_dives = qPrefPrivate::instance()->setting.value(group + "/displayinvalid", default_prefs.display_invalid_dives).toBool();
|
||||
prefs.display_invalid_dives = qPrefPrivate::propValue(group + "/displayinvalid", default_prefs.display_invalid_dives).toBool();
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ void qPrefFacebook::loadSync(bool doSync)
|
|||
void qPrefFacebook::set_access_token(const QString &value)
|
||||
{
|
||||
if (value != prefs.facebook.access_token) {
|
||||
qPrefPrivate::instance()->copy_txt(&prefs.facebook.access_token, value);
|
||||
qPrefPrivate::copy_txt(&prefs.facebook.access_token, value);
|
||||
emit instance()->access_token_changed(value);
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ void qPrefFacebook::set_access_token(const QString &value)
|
|||
void qPrefFacebook::set_album_id(const QString &value)
|
||||
{
|
||||
if (value != prefs.facebook.album_id) {
|
||||
qPrefPrivate::instance()->copy_txt(&prefs.facebook.album_id, value);
|
||||
qPrefPrivate::copy_txt(&prefs.facebook.album_id, value);
|
||||
emit instance()->album_id_changed(value);
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ void qPrefFacebook::set_album_id(const QString &value)
|
|||
void qPrefFacebook::set_user_id(const QString &value)
|
||||
{
|
||||
if (value != prefs.facebook.user_id) {
|
||||
qPrefPrivate::instance()->copy_txt(&prefs.facebook.user_id, value);
|
||||
qPrefPrivate::copy_txt(&prefs.facebook.user_id, value);
|
||||
emit instance()->access_token_changed(value);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,9 +57,9 @@ void qPrefGeneral::set_default_file_behavior(enum def_file_behavior value)
|
|||
void qPrefGeneral::disk_default_file_behavior(bool doSync)
|
||||
{
|
||||
if (doSync) {
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/default_file_behavior", prefs.default_file_behavior);
|
||||
qPrefPrivate::propSetValue(group + "/default_file_behavior", prefs.default_file_behavior);
|
||||
} else {
|
||||
prefs.default_file_behavior = (enum def_file_behavior)qPrefPrivate::instance()->setting.value(group + "/default_file_behavior", default_prefs.default_file_behavior).toInt();
|
||||
prefs.default_file_behavior = (enum def_file_behavior)qPrefPrivate::propValue(group + "/default_file_behavior", default_prefs.default_file_behavior).toInt();
|
||||
if (prefs.default_file_behavior == UNDEFINED_DEFAULT_FILE)
|
||||
// undefined, so check if there's a filename set and
|
||||
// use that, otherwise go with no default file
|
||||
|
|
|
@ -32,9 +32,9 @@ void qPrefGeocoding::set_first_taxonomy_category(taxonomy_category value)
|
|||
void qPrefGeocoding::disk_first_taxonomy_category(bool doSync)
|
||||
{
|
||||
if (doSync)
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/cat0", prefs.geocoding.category[0]);
|
||||
qPrefPrivate::propSetValue(group + "/cat0", prefs.geocoding.category[0]);
|
||||
else
|
||||
prefs.geocoding.category[0] = (enum taxonomy_category)qPrefPrivate::instance()->setting.value(group + "/cat0", default_prefs.geocoding.category[0]).toInt();
|
||||
prefs.geocoding.category[0] = (enum taxonomy_category)qPrefPrivate::propValue(group + "/cat0", default_prefs.geocoding.category[0]).toInt();
|
||||
}
|
||||
|
||||
|
||||
|
@ -49,9 +49,9 @@ void qPrefGeocoding::set_second_taxonomy_category(taxonomy_category value)
|
|||
void qPrefGeocoding::disk_second_taxonomy_category(bool doSync)
|
||||
{
|
||||
if (doSync)
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/cat1", prefs.geocoding.category[1]);
|
||||
qPrefPrivate::propSetValue(group + "/cat1", prefs.geocoding.category[1]);
|
||||
else
|
||||
prefs.geocoding.category[1] = (enum taxonomy_category)qPrefPrivate::instance()->setting.value(group + "/cat1", default_prefs.geocoding.category[1]).toInt();
|
||||
prefs.geocoding.category[1] = (enum taxonomy_category)qPrefPrivate::propValue(group + "/cat1", default_prefs.geocoding.category[1]).toInt();
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,7 +66,7 @@ void qPrefGeocoding::set_third_taxonomy_category(taxonomy_category value)
|
|||
void qPrefGeocoding::disk_third_taxonomy_category(bool doSync)
|
||||
{
|
||||
if (doSync)
|
||||
qPrefPrivate::instance()->setting.setValue(group + "/cat2", prefs.geocoding.category[2]);
|
||||
qPrefPrivate::propSetValue(group + "/cat2", prefs.geocoding.category[2]);
|
||||
else
|
||||
prefs.geocoding.category[2] = (enum taxonomy_category)qPrefPrivate::instance()->setting.value(group + "/cat2", default_prefs.geocoding.category[2]).toInt();
|
||||
prefs.geocoding.category[2] = (enum taxonomy_category)qPrefPrivate::propValue(group + "/cat2", default_prefs.geocoding.category[2]).toInt();
|
||||
}
|
||||
|
|
|
@ -1,17 +1,30 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include "qPrefPrivate.h"
|
||||
|
||||
qPrefPrivate::qPrefPrivate(QObject *parent) : QObject(parent)
|
||||
{
|
||||
}
|
||||
qPrefPrivate *qPrefPrivate::instance()
|
||||
{
|
||||
static qPrefPrivate *self = new qPrefPrivate;
|
||||
return self;
|
||||
}
|
||||
#include <QSettings>
|
||||
|
||||
void qPrefPrivate::copy_txt(const char **name, const QString &string)
|
||||
{
|
||||
free((void *)*name);
|
||||
*name = copy_qstring(string);
|
||||
}
|
||||
|
||||
void qPrefPrivate::propSetValue(const QString &key, const QVariant &value)
|
||||
{
|
||||
// REMARK: making s static (which would be logical) does NOT work
|
||||
// because it gets initialized too early.
|
||||
// Having it as a local variable is light weight, because it is an
|
||||
// interface class.
|
||||
QSettings s;
|
||||
s.setValue(key, value);
|
||||
}
|
||||
|
||||
QVariant qPrefPrivate::propValue(const QString &key, const QVariant &defaultValue)
|
||||
{
|
||||
// REMARK: making s static (which would be logical) does NOT work
|
||||
// because it gets initialized too early.
|
||||
// Having it as a local variable is light weight, because it is an
|
||||
// interface class.
|
||||
QSettings s;
|
||||
return s.value(key, defaultValue);
|
||||
}
|
||||
|
|
|
@ -6,39 +6,20 @@
|
|||
#include "core/qthelper.h"
|
||||
#include "qPref.h"
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
#include <QVariant>
|
||||
|
||||
// implementation class of the interface classes
|
||||
class qPrefPrivate : public QObject {
|
||||
Q_OBJECT
|
||||
class qPrefPrivate {
|
||||
|
||||
public:
|
||||
friend class qPrefAnimations;
|
||||
friend class qPrefCloudStorage;
|
||||
friend class qPrefDisplay;
|
||||
friend class qPrefDiveComputer;
|
||||
friend class qPrefDivePlanner;
|
||||
friend class qPrefFacebook;
|
||||
friend class qPrefGeneral;
|
||||
friend class qPrefGeocoding;
|
||||
friend class qPrefLanguage;
|
||||
friend class qPrefLocationService;
|
||||
friend class qPrefPartialPressureGas;
|
||||
friend class qPrefProxy;
|
||||
friend class qPrefTechnicalDetails;
|
||||
friend class qPrefUnits;
|
||||
friend class qPrefUpdateManager;
|
||||
|
||||
private:
|
||||
static qPrefPrivate *instance();
|
||||
|
||||
QSettings setting;
|
||||
|
||||
// Helper functions
|
||||
static void copy_txt(const char **name, const QString &string);
|
||||
|
||||
qPrefPrivate(QObject *parent = NULL);
|
||||
static void propSetValue(const QString &key, const QVariant &value);
|
||||
static QVariant propValue(const QString &key, const QVariant &defaultValue);
|
||||
|
||||
private:
|
||||
qPrefPrivate() {}
|
||||
};
|
||||
|
||||
|
||||
|
@ -47,9 +28,9 @@ private:
|
|||
void qPref##usegroup::disk_##field(bool doSync) \
|
||||
{ \
|
||||
if (doSync) \
|
||||
qPrefPrivate::instance()->setting.setValue(group + name, prefs.usestruct field); \
|
||||
qPrefPrivate::propSetValue(group + name, prefs.usestruct field); \
|
||||
else \
|
||||
prefs.usestruct field = qPrefPrivate::instance()->setting.value(group + name, default_prefs.usestruct field).toBool(); \
|
||||
prefs.usestruct field = qPrefPrivate::propValue(group + name, default_prefs.usestruct field).toBool(); \
|
||||
}
|
||||
#define DISK_LOADSYNC_BOOL(usegroup, name, field) \
|
||||
DISK_LOADSYNC_BOOL_EXT(usegroup, name, field, )
|
||||
|
@ -58,9 +39,9 @@ private:
|
|||
void qPref##usegroup::disk_##field(bool doSync) \
|
||||
{ \
|
||||
if (doSync) \
|
||||
qPrefPrivate::instance()->setting.setValue(group + name, prefs.usestruct field); \
|
||||
qPrefPrivate::propSetValue(group + name, prefs.usestruct field); \
|
||||
else \
|
||||
prefs.usestruct field = qPrefPrivate::instance()->setting.value(group + name, default_prefs.usestruct field).toDouble(); \
|
||||
prefs.usestruct field = qPrefPrivate::propValue(group + name, default_prefs.usestruct field).toDouble(); \
|
||||
}
|
||||
#define DISK_LOADSYNC_DOUBLE(usegroup, name, field) \
|
||||
DISK_LOADSYNC_DOUBLE_EXT(usegroup, name, field, )
|
||||
|
@ -69,9 +50,9 @@ private:
|
|||
void qPref##usegroup::disk_##field(bool doSync) \
|
||||
{ \
|
||||
if (doSync) \
|
||||
qPrefPrivate::instance()->setting.setValue(group + name, prefs.usestruct field); \
|
||||
qPrefPrivate::propSetValue(group + name, prefs.usestruct field); \
|
||||
else \
|
||||
prefs.usestruct field = (enum type)qPrefPrivate::instance()->setting.value(group + name, default_prefs.usestruct field).toInt(); \
|
||||
prefs.usestruct field = (enum type)qPrefPrivate::propValue(group + name, default_prefs.usestruct field).toInt(); \
|
||||
}
|
||||
#define DISK_LOADSYNC_ENUM(usegroup, name, type, field) \
|
||||
DISK_LOADSYNC_ENUM_EXT(usegroup, name, type, field, )
|
||||
|
@ -80,9 +61,9 @@ private:
|
|||
void qPref##usegroup::disk_##field(bool doSync) \
|
||||
{ \
|
||||
if (doSync) \
|
||||
qPrefPrivate::instance()->setting.setValue(group + name, prefs.usestruct field); \
|
||||
qPrefPrivate::propSetValue(group + name, prefs.usestruct field); \
|
||||
else \
|
||||
prefs.usestruct field = qPrefPrivate::instance()->setting.value(group + name, default_prefs.usestruct field).toInt(); \
|
||||
prefs.usestruct field = qPrefPrivate::propValue(group + name, default_prefs.usestruct field).toInt(); \
|
||||
}
|
||||
#define DISK_LOADSYNC_INT(usegroup, name, field) \
|
||||
DISK_LOADSYNC_INT_EXT(usegroup, name, field, )
|
||||
|
@ -91,9 +72,9 @@ private:
|
|||
void qPref##usegroup::disk_##field(bool doSync) \
|
||||
{ \
|
||||
if (doSync) \
|
||||
qPrefPrivate::instance()->setting.setValue(group + name, prefs.usestruct field); \
|
||||
qPrefPrivate::propSetValue(group + name, prefs.usestruct field); \
|
||||
else \
|
||||
prefs.usestruct field = qPrefPrivate::instance()->setting.value(group + name, defval).toInt(); \
|
||||
prefs.usestruct field = qPrefPrivate::propValue(group + name, defval).toInt(); \
|
||||
}
|
||||
#define DISK_LOADSYNC_INT_DEF(usegroup, name, field, defval) \
|
||||
DISK_LOADSYNC_INT_DEF_EXT(usegroup, name, field, defval, )
|
||||
|
@ -102,9 +83,9 @@ private:
|
|||
void qPref##usegroup::disk_##field(bool doSync) \
|
||||
{ \
|
||||
if (doSync) \
|
||||
qPrefPrivate::instance()->setting.setValue(group + name, prefs.usestruct field . var); \
|
||||
qPrefPrivate::propSetValue(group + name, prefs.usestruct field . var); \
|
||||
else \
|
||||
prefs.usestruct field . var = qPrefPrivate::instance()->setting.value(group + name, default_prefs.usestruct field . var).toInt(); \
|
||||
prefs.usestruct field . var = qPrefPrivate::propValue(group + name, default_prefs.usestruct field . var).toInt(); \
|
||||
}
|
||||
#define DISK_LOADSYNC_STRUCT(usegroup, name, field, var) \
|
||||
DISK_LOADSYNC_STRUCT_EXT(usegroup, name, field, var, )
|
||||
|
@ -113,9 +94,9 @@ private:
|
|||
void qPref##usegroup::disk_##field(bool doSync) \
|
||||
{ \
|
||||
if (doSync) \
|
||||
qPrefPrivate::instance()->setting.setValue(group + name, prefs.usestruct field); \
|
||||
qPrefPrivate::propSetValue(group + name, prefs.usestruct field); \
|
||||
else \
|
||||
prefs.usestruct field = copy_qstring(qPrefPrivate::instance()->setting.value(group + name, default_prefs.usestruct field).toString()); \
|
||||
prefs.usestruct field = copy_qstring(qPrefPrivate::propValue(group + name, default_prefs.usestruct field).toString()); \
|
||||
}
|
||||
#define DISK_LOADSYNC_TXT(usegroup, name, field) \
|
||||
DISK_LOADSYNC_TXT_EXT(usegroup, name, field, )
|
||||
|
@ -185,7 +166,7 @@ private:
|
|||
void qPref##usegroup::set_##field(const QString &value) \
|
||||
{ \
|
||||
if (value != prefs.usestruct field) { \
|
||||
qPrefPrivate::instance()->copy_txt(&prefs.usestruct field, value); \
|
||||
qPrefPrivate::copy_txt(&prefs.usestruct field, value); \
|
||||
disk_##field(true); \
|
||||
emit qPref##usegroup::instance()->field##_changed(value); \
|
||||
} \
|
||||
|
|
Loading…
Add table
Reference in a new issue