summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-10-19 14:00:28 +0100
committerQt by Nokia <qt-info@nokia.com>2011-10-20 23:56:52 +0200
commit296bc328412f0cfec2318d04abd4717a4c70461c (patch)
tree0841342d9659c095dc38f379f54d14a94c90226b
parent4aa41982401213c67f8e4dbd6712b732fd5aa663 (diff)
Fix FTP example to handle failure to open network session
The example code only dealt with successful opening of the session. If the session open failed, the application is stuck because the connect button is disabled. Moved the session open to be part of connection. Handled session open failure by puttin the UI back in the default state where connection button is enabled. Task-Number: QTBUG-9909 Reviewed-By: Miikka Heikkinen (cherry picked from commit 104c22a68c422152ff3cf03eb3615e7826fefbd0) Change-Id: Ifa40fcd8b83c43cda364b3ec5e58f80b539aa244 Reviewed-by: Peter Hartmann <peter.hartmann@nokia.com>
-rw-r--r--examples/network/qftp/ftpwindow.cpp56
-rw-r--r--examples/network/qftp/ftpwindow.h3
2 files changed, 35 insertions, 24 deletions
diff --git a/examples/network/qftp/ftpwindow.cpp b/examples/network/qftp/ftpwindow.cpp
index b0d2e5d9d8..ba568d6ec0 100644
--- a/examples/network/qftp/ftpwindow.cpp
+++ b/examples/network/qftp/ftpwindow.cpp
@@ -99,29 +99,6 @@ FtpWindow::FtpWindow(QWidget *parent)
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
- QNetworkConfigurationManager manager;
- if (manager.capabilities() & QNetworkConfigurationManager::NetworkSessionRequired) {
- // Get saved network configuration
- QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
- settings.beginGroup(QLatin1String("QtNetwork"));
- const QString id = settings.value(QLatin1String("DefaultNetworkConfiguration")).toString();
- settings.endGroup();
-
- // If the saved network configuration is not currently discovered use the system default
- QNetworkConfiguration config = manager.configurationFromIdentifier(id);
- if ((config.state() & QNetworkConfiguration::Discovered) !=
- QNetworkConfiguration::Discovered) {
- config = manager.defaultConfiguration();
- }
-
- networkSession = new QNetworkSession(config, this);
- connect(networkSession, SIGNAL(opened()), this, SLOT(enableConnectButton()));
-
- connectButton->setEnabled(false);
- statusLabel->setText(tr("Opening network session."));
- networkSession->open();
- }
-
setWindowTitle(tr("FTP"));
}
@@ -154,6 +131,37 @@ void FtpWindow::connectOrDisconnect()
setCursor(Qt::WaitCursor);
#endif
+ if (!networkSession || !networkSession->isOpen()) {
+ if (manager.capabilities() & QNetworkConfigurationManager::NetworkSessionRequired) {
+ if (!networkSession) {
+ // Get saved network configuration
+ QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
+ settings.beginGroup(QLatin1String("QtNetwork"));
+ const QString id = settings.value(QLatin1String("DefaultNetworkConfiguration")).toString();
+ settings.endGroup();
+
+ // If the saved network configuration is not currently discovered use the system default
+ QNetworkConfiguration config = manager.configurationFromIdentifier(id);
+ if ((config.state() & QNetworkConfiguration::Discovered) !=
+ QNetworkConfiguration::Discovered) {
+ config = manager.defaultConfiguration();
+ }
+
+ networkSession = new QNetworkSession(config, this);
+ connect(networkSession, SIGNAL(opened()), this, SLOT(connectToFtp()));
+ connect(networkSession, SIGNAL(error(QNetworkSession::SessionError)), this, SLOT(enableConnectButton()));
+ }
+ connectButton->setEnabled(false);
+ statusLabel->setText(tr("Opening network session."));
+ networkSession->open();
+ return;
+ }
+ }
+ connectToFtp();
+}
+
+void FtpWindow::connectToFtp()
+{
//![1]
ftp = new QFtp(this);
connect(ftp, SIGNAL(commandFinished(int,bool)),
@@ -392,7 +400,7 @@ void FtpWindow::enableConnectButton()
settings.setValue(QLatin1String("DefaultNetworkConfiguration"), id);
settings.endGroup();
- connectButton->setEnabled(networkSession->isOpen());
+ connectButton->setEnabled(true);
statusLabel->setText(tr("Please enter the name of an FTP server."));
}
diff --git a/examples/network/qftp/ftpwindow.h b/examples/network/qftp/ftpwindow.h
index a9df99d2b3..f060bfc0ce 100644
--- a/examples/network/qftp/ftpwindow.h
+++ b/examples/network/qftp/ftpwindow.h
@@ -43,6 +43,7 @@
#include <QDialog>
#include <QHash>
+#include <QNetworkConfigurationManager>
QT_BEGIN_NAMESPACE
class QDialogButtonBox;
@@ -71,6 +72,7 @@ private slots:
void connectOrDisconnect();
void downloadFile();
void cancelDownload();
+ void connectToFtp();
void ftpCommandFinished(int commandId, bool error);
void addToList(const QUrlInfo &urlInfo);
@@ -101,6 +103,7 @@ private:
QFile *file;
QNetworkSession *networkSession;
+ QNetworkConfigurationManager manager;
//![1]
};