Maki
Formally verfied low-code orchestration
Loading...
Searching...
No Matches
settings_dialog.h
1#pragma once
2
3#include <memory>
4#include <oclero/qlementine.hpp>
5
6#include "base_dialog.h"
7#include "language_manager.h"
8#include "result.h"
9#include "settings_manager.h"
10#include "theme_editor.h"
11#include "widgets/theme_editor.h"
12#include "widgets/widget_factory.h"
13
14class QSpinBox;
15class QCheckBox;
16class QComboBox;
17class QStackedWidget;
18class QTreeWidget;
19class QLineEdit;
20class QToolButton;
21class QVBoxLayout;
22
23namespace maki
24{
25class IntegerWidget;
26class BooleanWidget;
27class SpinWidget;
28class SelectorWidget;
29class StringWidget;
30class ButtonWidget;
31class GridGroup;
32} // namespace maki
33
38{
39 Q_OBJECT
40public:
48 SettingsDialog(const QString& title, std::shared_ptr<SettingsManager> manager, std::shared_ptr<LanguageManager> languageManager, QWidget* parent = nullptr);
49
50private slots:
54 void apply();
55
56private:
58 {
59 QTreeWidgetItem* selector;
60 QWidget* page;
61 };
62
63 // ------------------------------------------
64 // Layouting
65 QStackedWidget* mPages = nullptr;
66 QTreeWidget* mPageSelector = nullptr;
67
68 // ------------------------------------------
69 // Actual settings
70 std::shared_ptr<SettingsManager> mSettingsManager = nullptr;
71 std::shared_ptr<LanguageManager> mLanguageManager = nullptr;
72
73 // General
83
84 // Appearance
96
97 // Generation
98 maki::StringWidget* mGenerationDirEdit = nullptr;
100
101 // Plugins
105
106 oclero::qlementine::Theme mTheme;
107
108 // ------------------------------------------
109 // Methods
110 void saveToSettings();
111
120 SelectorPage addPage(const QString& pageName, const QString& iconName, std::function<void()> resetCallback, QTreeWidgetItem* parent = nullptr);
121
122 VoidResult createGeneralPage();
123 VoidResult createAppearancePage();
124 VoidResult createGenerationPage();
125 VoidResult createPluginPages();
126
127 void updatePluginSetting(const QString& pluginId, const QString& key, QVariant value);
128};
BaseDialog(const QString &title, double ratio, double screenFraction, QWidget *parent=nullptr)
Constructs a new BaseDialog instance.
Definition base_dialog.cpp:19
std::shared_ptr< LanguageManager > mLanguageManager
Shared pointer to the SettingsManager.
Definition settings_dialog.h:71
void updatePluginSetting(const QString &pluginId, const QString &key, QVariant value)
Creates the plugin settings pages.
Definition settings_dialog.cpp:609
QTreeWidget * mPageSelector
Pointer to the stacked widget for managing pages.
Definition settings_dialog.h:66
maki::StringWidget * mUserThemeName
Group widget for color settings.
Definition settings_dialog.h:93
VoidResult createGenerationPage()
Creates the appearance settings page.
Definition settings_dialog.cpp:361
maki::SpinWidget * mAutosaveMinutes
Widget for enabling/disabling autosave.
Definition settings_dialog.h:76
std::shared_ptr< SettingsManager > mSettingsManager
Pointer to the tree widget for selecting pages.
Definition settings_dialog.h:70
maki::SelectorWidget * mTransitionShape
Widget for entering user theme name.
Definition settings_dialog.h:94
maki::SpinWidget * mNodeCornerRadius
Widget for enabling/disabling log table filters on start up.
Definition settings_dialog.h:90
maki::BooleanWidget * mNativeMenuBar
Widget for setting UI scale.
Definition settings_dialog.h:87
oclero::qlementine::Theme mTheme
Widget for editing the default plugin.
Definition settings_dialog.h:106
maki::BooleanWidget * mRestoreLastSession
Shared pointer to the LanguageManager.
Definition settings_dialog.h:74
maki::SpinWidget * mNumberOfColumns
Widget for setting node corner radius.
Definition settings_dialog.h:91
maki::BooleanWidget * mShowGrid
Widget for enabling/disabling native menu bar.
Definition settings_dialog.h:88
oclero::qlementine::ThemeEditorWidget * mThemeEditor
Widget for selecting the transition shape.
Definition settings_dialog.h:95
maki::GridGroup * mColorGrid
Widget for setting the palette number of columns.
Definition settings_dialog.h:92
maki::BooleanWidget * mMergeLogs
Widget for editing the default plugin.
Definition settings_dialog.h:104
maki::SelectorWidget * mDefaultPlugin
Vector of plugin settings.
Definition settings_dialog.h:103
VoidResult createAppearancePage()
Creates the general settings page.
Definition settings_dialog.cpp:235
maki::BooleanWidget * mShowWelcomeMessage
Widget for setting the log history size.
Definition settings_dialog.h:81
VoidResult createPluginPages()
Creates the generation settings page.
Definition settings_dialog.cpp:399
maki::SpinWidget * mUiScale
Widget for selecting theme.
Definition settings_dialog.h:86
maki::SelectorWidget * mLanguageCombo
Widget for enabling/disabling welcome message.
Definition settings_dialog.h:82
maki::BooleanWidget * mEnableDebugLogs
Widget for enabling/disabling confirmation on close.
Definition settings_dialog.h:78
maki::IntegerWidget * mRecentHistorySize
Widget for enabling debug logs.
Definition settings_dialog.h:79
void apply()
Definition settings_dialog.cpp:604
maki::BooleanWidget * mStartLogTableFilters
Widget for enabling/disabling grid display.
Definition settings_dialog.h:89
void saveToSettings()
Current theme.
Definition settings_dialog.cpp:565
SelectorPage addPage(const QString &pageName, const QString &iconName, std::function< void()> resetCallback, QTreeWidgetItem *parent=nullptr)
Saves the current settings to the manager.
Definition settings_dialog.cpp:92
maki::BooleanWidget * mConfirmOnClose
Widget for setting autosave interval in minutes.
Definition settings_dialog.h:77
PluginSettings mPluginSettings
Button widget for browsing generation directory.
Definition settings_dialog.h:102
maki::ButtonWidget * mGenerationBrowseBtn
Widget for editing generation directory.
Definition settings_dialog.h:99
maki::IntegerWidget * mLogHistorySize
Widget for setting recent history size.
Definition settings_dialog.h:80
SettingsDialog(const QString &title, std::shared_ptr< SettingsManager > manager, std::shared_ptr< LanguageManager > languageManager, QWidget *parent=nullptr)
Definition settings_dialog.cpp:37
maki::SelectorWidget * mThemeCombo
Widget for selecting language.
Definition settings_dialog.h:85
maki::BooleanWidget * mAutosaveEnabled
Widget for enabling/disabling restoring last session.
Definition settings_dialog.h:75
A widget for displaying and editing boolean values.
Definition widget_factory.h:265
A widget wrapping a push button with optional description and icon support.
Definition widget_factory.h:501
A labelled container widget that arranges child widgets and layouts in a grid.
Definition widget_factory.h:103
A widget for displaying and editing integer values.
Definition widget_factory.h:329
A widget for selecting one value from a list of options.
Definition widget_factory.h:451
A widget for displaying and editing integer values using a spin box.
Definition widget_factory.h:414
A widget for displaying and editing string values.
Definition widget_factory.h:295
A widget for editing themes.
Definition theme_editor.h:16
Contains UI helper widgets and layout grouping utilities used by MAKI.
Definition generator.h:10
Holds information about a plugin.
Definition settings_manager.h:109
Definition settings_dialog.h:58