summaryrefslogtreecommitdiffstats
path: root/core/prefs-macros.h
blob: 53361a19f759473bf6838ef44f03a0e9bb0ae44d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// SPDX-License-Identifier: GPL-2.0
#ifndef PREFSMACROS_H
#define PREFSMACROS_H

#include "core/qthelper.h"
#include "subsurface-string.h"

#define SB(V, B) s.setValue(V, (int)(B->isChecked() ? 1 : 0))

#define GET_UNIT(name, field, f, t)                                 \
	v = s.value(QString(name));                                 \
	if (v.isValid())                                            \
		prefs.units.field = (v.toInt() == (t)) ? (t) : (f); \
	else                                                        \
		prefs.units.field = default_prefs.units.field

#define GET_UNIT3(name, field, f, l, type)                          \
	v = s.value(QString(name));                                 \
	if (v.isValid() && v.toInt() >= (f) && v.toInt() <= (l))    \
		prefs.units.field = (type)v.toInt();                \
	else                                                        \
		prefs.units.field = default_prefs.units.field

#define GET_UNIT_BOOL(name, field)                      \
	v = s.value(QString(name));                     \
	if (v.isValid())                                \
		prefs.units.field = v.toBool();         \
	else                                            \
		prefs.units.field = default_prefs.units.field

#define GET_BOOL(name, field)                           \
	v = s.value(QString(name));                     \
	if (v.isValid())                                \
		prefs.field = v.toBool();               \
	else                                            \
		prefs.field = default_prefs.field

#define GET_DOUBLE(name, field)             \
	v = s.value(QString(name));         \
	if (v.isValid())                    \
		prefs.field = v.toDouble(); \
	else                                \
		prefs.field = default_prefs.field

#define GET_INT(name, field)             \
	v = s.value(QString(name));      \
	if (v.isValid())                 \
		prefs.field = v.toInt(); \
	else                             \
		prefs.field = default_prefs.field

#define GET_ENUM(name, type, field)                 \
	v = s.value(QString(name));                 \
	if (v.isValid())                            \
		prefs.field = (enum type)v.toInt(); \
	else                                        \
		prefs.field = default_prefs.field

#define GET_INT_DEF(name, field, defval)                                 \
	v = s.value(QString(name));                                      \
	if (v.isValid())                                                 \
		prefs.field = v.toInt();                                 \
	else                                                             \
		prefs.field = defval

#define GET_TXT(name, field)                                   \
	v = s.value(QString(name));                            \
	if (v.isValid())                                       \
		prefs.field = copy_qstring(v.toString());      \
	else                                                   \
		prefs.field = copy_string(default_prefs.field)

#define SAVE_OR_REMOVE_SPECIAL(_setting, _default, _compare, _value)     \
	if (_compare != _default)                                        \
		s.setValue(_setting, _value);                            \
	else                                                             \
		s.remove(_setting)

#define SAVE_OR_REMOVE(_setting, _default, _value)                       \
	if (_value != _default)                                          \
		s.setValue(_setting, _value);                            \
	else                                                             \
		s.remove(_setting)

#endif // PREFSMACROS_H