summaryrefslogtreecommitdiffstats
path: root/src/interfaceframework/qifconfiguration.cpp
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2024-05-14 11:40:43 +0200
committerDominik Holland <dominik.holland@qt.io>2024-05-22 15:30:41 +0200
commit08a72e2f653df9840a4d664afb8cac623296cb94 (patch)
tree43cde8bb9d2ecc74415eca0d1110ef1a971c5880 /src/interfaceframework/qifconfiguration.cpp
parent2c134de7c2f8761d2d6cd74b4fe11fd1ff650545 (diff)
QIfConfiguration: Add a function to trigger the auto discovery
We already allow to change the discovery mode, preferredBackends and the ServiceObject itself. Allowing to start the auto discovery as well makes it possible to control the complete backend selection of multiple features using the QIfConfiguration. Change-Id: Iffc475b6bfcd1e027d4a744d94ce6137165924e1 Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Diffstat (limited to 'src/interfaceframework/qifconfiguration.cpp')
-rw-r--r--src/interfaceframework/qifconfiguration.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/interfaceframework/qifconfiguration.cpp b/src/interfaceframework/qifconfiguration.cpp
index 18e064e9..c99b54f7 100644
--- a/src/interfaceframework/qifconfiguration.cpp
+++ b/src/interfaceframework/qifconfiguration.cpp
@@ -328,6 +328,19 @@ bool QIfConfigurationManager::setServiceObject(QIfSettingsObject *so, QIfService
return true;
}
+bool QIfConfigurationManager::startAutoDiscovery(QIfSettingsObject *so)
+{
+ Q_ASSERT(so);
+ for (auto &feature : std::as_const(so->features)) {
+ if (!feature)
+ continue;
+ qCDebug(qLcIfConfig) << "Starting auto discovery of " << feature;
+ feature->startAutoDiscovery();
+ }
+
+ return true;
+}
+
void QIfConfigurationManager::parseEnv(const QByteArray &rulesSrc, const std::function<void(const QString &, const QString &)> &func)
{
const QString content = QString::fromLocal8Bit(rulesSrc);
@@ -1069,6 +1082,25 @@ bool QIfConfiguration::setServiceObject(QIfServiceObject *serviceObject)
return false;
}
+/*!
+ Starts the auto discovery of all QIfAbstractFeature or QIfAbstractFeatureListModel instances
+ of this configuration.
+
+ Returns \c false if starting the auto discovery failed because an override was active, returns
+ \c true otherwise.
+
+ \since 6.8
+ \sa {QIfAbstractFeature::startAutoDiscovery()} {Environment Overrides}
+*/
+bool QIfConfiguration::startAutoDiscovery()
+{
+ Q_D(QIfConfiguration);
+
+ Q_CHECK_SETTINGSOBJECT(false);
+
+ return QIfConfigurationManager::instance()->startAutoDiscovery(d->m_settingsObject);
+}
+
void QIfConfiguration::classBegin()
{
Q_D(QIfConfiguration);
@@ -1370,6 +1402,22 @@ bool QIfConfiguration::isServiceObjectSet(const QString &group)
return so ? so->serviceObjectSet : false;
}
+/*!
+ Starts the auto discovery of all QIfAbstractFeature or QIfAbstractFeatureListModel instances
+ in the configuration \a group.
+
+ Returns \c false if starting the auto discovery failed because an override was active, returns
+ \c true otherwise.
+
+ \since 6.8
+ \sa {QIfAbstractFeature::startAutoDiscovery()} {Environment Overrides}
+*/
+bool QIfConfiguration::startAutoDiscovery(const QString &group)
+{
+ QIfSettingsObject *so = QIfConfigurationManager::instance()->settingsObject(group, true);
+ return QIfConfigurationManager::instance()->startAutoDiscovery(so);
+}
+
QT_END_NAMESPACE