From 83ed1e3a7c37bb8616a11ea6c8ef56d8df50900e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 16 Dec 2019 14:24:15 +0100 Subject: [PATCH] Allow plugins to register additional example sets Change-Id: Icfa2a8093a5cffd86dc029fd1b06117f599203ab Reviewed-by: Alessandro Portale --- src/plugins/qtsupport/exampleslistmodel.cpp | 1 + src/plugins/qtsupport/exampleslistmodel.h | 16 +++++++++------- src/plugins/qtsupport/qtversionmanager.cpp | 18 ++++++++++++++++-- src/plugins/qtsupport/qtversionmanager.h | 5 +++++ 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp index a5bf950bf5f..96bfa90629e 100644 --- a/src/plugins/qtsupport/exampleslistmodel.cpp +++ b/src/plugins/qtsupport/exampleslistmodel.cpp @@ -107,6 +107,7 @@ ExampleSetModel::ExampleSetModel() << ", examplesPath=" << set.examplesPath; } } + m_extraExampleSets += pluginRegisteredExampleSets(); connect(QtVersionManager::instance(), &QtVersionManager::qtVersionsLoaded, this, &ExampleSetModel::qtVersionManagerLoaded); diff --git a/src/plugins/qtsupport/exampleslistmodel.h b/src/plugins/qtsupport/exampleslistmodel.h index ad86b12e665..a371e8bc0bc 100644 --- a/src/plugins/qtsupport/exampleslistmodel.h +++ b/src/plugins/qtsupport/exampleslistmodel.h @@ -45,6 +45,14 @@ class ExampleSetModel : public QStandardItemModel Q_OBJECT public: + struct ExtraExampleSet + { + QString displayName; + QString manifestPath; + QString examplesPath; + }; + static QVector pluginRegisteredExampleSets(); + ExampleSetModel(); int selectedExampleSet() const { return m_selectedExampleSetIndex; } @@ -56,11 +64,6 @@ signals: void selectedExampleSetChanged(int); private: - struct ExtraExampleSet { - QString displayName; - QString manifestPath; - QString examplesPath; - }; enum ExampleSetType { InvalidExampleSet, @@ -87,8 +90,7 @@ private: void helpManagerInitialized(); void tryToInitialize(); - QList m_extraExampleSets; - QList m_qtVersions; + QVector m_extraExampleSets; int m_selectedExampleSetIndex = -1; QSet m_selectedQtTypes; diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 82d2fb9e2d4..4616ec9e51a 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -25,10 +25,11 @@ #include "qtversionmanager.h" -#include "qtkitinformation.h" -#include "qtversionfactory.h" #include "baseqtversion.h" +#include "exampleslistmodel.h" +#include "qtkitinformation.h" #include "qtsupportconstants.h" +#include "qtversionfactory.h" #include #include @@ -77,6 +78,7 @@ static QtVersionManager *m_instance = nullptr; static FileSystemWatcher *m_configFileWatcher = nullptr; static QTimer *m_fileWatcherTimer = nullptr; static PersistentSettingsWriter *m_writer = nullptr; +static QVector m_pluginRegisteredExampleSets; static Q_LOGGING_CATEGORY(log, "qtc.qt.versions", QtWarningMsg); @@ -100,6 +102,11 @@ static bool restoreQtVersions(); static void findSystemQt(); static void saveQtVersions(); +QVector ExampleSetModel::pluginRegisteredExampleSets() +{ + return m_pluginRegisteredExampleSets; +} + // -------------------------------------------------------------------------- // QtVersionManager // -------------------------------------------------------------------------- @@ -471,6 +478,13 @@ void QtVersionManager::removeVersion(BaseQtVersion *version) delete version; } +void QtVersionManager::registerExampleSet(const QString &displayName, + const QString &manifestPath, + const QString &examplesPath) +{ + m_pluginRegisteredExampleSets.append({displayName, manifestPath, examplesPath}); +} + using Path = QString; using FileName = QString; static QList> documentationFiles(BaseQtVersion *v) diff --git a/src/plugins/qtsupport/qtversionmanager.h b/src/plugins/qtsupport/qtversionmanager.h index 7f71547b498..a5bf92d7d1d 100644 --- a/src/plugins/qtsupport/qtversionmanager.h +++ b/src/plugins/qtsupport/qtversionmanager.h @@ -63,6 +63,11 @@ public: static void addVersion(BaseQtVersion *version); static void removeVersion(BaseQtVersion *version); + // Call latest in extensionsInitialized of plugin depending on QtSupport + static void registerExampleSet(const QString &displayName, + const QString &manifestPath, + const QString &examplesPath); + signals: // content of BaseQtVersion objects with qmake path might have changed void qtVersionsChanged(const QList &addedIds, const QList &removedIds, const QList &changedIds);