1 #ifndef QCHDMANSETTINGS_H
2 #define QCHDMANSETTINGS_H
3 
4 #include <QApplication>
5 #include <QSettings>
6 #include <QMdiArea>
7 #include <QStyle>
8 #include <QSize>
9 #include <QFont>
10 #include <QLocale>
11 
12 #include "macros.h"
13 #include "../../settings.h"
14 
15 class QtChdmanGuiSettings : public Settings
16 {
17 	Q_OBJECT
18 
19 public:
20 	QMap<QString, QLocale::Language> languageMap;
21 
QtChdmanGuiSettings()22 	QtChdmanGuiSettings() : Settings(QSettings::IniFormat, QSettings::UserScope, QCHDMAN_APP_NAME)
23 	{
24 		languageMap["de"] = QLocale::German;
25 		languageMap["es"] = QLocale::Spanish;
26 		languageMap["fr"] = QLocale::French;
27 		languageMap["el"] = QLocale::Greek;
28 		languageMap["it"] = QLocale::Italian;
29 		languageMap["pl"] = QLocale::Polish;
30 		languageMap["pt"] = QLocale::Portuguese;
31 		languageMap["ro"] = QLocale::Romanian;
32 		languageMap["sv"] = QLocale::Swedish;
33 		languageMap["us"] = QLocale::English;
34 	}
35 
~QtChdmanGuiSettings()36 	~QtChdmanGuiSettings()
37 	{
38 		sync();
39 	}
40 
languageToString(QLocale::Language lang)41 	QString languageToString(QLocale::Language lang)
42 	{
43 		QString langStr = languageMap.key(lang);
44 		if ( !langStr.isEmpty() )
45 			return langStr;
46 		else
47 			return "us";
48 	}
49 
languageFromString(QString lang)50 	QLocale::Language languageFromString(QString lang)
51 	{
52 		if ( languageMap.contains(lang) )
53 			return languageMap[lang];
54 		else
55 			return QLocale::English;
56 	}
57 
58 public slots:
59 	// General
setApplicationVersion(QString version)60 	void setApplicationVersion(QString version) { setValue("Version", version); }
applicationVersion()61 	QString applicationVersion() { return value("Version", QCHDMAN_APP_VERSION).toString(); }
62 
63 	// Preferences
setPreferencesGuiStyle(QString style)64 	void setPreferencesGuiStyle(QString style) { setValue("Preferences/GuiStyle", style); }
preferencesGuiStyle()65 	QString preferencesGuiStyle() { return value("Preferences/GuiStyle", qApp->style()->objectName()).toString(); }
setPreferencesAppFont(QString font)66 	void setPreferencesAppFont(QString font) { setValue("Preferences/AppFont", font); }
preferencesAppFont()67 	QString preferencesAppFont() { return value("Preferences/AppFont", qApp->font().toString()).toString(); }
setPreferencesAppFontSize(int size)68 	void setPreferencesAppFontSize(int size) { setValue("Preferences/AppFontSize", size); }
preferencesAppFontSize()69 	int preferencesAppFontSize() { return value("Preferences/AppFontSize", qApp->font().pointSize()).toInt(); }
setPreferencesLogFont(QString font)70 	void setPreferencesLogFont(QString font) { setValue("Preferences/LogFont", font); }
preferencesLogFont()71 	QString preferencesLogFont() { return value("Preferences/LogFont", qApp->font().toString()).toString(); }
setPreferencesLogFontSize(int size)72 	void setPreferencesLogFontSize(int size) { setValue("Preferences/LogFontSize", size); }
preferencesLogFontSize()73 	int preferencesLogFontSize() { return value("Preferences/LogFontSize", qApp->font().pointSize()).toInt(); }
setPreferencesEditorFont(QString font)74 	void setPreferencesEditorFont(QString font) { setValue("Preferences/EditorFont", font); }
preferencesEditorFont()75 	QString preferencesEditorFont() { return value("Preferences/EditorFont", qApp->font().toString()).toString(); }
setPreferencesEditorFontSize(int size)76 	void setPreferencesEditorFontSize(int size) { setValue("Preferences/EditorFontSize", size); }
preferencesEditorFontSize()77 	int preferencesEditorFontSize() { return value("Preferences/EditorFontSize", qApp->font().pointSize()).toInt(); }
setPreferencesChdmanBinary(QString path)78 	void setPreferencesChdmanBinary(QString path) { setValue("Preferences/ChdmanBinary", path); }
preferencesChdmanBinary()79 	QString preferencesChdmanBinary() { return value("Preferences/ChdmanBinary", QString()).toString(); }
setPreferencesPreferredCHDInputPath(QString path)80 	void setPreferencesPreferredCHDInputPath(QString path) { setValue("Preferences/PreferredCHDInputPath", path); }
preferencesPreferredCHDInputPath()81 	QString preferencesPreferredCHDInputPath() { return value("Preferences/PreferredCHDInputPath", QString()).toString(); }
setPreferencesPreferredCHDOutputPath(QString path)82 	void setPreferencesPreferredCHDOutputPath(QString path) { setValue("Preferences/PreferredCHDOutputPath", path); }
preferencesPreferredCHDOutputPath()83 	QString preferencesPreferredCHDOutputPath() { return value("Preferences/PreferredCHDOutputPath", QString()).toString(); }
setPreferencesPreferredInputPath(QString path)84 	void setPreferencesPreferredInputPath(QString path) { setValue("Preferences/PreferredInputPath", path); }
preferencesPreferredInputPath()85 	QString preferencesPreferredInputPath() { return value("Preferences/PreferredInputPath", QString()).toString(); }
setPreferencesPreferredOutputPath(QString path)86 	void setPreferencesPreferredOutputPath(QString path) { setValue("Preferences/PreferredOutputPath", path); }
preferencesPreferredOutputPath()87 	QString preferencesPreferredOutputPath() { return value("Preferences/PreferredOutputPath", QString()).toString(); }
setPreferencesShowHelpTexts(bool enable)88 	void setPreferencesShowHelpTexts(bool enable) { setValue("Preferences/ShowHelpTexts", enable); }
preferencesShowHelpTexts()89 	bool preferencesShowHelpTexts() { return value("Preferences/ShowHelpTexts", false).toBool(); }
setPreferencesMaximizeWindows(bool enable)90 	void setPreferencesMaximizeWindows(bool enable) { setValue("Preferences/MaximizeWindows", enable); }
preferencesMaximizeWindows()91 	bool preferencesMaximizeWindows() { return value("Preferences/MaximizeWindows", false).toBool(); }
setPreferencesLanguage(QString lang)92 	void setPreferencesLanguage(QString lang) { setValue("Preferences/Language", lang); }
preferencesLanguage()93 	QString preferencesLanguage() { return value("Preferences/Language", languageToString(QLocale::system().language())).toString(); }
setPreferencesNativeFileDialogs(bool enable)94 	void setPreferencesNativeFileDialogs(bool enable) { setValue("Preferences/NativeFileDialogs", enable); }
95 #if defined(QCHDMAN_OS_MAC)
preferencesNativeFileDialogs()96 	bool preferencesNativeFileDialogs() { return value("Preferences/NativeFileDialogs", true).toBool(); }
97 #else
preferencesNativeFileDialogs()98 	bool preferencesNativeFileDialogs() { return value("Preferences/NativeFileDialogs", false).toBool(); }
99 #endif
setPreferencesLogChannelNames(bool enable)100 	void setPreferencesLogChannelNames(bool enable) { setValue("Preferences/LogChannelNames", enable); }
preferencesLogChannelNames()101 	bool preferencesLogChannelNames() { return value("Preferences/LogChannelNames", true).toBool(); }
102 
103 	// MainWindow
setMainWindowState(QByteArray state)104 	void setMainWindowState(QByteArray state) { setValue("MainWindow/State", state); }
mainWindowState()105 	QByteArray mainWindowState() { return value("MainWindow/State", QByteArray()).toByteArray(); }
setMainWindowGeometry(QByteArray geom)106 	void setMainWindowGeometry(QByteArray geom) { setValue("MainWindow/Geometry", geom); }
mainWindowGeometry()107 	QByteArray mainWindowGeometry() { return value("MainWindow/Geometry", QByteArray()).toByteArray(); }
setMainWindowViewMode(int mode)108 	void setMainWindowViewMode(int mode) { setValue("MainWindow/ViewMode", mode); }
mainWindowViewMode()109 	int mainWindowViewMode() { return value("MainWindow/ViewMode", QCHDMAN_VIEWMODE_WINDOWED).toInt(); }
setMainWindowRecentFiles(QStringList recentFiles)110 	void setMainWindowRecentFiles(QStringList recentFiles) { setValue("MainWindow/RecentFiles", recentFiles); }
mainWindowRecentFiles()111 	QStringList mainWindowRecentFiles() { return value("MainWindow/RecentFiles", QStringList()).toStringList(); }
setMainWindowRecentScripts(QStringList recentScripts)112 	void setMainWindowRecentScripts(QStringList recentScripts) { setValue("MainWindow/RecentScripts", recentScripts); }
mainWindowRecentScripts()113 	QStringList mainWindowRecentScripts() { return value("MainWindow/RecentScripts", QStringList()).toStringList(); }
114 
115 	// ScriptWidget
setScriptWidgetProjectMonitorHeaderState(QByteArray state)116 	void setScriptWidgetProjectMonitorHeaderState(QByteArray state) { setValue("ScriptWidget/ProjectMonitorHeaderState", state); }
scriptWidgetProjectMonitorHeaderState()117 	QByteArray scriptWidgetProjectMonitorHeaderState() { return value("ScriptWidget/ProjectMonitorHeaderState", QByteArray()).toByteArray(); }
setScriptWidgetSplitterState(QByteArray state)118 	void setScriptWidgetSplitterState(QByteArray state) { setValue("ScriptWidget/SplitterState", state); }
scriptWidgetSplitterState()119 	QByteArray scriptWidgetSplitterState() { return value("ScriptWidget/SplitterState", QByteArray()).toByteArray(); }
setScriptWidgetTabIndex(int index)120 	void setScriptWidgetTabIndex(int index) { setValue("ScriptWidget/TabIndex", index); }
scriptWidgetTabIndex()121 	int scriptWidgetTabIndex() { return value("ScriptWidget/TabIndex", 0).toInt(); }
setScriptWidgetLogLimit(int limit)122 	void setScriptWidgetLogLimit(int limit) { setValue("ScriptWidget/LogLimit", limit); }
scriptWidgetLogLimit()123 	int scriptWidgetLogLimit() { return value("ScriptWidget/LogLimit", 1000).toInt(); }
124 };
125 
126 #endif // SETTINGS_H
127