From a5624a47a151ce322622b467d71c0149d409e324 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Fri, 1 Jul 2011 18:28:56 +0200 Subject: [PATCH] WelcomeScreen Delay loading of ExamplesModel. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ...until the Help system is is initialized properly. Change-Id: I70b629d246f418629623f09de0d270bf355b71de Reviewed-on: http://codereview.qt.nokia.com/1021 Reviewed-by: Qt Sanity Bot Reviewed-by: Robert Löhning --- src/plugins/qtsupport/exampleslistmodel.cpp | 19 ++++++++++++++++++- src/plugins/qtsupport/exampleslistmodel.h | 18 ++++++++++++++++-- .../qtsupport/gettingstartedwelcomepage.h | 2 -- 3 files changed, 34 insertions(+), 5 deletions(-) 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: