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
134
135
136
137
138
139
140
141
142
143
144
|
#ifndef CONFIGDIALOG_H
#define CONFIGDIALOG_H
#include "config_builder.h"
#include "datatype.h"
#include "common/bihash.h"
#include "guiSQLiteStudio_global.h"
#include <QDialog>
namespace Ui {
class ConfigDialog;
}
class QListWidgetItem;
class QTreeWidgetItem;
class CustomConfigWidgetPlugin;
class QSignalMapper;
class Plugin;
class PluginType;
class QComboBox;
class QToolButton;
class QTreeWidget;
class QListWidget;
class QTableWidget;
class ConfigMapper;
class MultiEditorWidgetPlugin;
class ConfigNotifiablePlugin;
class UiConfiguredPlugin;
class GUI_API_EXPORT ConfigDialog : public QDialog
{
Q_OBJECT
public:
explicit ConfigDialog(QWidget *parent = 0);
~ConfigDialog();
void configureDataEditors(const QString& dataTypeString);
static QString getFilterString(QWidget* widget);
static QString getFilterString(QComboBox* widget);
static QString getFilterString(QTreeWidget* widget);
static QString getFilterString(QListWidget* widget);
static QString getFilterString(QTableWidget* widget);
private:
void init();
void load();
void initPageMap();
void initInternalCustomConfigWidgets();
void initFormatterPlugins();
void initPlugins();
void initPluginsPage();
bool initPluginPage(Plugin* plugin, bool skipConfigLoading);
void deinitPluginPage(Plugin* pluginName);
void initDataEditors();
void initShortcuts();
void initShortcuts(CfgCategory* cfgCategory);
void initLangs();
void applyStyle(QWidget* widget, QStyle* style);
QTreeWidgetItem* getPluginsCategoryItem() const;
QTreeWidgetItem* getPluginsCategoryItem(PluginType* type) const;
QTreeWidgetItem* getPluginItem(Plugin* plugin) const;
QTreeWidgetItem* createPluginsTypeItem(const QString& widgetName, const QString& title) const;
QTreeWidgetItem* getItemByTitle(const QString& title) const;
void switchPageToPlugin(QTreeWidgetItem* item);
bool isPluginCategoryItem(QTreeWidgetItem *item) const;
void codeFormatterUnloaded();
void codeFormatterLoaded();
void updatePluginCategoriesVisibility(QTreeWidgetItem* categoryItem);
QString collectLoadedPlugins() const;
QHash<QWidget*,QTreeWidgetItem*> buildPageToCategoryItemMap() const;
QList<QTreeWidgetItem*> getAllCategoryItems() const;
QList<MultiEditorWidgetPlugin*> getDefaultEditorsForType(DataType::Enum dataType);
QList<MultiEditorWidgetPlugin*> updateCustomDataTypeEditors(const QStringList& editorsOrder);
QList<MultiEditorWidgetPlugin*> updateDefaultDataTypeEditors(DataType::Enum typeEnum);
void addDataTypeEditor(const QString& pluginName);
void addDataTypeEditor(MultiEditorWidgetPlugin* plugin);
void removeDataTypeEditor(QListWidgetItem* item, const QString& pluginName);
void removeDataTypeEditor(int idx);
void transformDataTypeEditorsToCustomList(QListWidgetItem* typeItem);
QStringList getPluginNamesFromDataTypeItem(QListWidgetItem* typeItem, bool* exists = nullptr);
void setPluginNamesForDataTypeItem(QListWidgetItem* typeItem, const QStringList& pluginNames);
void addDataType(const QString& typeStr);
void rollbackPluginConfigs();
void commitPluginConfigs();
Ui::ConfigDialog *ui = nullptr;
QStyle* previewStyle = nullptr;
QHash<QString,QWidget*> nameToPage;
BiHash<QTreeWidgetItem*,QString> itemToPluginNameMap;
QHash<PluginType*,QTreeWidgetItem*> pluginTypeToItemMap;
QHash<Plugin*,QTreeWidgetItem*> pluginToItemMap;
QHash<QString,QComboBox*> formatterLangToPluginComboMap;
QHash<QString,QToolButton*> formatterLangToConfigButtonMap;
ConfigMapper* configMapper = nullptr;
QHash<UiConfiguredPlugin*,ConfigMapper*> pluginConfigMappers;
QAction* dataEditRenameAction = nullptr;
QAction* dataEditDeleteAction = nullptr;
bool updatingDataEditorItem = false;
bool modifiedFlag = false;
QList<ConfigNotifiablePlugin*> notifiablePlugins;
bool requiresSchemasRefresh = false;
private slots:
void refreshFormattersPage();
void pageSwitched();
void updateDataTypeEditors();
void updateDataTypeListState();
void dataEditorItemEdited(QListWidgetItem* item);
void dataEditorAvailableChanged(QListWidgetItem* item);
void dataEditorTabsOrderChanged(int from, int to);
void addDataType();
void renameDataType();
void delDataType();
void dataTypesHelp();
void switchPage(QTreeWidgetItem* item);
void updateStylePreview();
void apply();
void save();
void storeSelectedFormatters();
void markModified();
void setModified(bool modified);
void updateModified();
void applyFilter(const QString& filter);
void updateActiveFormatterState();
void configureFormatter(const QString& pluginTitle);
void activeFormatterChanged();
void detailsClicked(const QString& pluginName);
void failedToLoadPlugin(const QString& pluginName);
void loadUnloadPlugin(QTreeWidgetItem* item, int column);
void pluginAboutToUnload(Plugin* plugin, PluginType* type);
void pluginLoaded(Plugin* plugin, PluginType* type, bool skipConfigLoading = false);
void pluginUnloaded(const QString& pluginName, PluginType* type);
void updatePluginCategoriesVisibility();
void updateBuiltInPluginsVisibility();
void applyShortcutsFilter(const QString& filter);
void markRequiresSchemasRefresh();
public slots:
void accept();
};
#endif // CONFIGDIALOG_H
|