diff options
Diffstat (limited to 'examples/network')
-rw-r--r-- | examples/network/qftp/ftpwindow.cpp | 56 | ||||
-rw-r--r-- | examples/network/qftp/ftpwindow.h | 3 |
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] }; |