diff --git a/src/plugins/qtsupport/exampleslistmodel.cpp b/src/plugins/qtsupport/exampleslistmodel.cpp index 68738065fbd..03a84f504b3 100644 --- a/src/plugins/qtsupport/exampleslistmodel.cpp +++ b/src/plugins/qtsupport/exampleslistmodel.cpp @@ -39,6 +39,7 @@ #include #include +#include #include #include @@ -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 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 ae6ee735f7b..fc36970f0b0 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 parseExamples(QXmlStreamReader* reader, const QString& projectsOffset); QList parseDemos(QXmlStreamReader* reader, const QString& projectsOffset); @@ -85,6 +97,8 @@ private: QStringList exampleSources() const; QList 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 e77fdea3784..b67d62c5c97 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: