diff options
author | con <qtc-committer@nokia.com> | 2010-05-05 19:06:57 +0200 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2010-05-05 19:06:57 +0200 |
commit | e6497f61fd244f78fc47955b2fd9c411a7e16394 (patch) | |
tree | 3be1eb754ea8b97bb368a2e832ab53695efde62c /src/plugins/welcome | |
parent | c459349f13ccbcd18bab603168c92bb5137fb8eb (diff) | |
parent | 10157163f4306a84482dcb27fb0b969ec6efefd4 (diff) |
Merge remote branch 'origin/2.0'
Diffstat (limited to 'src/plugins/welcome')
-rw-r--r-- | src/plugins/welcome/communitywelcomepagewidget.cpp | 9 | ||||
-rw-r--r-- | src/plugins/welcome/communitywelcomepagewidget.h | 7 | ||||
-rw-r--r-- | src/plugins/welcome/rssfetcher.cpp | 18 | ||||
-rw-r--r-- | src/plugins/welcome/rssfetcher.h | 12 |
4 files changed, 33 insertions, 13 deletions
diff --git a/src/plugins/welcome/communitywelcomepagewidget.cpp b/src/plugins/welcome/communitywelcomepagewidget.cpp index d9043daf83..e489761824 100644 --- a/src/plugins/welcome/communitywelcomepagewidget.cpp +++ b/src/plugins/welcome/communitywelcomepagewidget.cpp @@ -90,9 +90,12 @@ CommunityWelcomePageWidget::CommunityWelcomePageWidget(QWidget *parent) : connect(ui->supportSitesTreeWidget, SIGNAL(activated(QString)), SLOT(slotUrlClicked(QString))); connect(m_rssFetcher, SIGNAL(newsItemReady(QString, QString, QString)), - ui->newsTreeWidget, SLOT(addNewsItem(QString, QString, QString))); + ui->newsTreeWidget, SLOT(addNewsItem(QString, QString, QString)), Qt::QueuedConnection); + connect(this, SIGNAL(startRssFetching(QUrl)), m_rssFetcher, SLOT(fetch(QUrl)), Qt::QueuedConnection); + //: Add localized feed here only if one exists - m_rssFetcher->fetch(QUrl(tr("http://labs.trolltech.com/blogs/feed"))); + m_rssFetcher->start(QThread::LowestPriority); + emit startRssFetching(QUrl(tr("http://labs.trolltech.com/blogs/feed"))); populateWelcomeTreeWidget(supportSites, sizeof(supportSites)/sizeof(Site), ui->supportSitesTreeWidget); populateWelcomeTreeWidget(sites, sizeof(sites)/sizeof(Site), ui->miscSitesTreeWidget); @@ -100,6 +103,8 @@ CommunityWelcomePageWidget::CommunityWelcomePageWidget(QWidget *parent) : CommunityWelcomePageWidget::~CommunityWelcomePageWidget() { + m_rssFetcher->exit(); + m_rssFetcher->wait(); delete m_rssFetcher; delete ui; } diff --git a/src/plugins/welcome/communitywelcomepagewidget.h b/src/plugins/welcome/communitywelcomepagewidget.h index 228ff5ccc2..3bfb9d72be 100644 --- a/src/plugins/welcome/communitywelcomepagewidget.h +++ b/src/plugins/welcome/communitywelcomepagewidget.h @@ -32,6 +32,10 @@ #include <QtGui/QWidget> +QT_BEGIN_NAMESPACE +class QUrl; +QT_END_NAMESPACE + namespace Welcome { namespace Internal { @@ -49,6 +53,9 @@ public: explicit CommunityWelcomePageWidget(QWidget *parent = 0); ~CommunityWelcomePageWidget(); +signals: + void startRssFetching(const QUrl& url); + private slots: void slotUrlClicked(const QString &data); diff --git a/src/plugins/welcome/rssfetcher.cpp b/src/plugins/welcome/rssfetcher.cpp index ecd1140910..7b272e35f3 100644 --- a/src/plugins/welcome/rssfetcher.cpp +++ b/src/plugins/welcome/rssfetcher.cpp @@ -33,6 +33,7 @@ #include <QtCore/QDebug> #include <QtCore/QSysInfo> #include <QtCore/QLocale> +#include <QtCore/QEventLoop> #include <QtGui/QDesktopServices> #include <QtGui/QLineEdit> #include <QtNetwork/QNetworkReply> @@ -113,15 +114,22 @@ static const QString getOsString() return osString; } -RSSFetcher::RSSFetcher(int maxItems, QObject *parent) - : QObject(parent), m_maxItems(maxItems), m_items(0) +RSSFetcher::RSSFetcher(int maxItems) + : QThread(0), m_maxItems(maxItems), m_items(0), m_networkAccessManager(0) { + moveToThread(this); } RSSFetcher::~RSSFetcher() { } +void RSSFetcher::run() +{ + exec(); + delete m_networkAccessManager; +} + void RSSFetcher::fetch(const QUrl &url) { QString agentStr = QString::fromLatin1("Qt-Creator/%1 (QHttp %2; %3; %4; %5 bit)") @@ -130,9 +138,9 @@ void RSSFetcher::fetch(const QUrl &url) .arg(QSysInfo::WordSize); QNetworkRequest req(url); req.setRawHeader("User-Agent", agentStr.toLatin1()); - if (m_networkAccessManager.isNull()) { - m_networkAccessManager.reset(new QNetworkAccessManager); - connect(m_networkAccessManager.data(), SIGNAL(finished(QNetworkReply*)), + if (!m_networkAccessManager) { + m_networkAccessManager = new QNetworkAccessManager; + connect(m_networkAccessManager, SIGNAL(finished(QNetworkReply*)), SLOT(fetchingFinished(QNetworkReply*))); } m_networkAccessManager->get(req); diff --git a/src/plugins/welcome/rssfetcher.h b/src/plugins/welcome/rssfetcher.h index db1fba88b6..09c9db848e 100644 --- a/src/plugins/welcome/rssfetcher.h +++ b/src/plugins/welcome/rssfetcher.h @@ -30,8 +30,7 @@ #ifndef RSSFETCHER_H #define RSSFETCHER_H -#include <QtCore/QScopedPointer> -#include <QtCore/QObject> +#include <QtCore/QThread> QT_BEGIN_NAMESPACE class QNetworkReply; @@ -43,11 +42,12 @@ QT_END_NAMESPACE namespace Welcome { namespace Internal { -class RSSFetcher : public QObject +class RSSFetcher : public QThread { Q_OBJECT public: - explicit RSSFetcher(int maxItems, QObject *parent = 0); + explicit RSSFetcher(int maxItems); + virtual void run(); virtual ~RSSFetcher(); signals: @@ -64,9 +64,9 @@ private: void parseXml(QIODevice *); const int m_maxItems; - - QScopedPointer<QNetworkAccessManager> m_networkAccessManager; int m_items; + + QNetworkAccessManager* m_networkAccessManager; }; } // namespace Welcome |