core: qPref replace COPY_TXT with copy_txt in qPrefPrivate

Add copy_txt function to qPrefPrivate class
Remove macro COPY_TXT from qPrefPrivate.h
Replace use of COPY_TXT with copy_txt in qPref classes

copy_txt is only once, COPY_TXT was expanded approx. 160 times, so
this commit saves space (and removes a macro).

Signed-off-by: Jan Iversen <jani@apache.org>
This commit is contained in:
jan Iversen 2018-07-18 20:47:59 +02:00 committed by Dirk Hohndel
parent 597aa75348
commit f1648d297b
4 changed files with 17 additions and 15 deletions

View file

@ -35,8 +35,8 @@ void qPrefCloudStorage::set_cloud_base_url(const QString& value)
if (value != prefs.cloud_base_url) {
// only free and set if not default
if (prefs.cloud_base_url != default_prefs.cloud_base_url) {
COPY_TXT(cloud_base_url, value);
COPY_TXT(cloud_git_url, QString(prefs.cloud_base_url) + "/git");
qPrefPrivate::copy_txt(&prefs.cloud_base_url, value);
qPrefPrivate::copy_txt(&prefs.cloud_git_url, QString(prefs.cloud_base_url) + "/git");
}
disk_cloud_base_url(true);
@ -55,7 +55,7 @@ void qPrefCloudStorage::set_cloud_git_url(const QString& value)
if (value != prefs.cloud_git_url) {
// only free and set if not default
if (prefs.cloud_git_url != default_prefs.cloud_git_url) {
COPY_TXT(cloud_git_url, value);
qPrefPrivate::copy_txt(&prefs.cloud_git_url, value);
}
disk_cloud_git_url(true);
emit cloud_git_url_changed(value);
@ -73,7 +73,7 @@ void qPrefCloudStorage::set_cloud_storage_newpassword(const QString& value)
if (value == prefs.cloud_storage_newpassword)
return;
COPY_TXT(cloud_storage_newpassword, value);
qPrefPrivate::copy_txt(&prefs.cloud_storage_newpassword, value);
// NOT saved on disk, because it is only temporary
emit cloud_storage_newpassword_changed(value);
@ -83,7 +83,7 @@ GET_PREFERENCE_TXT(CloudStorage, cloud_storage_password);
void qPrefCloudStorage::set_cloud_storage_password(const QString& value)
{
if (value != prefs.cloud_storage_password) {
COPY_TXT(cloud_storage_password,value);
qPrefPrivate::copy_txt(&prefs.cloud_storage_password, value);
disk_cloud_storage_password(true);
emit cloud_storage_password_changed(value);
}

View file

@ -35,7 +35,7 @@ void qPrefDisplay::set_divelist_font(const QString& value)
if (newValue != prefs.divelist_font &&
!subsurface_ignore_font(qPrintable(newValue))) {
COPY_TXT(divelist_font, value);
qPrefPrivate::copy_txt(&prefs.divelist_font, value);
disk_divelist_font(true);
qApp->setFont(QFont(newValue));

View file

@ -9,3 +9,10 @@ qPrefPrivate *qPrefPrivate::instance()
static qPrefPrivate *self = new qPrefPrivate;
return self;
}
void qPrefPrivate::copy_txt(const char **name, const QString& string)
{
free((void *)*name);
*name = copy_qstring(string);
}

View file

@ -3,7 +3,6 @@
#define QPREFPRIVATE_H
// Header used by all qPref<class> implementations to avoid duplicating code
#include <QSettings>
#include <QVariant>
#include <QObject>
@ -18,17 +17,13 @@ public:
QSettings setting;
// Helper functions
static void copy_txt(const char **name, const QString& string);
private:
qPrefPrivate(QObject *parent = NULL);
};
//****** Macros to be used in the set functions ******
#define COPY_TXT(name, string) \
{ \
free((void *)prefs.name); \
prefs.name = copy_qstring(string); \
}
//****** Macros to be used in the disk functions, which are special ******
#define LOADSYNC_BOOL(name, field) \
{ \
@ -191,7 +186,7 @@ void qPref ## usegroup::set_ ## field (int value) \
void qPref ## usegroup::set_ ## field (const QString& value) \
{ \
if (value != prefs.field) { \
COPY_TXT(field, value); \
qPrefPrivate::instance()->copy_txt(&prefs.field, value); \
disk_ ## field(true); \
emit field ## _changed(value); \
} \