summaryrefslogtreecommitdiffstats
path: root/core/settings/qPrefDisplay.h
blob: b1090b7a187d16928f50a25380569436a9abddf0 (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// SPDX-License-Identifier: GPL-2.0
#ifndef QPREFDISPLAY_H
#define QPREFDISPLAY_H
#include "core/pref.h"

#include <QObject>
#include <QPointF>

class qPrefDisplay : public QObject {
	Q_OBJECT
	Q_PROPERTY(int animation_speed READ animation_speed WRITE set_animation_speed NOTIFY animation_speedChanged);
	Q_PROPERTY(QString divelist_font READ divelist_font WRITE set_divelist_font NOTIFY divelist_fontChanged);
	Q_PROPERTY(double font_size READ font_size WRITE set_font_size NOTIFY font_sizeChanged);
	Q_PROPERTY(double mobile_scale READ mobile_scale WRITE set_mobile_scale NOTIFY mobile_scaleChanged);
	Q_PROPERTY(bool display_invalid_dives READ display_invalid_dives WRITE set_display_invalid_dives NOTIFY display_invalid_divesChanged);
	Q_PROPERTY(QString lastDir READ lastDir WRITE set_lastDir NOTIFY lastDirChanged);
	Q_PROPERTY(bool show_developer READ show_developer WRITE set_show_developer NOTIFY show_developerChanged);
	Q_PROPERTY(QString theme READ theme WRITE set_theme NOTIFY themeChanged);
	Q_PROPERTY(QPointF tooltip_position READ tooltip_position WRITE set_tooltip_position NOTIFY tooltip_positionChanged);
	Q_PROPERTY(QString userSurvey READ userSurvey WRITE set_userSurvey NOTIFY userSurveyChanged);
	Q_PROPERTY(QByteArray mainSplitter READ mainSplitter WRITE set_mainSplitter NOTIFY mainSplitterChanged);
	Q_PROPERTY(QByteArray topSplitter READ topSplitter WRITE set_topSplitter NOTIFY topSplitterChanged);
	Q_PROPERTY(QByteArray bottomSplitter READ bottomSplitter WRITE set_bottomSplitter NOTIFY bottomSplitterChanged);
	Q_PROPERTY(bool maximized READ maximized WRITE set_maximized NOTIFY maximizedChanged);
	Q_PROPERTY(QByteArray geometry READ geometry WRITE set_geometry NOTIFY geometryChanged);
	Q_PROPERTY(QByteArray windowState READ windowState WRITE set_windowState NOTIFY windowStateChanged);
	Q_PROPERTY(int lastState READ lastState WRITE set_lastState NOTIFY lastStateChanged);

public:
	qPrefDisplay(QObject *parent = NULL);
	static qPrefDisplay *instance();

	// Load/Sync local settings (disk) and struct preference
	static void loadSync(bool doSync);
	static void load() { loadSync(false); }
	static void sync() { loadSync(true); }

public:
	static int animation_speed() { return prefs.animation_speed; }
	static QString divelist_font() { return prefs.divelist_font; }
	static double font_size() { return prefs.font_size; }
	static double mobile_scale() { return prefs.mobile_scale; }
	static bool display_invalid_dives() { return prefs.display_invalid_dives; }
	static QString lastDir() { return st_lastDir; ; }
	static bool show_developer() { return prefs.show_developer; }
	static QString theme() { return st_theme; }
	static QPointF tooltip_position() { return st_tooltip_position; }
	static QString userSurvey() { return st_userSurvey; }
	static QByteArray mainSplitter() { return st_mainSplitter; }
	static QByteArray topSplitter() { return st_topSplitter; }
	static QByteArray bottomSplitter() { return st_bottomSplitter; }
	static bool maximized() { return st_maximized; }
	static QByteArray geometry() { return st_geometry; }
	static QByteArray windowState() { return st_windowState; }
	static int lastState() { return st_lastState; }

public slots:
	static void set_animation_speed(int value);
	static void set_divelist_font(const QString &value);
	static void set_font_size(double value);
	static void set_mobile_scale(double value);
	static void set_display_invalid_dives(bool value);
	static void set_lastDir(const QString &value);
	static void set_show_developer(bool value);
	static void set_theme(const QString &value);
	static void set_tooltip_position(const QPointF &value);
	static void set_userSurvey(const QString &value);
	static void set_mainSplitter(const QByteArray &value);
	static void set_topSplitter(const QByteArray &value);
	static void set_bottomSplitter(const QByteArray &value);
	static void set_maximized(bool value);
	static void set_geometry(const QByteArray& value);
	static void set_windowState(const QByteArray& value);
	static void set_lastState(int value);

signals:
	void animation_speedChanged(int value);
	void divelist_fontChanged(const QString &value);
	void font_sizeChanged(double value);
	void mobile_scaleChanged(double value);
	void display_invalid_divesChanged(bool value);
	void lastDirChanged(const QString &value);
	void show_developerChanged(bool value);
	void themeChanged(const QString &value);
	void tooltip_positionChanged(const QPointF &value);
	void userSurveyChanged(const QString &value);
	void mainSplitterChanged(const QByteArray &value);
	void topSplitterChanged(const QByteArray &value);
	void bottomSplitterChanged(const QByteArray &value);
	void maximizedChanged(bool value);
	void geometryChanged(const QByteArray& value);
	void windowStateChanged(const QByteArray& value);
	void lastStateChanged(int value);

private:
	// functions to load/sync variable with disk
	static void disk_animation_speed(bool doSync);
	static void disk_divelist_font(bool doSync);
	static void disk_font_size(bool doSync);
	static void disk_mobile_scale(bool doSync);
	static void disk_display_invalid_dives(bool doSync);
	static void disk_show_developer(bool doSync);

	// functions to handle class variables
	static void load_lastDir();
	static void load_theme();
	static void load_tooltip_position();
	static void load_userSurvey();
	static void load_mainSplitter();
	static void load_topSplitter();
	static void load_bottomSplitter();
	static void load_maximized();
	static void load_geometry();
	static void load_windowState();
	static void load_lastState();

	// font helper function
	static void setCorrectFont();

	// Class variables not present in structure preferences
	static QString st_lastDir;
	static QString st_theme;
	static QPointF st_tooltip_position;
	static QString st_userSurvey;
	static QByteArray st_mainSplitter;
	static QByteArray st_topSplitter;
	static QByteArray st_bottomSplitter;
	static bool st_maximized;
	static QByteArray st_geometry;
	static QByteArray st_windowState;
	static int st_lastState;
};
#endif