diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp index 68738065fbd13db8aa02e3cd77125ccf5b3dab11..03a84f504b3d30ee115029966ef5807f4955ff67 100644 --- a/src/plugins/qtsupport/exampleslistmodel.cpp +++ b/src/plugins/qtsupport/exampleslistmodel.cpp @@ -39,6 +39,7 @@ #include <QDebug> #include <coreplugin/icore.h> +#include <coreplugin/helpmanager.h> #include <qtsupport/qtversionmanager.h> #include <algorithm> @@ -67,7 +68,9 @@ ExamplesListModel::ExamplesListModel(QObject *parent) : setRoleNames(roleNames); connect(QtVersionManager::instance(), SIGNAL(updateExamples(QString,QString,QString)), - SLOT(readNewsItems(QString,QString,QString))); + SLOT(cacheExamplesPath(QString,QString,QString))); + connect(Core::HelpManager::instance(), SIGNAL(setupFinished()), + SLOT(helpInitialized())); } QList<ExampleItem> ExamplesListModel::parseExamples(QXmlStreamReader* reader, const QString& projectsOffset) @@ -337,6 +340,20 @@ QVariant ExamplesListModel::data(const QModelIndex &index, int role) const } +void ExamplesListModel::cacheExamplesPath(const QString &examplesPath, const QString &demosPath, const QString &sourcePath) +{ + m_cache = QMakePathCache(examplesPath, demosPath, sourcePath); +} + +void ExamplesListModel::helpInitialized() +{ + disconnect(this, SLOT(cacheExamplesPath(QString, QString, QString))); + connect(QtVersionManager::instance(), SIGNAL(updateExamples(QString,QString,QString)), + SLOT(readNewsItems(QString,QString,QString))); + readNewsItems(m_cache.examplesPath, m_cache.demosPath, m_cache.examplesPath); +} + + ExamplesListModelFilter::ExamplesListModelFilter(QObject *parent) : QSortFilterProxyModel(parent), m_showTutorialsOnly(true) { diff --git a/src/plugins/qtsupport/exampleslistmodel.h b/src/plugins/qtsupport/exampleslistmodel.h index ae6ee735f7ba1bedb7dbd4d2bdac46cb6970757b..fc36970f0b0e3253431739ea66c11d97e6de68ff 100644 --- a/src/plugins/qtsupport/exampleslistmodel.h +++ b/src/plugins/qtsupport/exampleslistmodel.h @@ -60,6 +60,15 @@ struct ExampleItem { bool hasSourceCode; }; +struct QMakePathCache { + QString examplesPath; + QString demosPath; + QString sourcePath; + QMakePathCache() {} + QMakePathCache(const QString &_examplesPath, const QString &_demosPath, const QString &_sourcePath) + : examplesPath(_examplesPath), demosPath(_demosPath), sourcePath(_sourcePath) {} +}; + class ExamplesListModel : public QAbstractListModel { Q_OBJECT public: @@ -71,12 +80,15 @@ public: QStringList tags() const { return m_tags; } -public slots: - void readNewsItems(const QString &examplesPath, const QString &demosPath, const QString &sourcePath); signals: void tagsUpdated(); +public slots: + void readNewsItems(const QString &examplesPath, const QString &demosPath, const QString &sourcePath); + void cacheExamplesPath(const QString &examplesPath, const QString &demosPath, const QString &sourcePath); + void helpInitialized(); + private: QList<ExampleItem> parseExamples(QXmlStreamReader* reader, const QString& projectsOffset); QList<ExampleItem> parseDemos(QXmlStreamReader* reader, const QString& projectsOffset); @@ -85,6 +97,8 @@ private: QStringList exampleSources() const; QList<ExampleItem> exampleItems; QStringList m_tags; + QMakePathCache m_cache; + }; class ExamplesListModelFilter : public QSortFilterProxyModel { diff --git a/src/plugins/qtsupport/gettingstartedwelcomepage.h b/src/plugins/qtsupport/gettingstartedwelcomepage.h index e77fdea37847190eab19079a942a92ef1cc7233f..b67d62c5c978b32c4dfffc143dfc50cac8d58c41 100644 --- a/src/plugins/qtsupport/gettingstartedwelcomepage.h +++ b/src/plugins/qtsupport/gettingstartedwelcomepage.h @@ -68,8 +68,6 @@ signals: public slots: void openSplitHelp(const QUrl &help); void openProject(const QString& projectFile, const QStringList& additionalFilesToOpen, const QUrl& help); - -public slots: void updateTagsModel(); private: