src/settings.h

changeset 221
e28f89b8ccdf
parent 220
a6d937f8c0ac
child 224
54fd83d4db9c
--- a/src/settings.h	Tue Jun 14 20:44:07 2022 +0300
+++ b/src/settings.h	Tue Jun 14 22:31:39 2022 +0300
@@ -1,13 +1,20 @@
 #ifndef SETTINGS_H
 #define SETTINGS_H
 #include <QSettings>
-#include "settingdefs.h"
+#include <QMdiArea>
+#include "libraries.h"
+#include "gl/common.h"
 
 // SettingType - get type of setting by enumerator
-template<Setting>
+template<typename>
+struct SettingId{};
+
+template<SettingId>
 struct SettingInfo{};
 
 #define SETTING(NAME, DEFVALUE) \
+	namespace SettingIdTypes { class NAME; } \
+	namespace Setting { constexpr SettingId<class NAME##_SettingType> NAME; } \
 	template<> \
 	struct SettingInfo<Setting::NAME> \
 	{ \
@@ -18,24 +25,47 @@
 			return value; \
 		}; \
 	};
-#include "settingdefs.h"
+
+// -----------------------------------------------------------------------------
+// Setting definitions
+
+// Rendering options
+SETTING(Locale, QStringLiteral("system"))
+SETTING(BackgroundColor, (QColor{48, 48, 48}))
+SETTING(MainColor, (QColor{255, 255, 64}))
+SETTING(SelectedColor, (QColor{32, 32, 224}))
+SETTING(LineThickness, 2.0f)
+SETTING(LineAntiAliasing, true)
+SETTING(RenderStyle, gl::RenderStyle::Normal)
+SETTING(DrawWireframe, false)
+SETTING(DrawAxes, true)
+SETTING(MainWindowGeometry, QByteArray{})
+SETTING(MainSplitterState, QByteArray{})
+SETTING(RecentFiles, QStringList{})
+SETTING(ViewMode, QMdiArea::TabbedView)
+
+// File management options
+SETTING(Libraries, QVector<Library>{})
+
+// End of setting definitions
+// -----------------------------------------------------------------------------
 #undef SETTING
 
-template<Setting X>
+template<SettingId X>
 using SettingType_t = typename SettingInfo<X>::type;
 static_assert(std::is_same_v<SettingType_t<Setting::DrawAxes>, bool>);
 
-template<Setting X>
+template<SettingId X>
 const char* settingName = SettingInfo<X>::name;
 
-template<Setting X>
+template<SettingId X>
 inline auto settingDefaultValue()
 {
 	return SettingInfo<X>::defaultValue();
 }
 
 // get() - get setting by enumerator
-template<Setting X>
+template<SettingId X>
 inline SettingType_t<X> setting()
 {
 	static const QVariant defvariant = QVariant::fromValue(settingDefaultValue<X>());
@@ -44,7 +74,7 @@
 }
 
 // setSetting() - set value of setting
-template<Setting X>
+template<SettingId X>
 inline void setSetting(const SettingType_t<X>& value)
 {
 	if (value == settingDefaultValue<X>()) {

mercurial