diff --git a/src/quickaddons/managedconfigmodule.h b/src/quickaddons/managedconfigmodule.h --- a/src/quickaddons/managedconfigmodule.h +++ b/src/quickaddons/managedconfigmodule.h @@ -185,6 +185,16 @@ */ void defaults() override; +protected Q_SLOTS: + /** + * Forces the module to reevaluate the saveNeeded and + * representsDefault state. + * + * This is required for some modules which might have + * some settings managed outside of KConfigXT objects. + */ + void settingsChanged(); + private: /** * Allows to indicate if the module requires saving. @@ -205,7 +215,6 @@ virtual bool isDefaults() const; Q_PRIVATE_SLOT(d, void _k_registerSettings()) - Q_PRIVATE_SLOT(d, void _k_settingsChanged()) ManagedConfigModulePrivate *const d; friend class ManagedConfigModulePrivate; }; diff --git a/src/quickaddons/managedconfigmodule.cpp b/src/quickaddons/managedconfigmodule.cpp --- a/src/quickaddons/managedconfigmodule.cpp +++ b/src/quickaddons/managedconfigmodule.cpp @@ -36,7 +36,6 @@ } void _k_registerSettings(); - void _k_settingsChanged(); ManagedConfigModule *_q; QList _skeletons; @@ -98,12 +97,12 @@ void ManagedConfigModulePrivate::_k_registerSettings() { - auto settingsChangedSlotIndex = _q->metaObject()->indexOfMethod("_k_settingsChanged()"); + auto settingsChangedSlotIndex = _q->metaObject()->indexOfMethod("settingsChanged()"); auto settingsChangedSlot = _q->metaObject()->method(settingsChangedSlotIndex); _skeletons = _q->findChildren(); for (auto skeleton : qAsConst(_skeletons)) { - QObject::connect(skeleton, SIGNAL(configChanged()), _q, SLOT(_k_settingsChanged())); + QObject::connect(skeleton, SIGNAL(configChanged()), _q, SLOT(settingsChanged())); const auto items = skeleton->items(); for (auto item : items) { @@ -124,28 +123,28 @@ } } - _k_settingsChanged(); + _q->settingsChanged(); } -void ManagedConfigModulePrivate::_k_settingsChanged() +void ManagedConfigModule::settingsChanged() { bool needsSave = false; - bool isDefaults = true; - for (const auto skeleton : qAsConst(_skeletons)) { + bool representsDefaults = true; + for (const auto skeleton : qAsConst(d->_skeletons)) { needsSave |= skeleton->isSaveNeeded(); - isDefaults &= skeleton->isDefaults(); + representsDefaults &= skeleton->isDefaults(); } if (!needsSave) { - needsSave = _q->isSaveNeeded(); + needsSave = isSaveNeeded(); } - if (isDefaults) { - isDefaults = _q->isDefaults(); + if (representsDefaults) { + representsDefaults = isDefaults(); } - _q->setRepresentsDefaults(isDefaults); - _q->setNeedsSave(needsSave); + setRepresentsDefaults(representsDefaults); + setNeedsSave(needsSave); } }