src/main.cpp

changeset 218
63125c36de73
parent 217
6d95c1a41e6e
child 221
e28f89b8ccdf
--- a/src/main.cpp	Tue Jun 14 17:55:50 2022 +0300
+++ b/src/main.cpp	Tue Jun 14 19:50:31 2022 +0300
@@ -13,6 +13,7 @@
 #include "document.h"
 #include "settingseditor/settingseditor.h"
 #include "widgets/colorselectdialog.h"
+#include "settings.h"
 
 static const QDir LOCALE_DIR {":/locale"};
 
@@ -54,6 +55,8 @@
 	QCoreApplication::setOrganizationDomain("hecknology.net");
 	qRegisterMetaTypeStreamOperators<Library>("Library");
 	qRegisterMetaTypeStreamOperators<Libraries>("Libraries");
+	qRegisterMetaTypeStreamOperators<gl::RenderStyle>();
+	qRegisterMetaTypeStreamOperators<QMdiArea::ViewMode>();
 }
 
 template<typename BaseType, typename MemberType, typename DataType>
@@ -251,16 +254,16 @@
 	ui->actionDrawAxes->setChecked(renderPreferences->drawAxes);
 };
 
-static gl::RenderPreferences loadRenderPreferences(Configuration* settings)
+static gl::RenderPreferences loadRenderPreferences()
 {
 	return gl::RenderPreferences{
-		.style = static_cast<gl::RenderStyle>(settings->renderStyle()),
-		.mainColor = settings->mainColor(),
-		.backgroundColor = settings->backgroundColor(),
-		.selectedColor = settings->selectedColor(),
-		.lineThickness = settings->lineThickness(),
-		.lineAntiAliasing = settings->lineAntiAliasing(),
-		.drawAxes = settings->drawAxes(),
+		.style = setting<Setting::RenderStyle>(),
+		.mainColor = setting<Setting::MainColor>(),
+		.backgroundColor = setting<Setting::BackgroundColor>(),
+		.selectedColor = setting<Setting::SelectedColor>(),
+		.lineThickness = setting<Setting::LineThickness>(),
+		.lineAntiAliasing = setting<Setting::LineAntiAliasing>(),
+		.drawAxes = setting<Setting::DrawAxes>(),
 	};
 }
 
@@ -327,9 +330,7 @@
 	DocumentManager documents;
 	QString currentLanguage = "en";
 	QTranslator translator{&mainWindow};
-	Configuration settings;
 	LibraryManager libraries{&mainWindow};
-	QByteArray documentSplitterState;
 	QStringList recentlyOpenedFiles;
 	ColorTable colorTable;
 	gl::RenderPreferences renderPreferences;
@@ -337,12 +338,12 @@
 	const uiutilities::KeySequenceMap defaultKeyboardShortcuts =
 		uiutilities::makeKeySequenceMap(uiutilities::collectActions(&mainWindow));
 	const auto saveSettings = [&]{
-		settings.setMainWindowGeometry(mainWindow.saveGeometry());
-		settings.setRecentFiles(recentlyOpenedFiles);
-		settings.setMainSplitterState(documentSplitterState);
-		settings.setRenderStyle(static_cast<int>(renderPreferences.style));
-		settings.setDrawAxes(renderPreferences.drawAxes);
-		libraries.storeToSettings(&settings);
+		setSetting<Setting::MainWindowGeometry>(mainWindow.saveGeometry());
+		setSetting<Setting::RecentFiles>(recentlyOpenedFiles);
+		setSetting<Setting::RenderStyle>(renderPreferences.style);
+		setSetting<Setting::DrawAxes>(renderPreferences.drawAxes);
+		setSetting<Setting::DrawAxes>("hello world");
+		libraries.storeToSettings();
 	};
 	const auto updateRecentlyOpenedDocumentsMenu = [&]{
 		rebuildRecentFilesMenu(ui.menuRecentFiles, recentlyOpenedFiles, &mainWindow);
@@ -370,15 +371,14 @@
 		}, action);
 	};
 	const auto restoreSettings = [&]{
-		recentlyOpenedFiles = settings.recentFiles();
-		documentSplitterState = settings.mainSplitterState();
-		renderPreferences = loadRenderPreferences(&settings);
-		changeLanguage(settings.locale(), &translator);
-		libraries.restoreFromSettings(&settings);
+		recentlyOpenedFiles = setting<Setting::RecentFiles>();
+		renderPreferences = loadRenderPreferences();
+		changeLanguage(setting<Setting::Locale>(), &translator);
+		libraries.restoreFromSettings();
 		updateRecentlyOpenedDocumentsMenu();
 		colorTable = loadColors(&libraries);
 		updateRenderPreferences(&ui, &renderPreferences, &documents);
-		ui.mdiArea->setViewMode(static_cast<QMdiArea::ViewMode>(settings.viewMode()));
+		ui.mdiArea->setViewMode(setting<Setting::ViewMode>());
 		ui.retranslateUi(&mainWindow);
 	};
 	const auto addRecentlyOpenedFile = [&](const QString& path){
@@ -407,7 +407,7 @@
 			data->tools->setGridMatrix(XZ);
 			data->model = model;
 			data->canvas->addRenderLayer(data->axesLayer.get());
-			data->canvas->setLayerEnabled(data->axesLayer.get(), settings.drawAxes());
+			data->canvas->setLayerEnabled(data->axesLayer.get(), setting<Setting::DrawAxes>());
 			data->canvas->addRenderLayer(data->gridLayer.get());
 			data->canvas->addRenderLayer(data->tools.get());
 			documents.setModelPayload(modelId, data);
@@ -476,7 +476,7 @@
 		}
 	});
 	QObject::connect(ui.actionSettingsEditor, &QAction::triggered, [&]{
-		SettingsEditor settingsEditor{&settings, defaultKeyboardShortcuts, &mainWindow};
+		SettingsEditor settingsEditor{defaultKeyboardShortcuts, &mainWindow};
 		const int result = settingsEditor.exec();
 		if (result == QDialog::Accepted)
 		{
@@ -600,7 +600,7 @@
 		}
 	});
 	mainWindow.setWindowTitle(title());
-	mainWindow.restoreGeometry(settings.mainWindowGeometry());
+	mainWindow.restoreGeometry(setting<Setting::MainWindowGeometry>());
 	restoreSettings();
 	updateRenderPreferences(&ui, &renderPreferences, &documents);
 	mainWindow.show();

mercurial