diff --git a/src/kcmoduleproxy.h b/src/kcmoduleproxy.h --- a/src/kcmoduleproxy.h +++ b/src/kcmoduleproxy.h @@ -144,6 +144,13 @@ */ bool changed() const; + /** + * @return true if the module is matching default settings + * + * @since 5.65 + */ + bool defaulted() const; + /** * Access to the actual module. * It may return NULL if anything goes wrong. @@ -224,6 +231,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _k_moduleChanged(bool)) + Q_PRIVATE_SLOT(d_func(), void _k_moduleDefaulted(bool)) Q_PRIVATE_SLOT(d_func(), void _k_moduleDestroyed()) Q_PRIVATE_SLOT(d_func(), void _k_ownerChanged(const QString &service, const QString &oldOwner, const QString &newOwner)) }; diff --git a/src/kcmoduleproxy.cpp b/src/kcmoduleproxy.cpp --- a/src/kcmoduleproxy.cpp +++ b/src/kcmoduleproxy.cpp @@ -94,6 +94,7 @@ kcm = KCModuleLoader::loadModule(modInfo, KCModuleLoader::Inline, parent, args); QObject::connect(kcm, SIGNAL(changed(bool)), parent, SLOT(_k_moduleChanged(bool))); + QObject::connect(kcm, SIGNAL(defaulted(bool)), parent, SLOT(_k_moduleDefaulted(bool))); QObject::connect(kcm, SIGNAL(destroyed()), parent, SLOT(_k_moduleDestroyed())); QObject::connect(kcm, &KCModule::quickHelpChanged, parent, &KCModuleProxy::quickHelpChanged); parent->setWhatsThis(kcm->quickHelp()); @@ -184,6 +185,18 @@ emit q->changed(q); } +void KCModuleProxyPrivate::_k_moduleDefaulted(bool d) +{ + if (defaulted == d) { + return; + } + + Q_Q(KCModuleProxy); + defaulted = d; + emit q->changed(changed); + emit q->changed(q); +} + void KCModuleProxyPrivate::_k_moduleDestroyed() { kcm = nullptr; @@ -260,6 +273,12 @@ return d->changed; } +bool KCModuleProxy::defaulted() const +{ + Q_D(const KCModuleProxy); + return d->defaulted; +} + KCModuleInfo KCModuleProxy::moduleInfo() const { Q_D(const KCModuleProxy); diff --git a/src/kcmoduleproxy_p.h b/src/kcmoduleproxy_p.h --- a/src/kcmoduleproxy_p.h +++ b/src/kcmoduleproxy_p.h @@ -31,7 +31,7 @@ protected: KCModuleProxyPrivate(KCModuleProxy *_parent, const KCModuleInfo &info, const QStringList &_args) : args(_args), kcm(nullptr), topLayout(nullptr), rootInfo(nullptr), modInfo(info), - changed(false), bogusOccupier(false), parent(_parent) + changed(false), defaulted(false), bogusOccupier(false), parent(_parent) { } @@ -48,6 +48,11 @@ */ void _k_moduleChanged(bool); + /** + * Makes sure the proper variables is set and signals are emitted. + */ + void _k_moduleDefaulted(bool); + /** * Zeroes d->kcm */ @@ -68,6 +73,7 @@ QString dbusPath; KCModuleInfo modInfo; bool changed = false; + bool defaulted = false; bool bogusOccupier = false; KCModuleProxy *parent = nullptr; KCModuleProxy *q_ptr = nullptr;