| 1442 | } |
| 1443 | |
| 1444 | void PluginSettings::setSettings(const QString& pluginName, const QVariantMap& map) |
| 1445 | { |
| 1446 | auto iterPlugin = m_PluginSettings.find(pluginName); |
| 1447 | |
| 1448 | if (iterPlugin == m_PluginSettings.end()) { |
| 1449 | throw MyException(QObject::tr("attempt to store setting for unknown plugin \"%1\"") |
| 1450 | .arg(pluginName)); |
| 1451 | } |
| 1452 | |
| 1453 | QVariantMap oldSettings = m_PluginSettings[pluginName]; |
| 1454 | m_PluginSettings[pluginName] = map; |
| 1455 | |
| 1456 | // Emit signals for settings that have been changed or added: |
| 1457 | for (auto& k : map.keys()) { |
| 1458 | // .value() return a default-constructed QVariant if k is not in oldSettings: |
| 1459 | QVariant oldValue = oldSettings.value(k); |
| 1460 | if (oldValue != map[k]) { |
| 1461 | emit pluginSettingChanged(pluginName, k, oldSettings.value(k), map[k]); |
| 1462 | } |
| 1463 | } |
| 1464 | |
| 1465 | // Emit signals for settings that have been removed: |
| 1466 | for (auto& k : oldSettings.keys()) { |
| 1467 | if (!map.contains(k)) { |
| 1468 | emit pluginSettingChanged(pluginName, k, oldSettings[k], QVariant()); |
| 1469 | } |
| 1470 | } |
| 1471 | } |
| 1472 | |
| 1473 | QVariantMap PluginSettings::descriptions(const QString& pluginName) const |
| 1474 | { |