diff options
| author | 2016-06-13 18:42:57 -0400 | |
|---|---|---|
| committer | 2016-06-13 18:42:57 -0400 | |
| commit | 65d5f68cc6dc81799c5a5d90400a2c1f0dd02547 (patch) | |
| tree | 6f245ba901b87ef42fed69965aea22f5eea6b590 /SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp | |
| parent | aeb6bad01630d325a4e768e798a7a6d44e18fdaf (diff) | |
| parent | 5d9314f134ddd3dc4c853e398ac90ba247fb2e4f (diff) | |
Merge tag 'upstream/3.1.0'
Upstream version 3.1.0
# gpg: Signature made Mon 13 Jun 2016 06:42:54 PM EDT using RSA key ID EBE9BD91
# gpg: Good signature from "Unit 193 <unit193@gmail.com>"
# gpg: aka "Unit 193 <unit193@ninthfloor.org>"
# gpg: aka "Unit 193 <unit193@ubuntu.com>"
# gpg: aka "Unit 193 <unit193@ninthfloor.com>"
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp index 627e2c1..42c7099 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp @@ -168,13 +168,7 @@ void ConfigDialog::init() ui->categoriesTree->setCurrentItem(ui->categoriesTree->topLevelItem(0));
configMapper = new ConfigMapper(CfgMain::getPersistableInstances());
- connect(configMapper, SIGNAL(modified()), this, SLOT(markModified()));
- connect(configMapper, &ConfigMapper::notifyEnabledWidgetModified, [=](QWidget* widget, CfgEntry* key, const QVariant& value)
- {
- UNUSED(widget);
- for (ConfigNotifiablePlugin* plugin : notifiablePlugins)
- plugin->configModified(key, value);
- });
+ connectMapperSignals(configMapper);
ui->categoriesFilter->setClearButtonEnabled(true);
UserInputFilter* filter = new UserInputFilter(ui->categoriesFilter, this, SLOT(applyFilter(QString)));
@@ -575,6 +569,12 @@ void ConfigDialog::commitPluginConfigs() }
}
+void ConfigDialog::connectMapperSignals(ConfigMapper* mapper)
+{
+ connect(mapper, SIGNAL(modified()), this, SLOT(markModified()));
+ connect(mapper, SIGNAL(notifyEnabledWidgetModified(QWidget*, CfgEntry*, const QVariant&)), this, SLOT(notifyPluginsAboutModification(QWidget*, CfgEntry*, const QVariant&)));
+}
+
void ConfigDialog::updateDataTypeListState()
{
bool listEditingEnabled = ui->dataEditorsTypesList->selectedItems().size() > 0 && ui->dataEditorsTypesList->currentItem()->flags().testFlag(Qt::ItemIsEditable);
@@ -952,6 +952,12 @@ void ConfigDialog::markRequiresSchemasRefresh() requiresSchemasRefresh = true;
}
+void ConfigDialog::notifyPluginsAboutModification(QWidget*, CfgEntry* key, const QVariant& value)
+{
+ for (ConfigNotifiablePlugin* plugin : notifiablePlugins)
+ plugin->configModified(key, value);
+}
+
void ConfigDialog::updatePluginCategoriesVisibility(QTreeWidgetItem* categoryItem)
{
categoryItem->setHidden(categoryItem->childCount() == 0);
@@ -1325,7 +1331,12 @@ bool ConfigDialog::initPluginPage(Plugin* plugin, bool skipConfigLoading) {
pluginConfigMappers[cfgPlugin] = new ConfigMapper(mainConfig);
pluginConfigMappers[cfgPlugin]->bindToConfig(widget);
+ connectMapperSignals(pluginConfigMappers[cfgPlugin]);
mainConfig->begin();
+
+ // Remove this config from global mapper (if present there), so it's handled per plugin mapper
+ configMapper->removeMainCfgEntry(mainConfig);
+ configMapper->ignoreWidget(widget);
}
else if (!skipConfigLoading)
{
@@ -1342,7 +1353,7 @@ void ConfigDialog::deinitPluginPage(Plugin* plugin) if (!nameToPage.contains(pluginName))
return;
- if (!dynamic_cast<UiConfiguredPlugin*>(plugin))
+ if (dynamic_cast<UiConfiguredPlugin*>(plugin))
{
UiConfiguredPlugin* cfgPlugin = dynamic_cast<UiConfiguredPlugin*>(plugin);
CfgMain* mainCfg = cfgPlugin->getMainUiConfig();
@@ -1360,6 +1371,7 @@ void ConfigDialog::deinitPluginPage(Plugin* plugin) QWidget* widget = nameToPage[pluginName];
nameToPage.remove(pluginName);
+ configMapper->removeIgnoredWidget(widget);
ui->stackedWidget->removeWidget(widget);
delete widget;
}
|
