aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/welcome
diff options
context:
space:
mode:
authorcon <qtc-committer@nokia.com>2010-05-05 19:06:57 +0200
committercon <qtc-committer@nokia.com>2010-05-05 19:06:57 +0200
commite6497f61fd244f78fc47955b2fd9c411a7e16394 (patch)
tree3be1eb754ea8b97bb368a2e832ab53695efde62c /src/plugins/welcome
parentc459349f13ccbcd18bab603168c92bb5137fb8eb (diff)
parent10157163f4306a84482dcb27fb0b969ec6efefd4 (diff)
Merge remote branch 'origin/2.0'
Diffstat (limited to 'src/plugins/welcome')
-rw-r--r--src/plugins/welcome/communitywelcomepagewidget.cpp9
-rw-r--r--src/plugins/welcome/communitywelcomepagewidget.h7
-rw-r--r--src/plugins/welcome/rssfetcher.cpp18
-rw-r--r--src/plugins/welcome/rssfetcher.h12
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