aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2016-06-13 18:42:57 -0400
committerLibravatarUnit 193 <unit193@ubuntu.com>2016-06-13 18:42:57 -0400
commit65d5f68cc6dc81799c5a5d90400a2c1f0dd02547 (patch)
tree6f245ba901b87ef42fed69965aea22f5eea6b590 /SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp
parentaeb6bad01630d325a4e768e798a7a6d44e18fdaf (diff)
parent5d9314f134ddd3dc4c853e398ac90ba247fb2e4f (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.cpp28
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;
}