summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-5.0.03
-rw-r--r--doc/src/core/threads.qdoc2
-rw-r--r--doc/src/network/network-programming/qtnetwork.qdoc63
-rw-r--r--doc/src/snippets/code/src_corelib_io_qurl.cpp4
-rw-r--r--examples/network/network.pro1
-rw-r--r--examples/network/qftp/ftp.qrc7
-rw-r--r--examples/network/qftp/ftpwindow.cpp406
-rw-r--r--examples/network/qftp/ftpwindow.h110
-rw-r--r--examples/network/qftp/images/cdtoparent.pngbin139 -> 0 bytes
-rw-r--r--examples/network/qftp/images/dir.pngbin154 -> 0 bytes
-rw-r--r--examples/network/qftp/images/file.pngbin129 -> 0 bytes
-rw-r--r--examples/network/qftp/main.cpp52
-rw-r--r--examples/network/qftp/qftp.desktop11
-rw-r--r--examples/network/qftp/qftp.pro13
-rw-r--r--src/corelib/io/qbuffer.cpp8
-rw-r--r--src/corelib/io/qprocess.cpp2
-rw-r--r--src/network/access/access.pri2
-rw-r--r--src/network/access/qftp.cpp53
-rw-r--r--src/network/access/qftp_p.h (renamed from src/network/access/qftp.h)13
-rw-r--r--src/network/access/qnetworkaccessftpbackend_p.h2
-rw-r--r--src/network/kernel/qnetworkproxy.cpp7
-rw-r--r--src/network/socket/qabstractsocket.cpp2
-rw-r--r--src/network/socket/qtcpsocket.cpp2
-rw-r--r--src/tools/uic/qclass_lib_map.h1
-rw-r--r--src/widgets/widgets/qprogressbar.cpp5
-rw-r--r--tests/auto/network/access/access.pro3
-rw-r--r--tests/auto/network/access/qftp/tst_qftp.cpp2
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp42
28 files changed, 106 insertions, 710 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0
index 03858e66eb..aafe57422e 100644
--- a/dist/changes-5.0.0
+++ b/dist/changes-5.0.0
@@ -146,6 +146,9 @@ information about a particular change.
- The QHttp, QHttpHeader, QHttpResponseHeader and QHttpRequestHeader classes have
been removed, QNetworkAccessManager should be used instead.
+- The QFtp class is no longer exported, QNetworkAccessManager should be used
+ instead.
+
- QProcess
* On Windows, QProcess::ForwardedChannels will not forward the output of GUI
diff --git a/doc/src/core/threads.qdoc b/doc/src/core/threads.qdoc
index 2ed0330bdd..c38a7f3141 100644
--- a/doc/src/core/threads.qdoc
+++ b/doc/src/core/threads.qdoc
@@ -338,7 +338,7 @@
\section1 QObject Reentrancy
QObject is reentrant. Most of its non-GUI subclasses, such as
- QTimer, QTcpSocket, QUdpSocket, QFtp, and QProcess, are also
+ QTimer, QTcpSocket, QUdpSocket and QProcess, are also
reentrant, making it possible to use these classes from multiple
threads simultaneously. Note that these classes are designed to be
created and used from within a single thread; creating an object
diff --git a/doc/src/network/network-programming/qtnetwork.qdoc b/doc/src/network/network-programming/qtnetwork.qdoc
index b5725e4bdb..122aa5784b 100644
--- a/doc/src/network/network-programming/qtnetwork.qdoc
+++ b/doc/src/network/network-programming/qtnetwork.qdoc
@@ -40,8 +40,7 @@
\brief An Introduction to Network Programming with Qt
The QtNetwork module offers classes that allow you to write TCP/IP clients
- and servers. It offers classes such as QFtp that implement specific
- application-level protocols, lower-level classes such as QTcpSocket,
+ and servers. It offers lower-level classes such as QTcpSocket,
QTcpServer and QUdpSocket that represent low level network concepts,
and high level classes such as QNetworkRequest, QNetworkReply and
QNetworkAccessManager to perform network operations using common protocols.
@@ -92,64 +91,6 @@
Each application or library can create one or more instances of
QNetworkAccessManager to handle network communication.
- \section1 Writing FTP Clients with QFtp
-
- FTP (File Transfer Protocol) is a protocol used almost exclusively
- for browsing remote directories and for transferring files.
-
- \image httpstack.png FTP Client and Server
-
- FTP uses two network connections, one for sending
- commands and one for transferring data. The
- FTP protocol has a state and requires the client to send several
- commands before a file transfer takes place.
- FTP clients establish a connection
- and keeps it open throughout the session. In each session, multiple
- transfers can occur.
-
- The QFtp class provides client-side support for FTP.
- It has the following characteristics:
- \list
-
- \o \e{Non-blocking behavior.} QFtp is asynchronous.
- You can schedule a series of commands which are executed later,
- when control returns to Qt's event loop.
-
- \o \e{Command IDs.} Each command has a unique ID number that you
- can use to follow the execution of the command. For example, QFtp
- emits the \l{QFtp::commandStarted()}{commandStarted()} and
- \l{QFtp::commandFinished()}{commandFinished()} signal with the
- command ID for each command that is executed.
-
- \o \e{Data transfer progress indicators.} QFtp emits signals
- whenever data is transferred (QFtp::dataTransferProgress(),
- QNetworkReply::downloadProgress(), and
- QNetworkReply::uploadProgress()). You could connect these signals
- to QProgressBar::setProgress() or QProgressDialog::setProgress(),
- for example.
-
- \o \e{QIODevice support.} The class supports convenient
- uploading from and downloading to \l{QIODevice}s, in addition to a
- QByteArray-based API.
-
- \endlist
-
- There are two main ways of using QFtp. The most common
- approach is to keep track of the command IDs and follow the
- execution of every command by connecting to the appropriate
- signals. The other approach is to schedule all commands at once
- and only connect to the done() signal, which is emitted when all
- scheduled commands have been executed. The first approach
- requires more work, but it gives you more control over the
- execution of individual commands and allows you to initiate new
- commands based on the result of a previous command. It also
- enables you to provide detailed feedback to the user.
-
- The \l{network/qftp}{FTP} example
- illustrates how to write an FTP client.
- Writing your own FTP (or HTTP) server is possible using the
- lower-level classes QTcpSocket and QTcpServer.
-
\section1 Using TCP with QTcpSocket and QTcpServer
TCP (Transmission Control Protocol) is a low-level network
@@ -172,7 +113,7 @@
will then stop immediately.
QTcpSocket works asynchronously and emits signals to report status
- changes and errors, just like QNetworkAccessManager and QFtp. It
+ changes and errors, just like QNetworkAccessManager. It
relies on the event loop to detect incoming data and to
automatically flush outgoing data. You can write data to the
socket using QTcpSocket::write(), and read data using
diff --git a/doc/src/snippets/code/src_corelib_io_qurl.cpp b/doc/src/snippets/code/src_corelib_io_qurl.cpp
index 81c02cdada..98d8e37ebd 100644
--- a/doc/src/snippets/code/src_corelib_io_qurl.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qurl.cpp
@@ -62,8 +62,8 @@ bool checkUrl(const QUrl &url) {
//! [3]
-QFtp ftp;
-ftp.connectToHost(url.host(), url.port(21));
+QTcpSocket sock;
+sock.connectToHost(url.host(), url.port(80));
//! [3]
diff --git a/examples/network/network.pro b/examples/network/network.pro
index f12a6a1d47..0496cbb242 100644
--- a/examples/network/network.pro
+++ b/examples/network/network.pro
@@ -10,7 +10,6 @@ SUBDIRS = \
broadcastsender \
fortuneclient \
fortuneserver \
- qftp \
http \
loopback \
threadedfortuneserver \
diff --git a/examples/network/qftp/ftp.qrc b/examples/network/qftp/ftp.qrc
deleted file mode 100644
index b598ab8829..0000000000
--- a/examples/network/qftp/ftp.qrc
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource>
- <file>images/cdtoparent.png</file>
- <file>images/dir.png</file>
- <file>images/file.png</file>
-</qresource>
-</RCC>
diff --git a/examples/network/qftp/ftpwindow.cpp b/examples/network/qftp/ftpwindow.cpp
deleted file mode 100644
index 26a934ea9f..0000000000
--- a/examples/network/qftp/ftpwindow.cpp
+++ /dev/null
@@ -1,406 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtWidgets>
-#include <QtNetwork>
-
-#include "ftpwindow.h"
-
-FtpWindow::FtpWindow(QWidget *parent)
- : QDialog(parent), ftp(0), networkSession(0)
-{
- ftpServerLabel = new QLabel(tr("Ftp &server:"));
- ftpServerLineEdit = new QLineEdit("ftp.qt.nokia.com");
- ftpServerLabel->setBuddy(ftpServerLineEdit);
-
- statusLabel = new QLabel(tr("Please enter the name of an FTP server."));
-
- fileList = new QTreeWidget;
- fileList->setEnabled(false);
- fileList->setRootIsDecorated(false);
- fileList->setHeaderLabels(QStringList() << tr("Name") << tr("Size") << tr("Owner") << tr("Group") << tr("Time"));
- fileList->header()->setStretchLastSection(false);
-
- connectButton = new QPushButton(tr("Connect"));
- connectButton->setDefault(true);
-
- cdToParentButton = new QPushButton;
- cdToParentButton->setIcon(QPixmap(":/images/cdtoparent.png"));
- cdToParentButton->setEnabled(false);
-
- downloadButton = new QPushButton(tr("Download"));
- downloadButton->setEnabled(false);
-
- quitButton = new QPushButton(tr("Quit"));
-
- buttonBox = new QDialogButtonBox;
- buttonBox->addButton(downloadButton, QDialogButtonBox::ActionRole);
- buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole);
-
- progressDialog = new QProgressDialog(this);
-
- connect(fileList, SIGNAL(itemActivated(QTreeWidgetItem*,int)),
- this, SLOT(processItem(QTreeWidgetItem*,int)));
- connect(fileList, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
- this, SLOT(enableDownloadButton()));
- connect(progressDialog, SIGNAL(canceled()), this, SLOT(cancelDownload()));
- connect(connectButton, SIGNAL(clicked()), this, SLOT(connectOrDisconnect()));
- connect(cdToParentButton, SIGNAL(clicked()), this, SLOT(cdToParent()));
- connect(downloadButton, SIGNAL(clicked()), this, SLOT(downloadFile()));
- connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));
-
- QHBoxLayout *topLayout = new QHBoxLayout;
- topLayout->addWidget(ftpServerLabel);
- topLayout->addWidget(ftpServerLineEdit);
- topLayout->addWidget(cdToParentButton);
- topLayout->addWidget(connectButton);
-
- QVBoxLayout *mainLayout = new QVBoxLayout;
- mainLayout->addLayout(topLayout);
- mainLayout->addWidget(fileList);
- mainLayout->addWidget(statusLabel);
- mainLayout->addWidget(buttonBox);
- setLayout(mainLayout);
-
- setWindowTitle(tr("FTP"));
-}
-
-QSize FtpWindow::sizeHint() const
-{
- return QSize(500, 300);
-}
-
-//![0]
-void FtpWindow::connectOrDisconnect()
-{
- if (ftp) {
- ftp->abort();
- ftp->deleteLater();
- ftp = 0;
-//![0]
- fileList->setEnabled(false);
- cdToParentButton->setEnabled(false);
- downloadButton->setEnabled(false);
- connectButton->setEnabled(true);
- connectButton->setText(tr("Connect"));
-#ifndef QT_NO_CURSOR
- setCursor(Qt::ArrowCursor);
-#endif
- statusLabel->setText(tr("Please enter the name of an FTP server."));
- return;
- }
-
-#ifndef QT_NO_CURSOR
- 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)),
- this, SLOT(ftpCommandFinished(int,bool)));
- connect(ftp, SIGNAL(listInfo(QUrlInfo)),
- this, SLOT(addToList(QUrlInfo)));
- connect(ftp, SIGNAL(dataTransferProgress(qint64,qint64)),
- this, SLOT(updateDataTransferProgress(qint64,qint64)));
-
- fileList->clear();
- currentPath.clear();
- isDirectory.clear();
-//![1]
-
-//![2]
- QUrl url(ftpServerLineEdit->text());
- if (!url.isValid() || url.scheme().toLower() != QLatin1String("ftp")) {
- ftp->connectToHost(ftpServerLineEdit->text(), 21);
- ftp->login();
- } else {
- ftp->connectToHost(url.host(), url.port(21));
-
- if (!url.userName().isEmpty())
- ftp->login(QUrl::fromPercentEncoding(url.userName().toLatin1()), url.password());
- else
- ftp->login();
- if (!url.path().isEmpty())
- ftp->cd(url.path());
- }
-//![2]
-
- fileList->setEnabled(true);
- connectButton->setEnabled(false);
- connectButton->setText(tr("Disconnect"));
- statusLabel->setText(tr("Connecting to FTP server %1...")
- .arg(ftpServerLineEdit->text()));
-}
-
-//![3]
-void FtpWindow::downloadFile()
-{
- QString fileName = fileList->currentItem()->text(0);
-//![3]
-//
- if (QFile::exists(fileName)) {
- QMessageBox::information(this, tr("FTP"),
- tr("There already exists a file called %1 in "
- "the current directory.")
- .arg(fileName));
- return;
- }
-
-//![4]
- file = new QFile(fileName);
- if (!file->open(QIODevice::WriteOnly)) {
- QMessageBox::information(this, tr("FTP"),
- tr("Unable to save the file %1: %2.")
- .arg(fileName).arg(file->errorString()));
- delete file;
- return;
- }
-
- ftp->get(fileList->currentItem()->text(0), file);
-
- progressDialog->setLabelText(tr("Downloading %1...").arg(fileName));
- downloadButton->setEnabled(false);
- progressDialog->exec();
-}
-//![4]
-
-//![5]
-void FtpWindow::cancelDownload()
-{
- ftp->abort();
-
- if (file->exists()) {
- file->close();
- file->remove();
- }
- delete file;
-}
-//![5]
-
-//![6]
-void FtpWindow::ftpCommandFinished(int, bool error)
-{
-#ifndef QT_NO_CURSOR
- setCursor(Qt::ArrowCursor);
-#endif
-
- if (ftp->currentCommand() == QFtp::ConnectToHost) {
- if (error) {
- QMessageBox::information(this, tr("FTP"),
- tr("Unable to connect to the FTP server "
- "at %1. Please check that the host "
- "name is correct.")
- .arg(ftpServerLineEdit->text()));
- connectOrDisconnect();
- return;
- }
- statusLabel->setText(tr("Logged onto %1.")
- .arg(ftpServerLineEdit->text()));
- fileList->setFocus();
- downloadButton->setDefault(true);
- connectButton->setEnabled(true);
- return;
- }
-//![6]
-
-//![7]
- if (ftp->currentCommand() == QFtp::Login)
- ftp->list();
-//![7]
-
-//![8]
- if (ftp->currentCommand() == QFtp::Get) {
- if (error) {
- statusLabel->setText(tr("Canceled download of %1.")
- .arg(file->fileName()));
- file->close();
- file->remove();
- } else {
- statusLabel->setText(tr("Downloaded %1 to current directory.")
- .arg(file->fileName()));
- file->close();
- }
- delete file;
- enableDownloadButton();
- progressDialog->hide();
-//![8]
-//![9]
- } else if (ftp->currentCommand() == QFtp::List) {
- if (isDirectory.isEmpty()) {
- fileList->addTopLevelItem(new QTreeWidgetItem(QStringList() << tr("<empty>")));
- fileList->setEnabled(false);
- }
- }
-//![9]
-}
-
-//![10]
-void FtpWindow::addToList(const QUrlInfo &urlInfo)
-{
- QTreeWidgetItem *item = new QTreeWidgetItem;
- item->setText(0, urlInfo.name());
- item->setText(1, QString::number(urlInfo.size()));
- item->setText(2, urlInfo.owner());
- item->setText(3, urlInfo.group());
- item->setText(4, urlInfo.lastModified().toString("MMM dd yyyy"));
-
- QPixmap pixmap(urlInfo.isDir() ? ":/images/dir.png" : ":/images/file.png");
- item->setIcon(0, pixmap);
-
- isDirectory[urlInfo.name()] = urlInfo.isDir();
- fileList->addTopLevelItem(item);
- if (!fileList->currentItem()) {
- fileList->setCurrentItem(fileList->topLevelItem(0));
- fileList->setEnabled(true);
- }
-}
-//![10]
-
-//![11]
-void FtpWindow::processItem(QTreeWidgetItem *item, int /*column*/)
-{
- QString name = item->text(0);
- if (isDirectory.value(name)) {
- fileList->clear();
- isDirectory.clear();
- currentPath += '/';
- currentPath += name;
- ftp->cd(name);
- ftp->list();
- cdToParentButton->setEnabled(true);
-#ifndef QT_NO_CURSOR
- setCursor(Qt::WaitCursor);
-#endif
- return;
- }
-}
-//![11]
-
-//![12]
-void FtpWindow::cdToParent()
-{
-#ifndef QT_NO_CURSOR
- setCursor(Qt::WaitCursor);
-#endif
- fileList->clear();
- isDirectory.clear();
- currentPath = currentPath.left(currentPath.lastIndexOf('/'));
- if (currentPath.isEmpty()) {
- cdToParentButton->setEnabled(false);
- ftp->cd("/");
- } else {
- ftp->cd(currentPath);
- }
- ftp->list();
-}
-//![12]
-
-//![13]
-void FtpWindow::updateDataTransferProgress(qint64 readBytes,
- qint64 totalBytes)
-{
- progressDialog->setMaximum(totalBytes);
- progressDialog->setValue(readBytes);
-}
-//![13]
-
-//![14]
-void FtpWindow::enableDownloadButton()
-{
- QTreeWidgetItem *current = fileList->currentItem();
- if (current) {
- QString currentFile = current->text(0);
- downloadButton->setEnabled(!isDirectory.value(currentFile));
- } else {
- downloadButton->setEnabled(false);
- }
-}
-//![14]
-
-void FtpWindow::enableConnectButton()
-{
- // Save the used configuration
- QNetworkConfiguration config = networkSession->configuration();
- QString id;
- if (config.type() == QNetworkConfiguration::UserChoice)
- id = networkSession->sessionProperty(QLatin1String("UserChoiceConfiguration")).toString();
- else
- id = config.identifier();
-
- QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
- settings.beginGroup(QLatin1String("QtNetwork"));
- settings.setValue(QLatin1String("DefaultNetworkConfiguration"), id);
- settings.endGroup();
-
- 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
deleted file mode 100644
index 83ebf8eb98..0000000000
--- a/examples/network/qftp/ftpwindow.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef FTPWINDOW_H
-#define FTPWINDOW_H
-
-#include <QDialog>
-#include <QHash>
-#include <QNetworkConfigurationManager>
-
-QT_BEGIN_NAMESPACE
-class QDialogButtonBox;
-class QFile;
-class QFtp;
-class QLabel;
-class QLineEdit;
-class QTreeWidget;
-class QTreeWidgetItem;
-class QProgressDialog;
-class QPushButton;
-class QUrlInfo;
-class QNetworkSession;
-QT_END_NAMESPACE
-
-class FtpWindow : public QDialog
-{
- Q_OBJECT
-
-public:
- FtpWindow(QWidget *parent = 0);
- QSize sizeHint() const;
-
-//![0]
-private slots:
- void connectOrDisconnect();
- void downloadFile();
- void cancelDownload();
- void connectToFtp();
-
- void ftpCommandFinished(int commandId, bool error);
- void addToList(const QUrlInfo &urlInfo);
- void processItem(QTreeWidgetItem *item, int column);
- void cdToParent();
- void updateDataTransferProgress(qint64 readBytes,
- qint64 totalBytes);
- void enableDownloadButton();
- void enableConnectButton();
-//![0]
-
-private:
- QLabel *ftpServerLabel;
- QLineEdit *ftpServerLineEdit;
- QLabel *statusLabel;
- QTreeWidget *fileList;
- QPushButton *cdToParentButton;
- QPushButton *connectButton;
- QPushButton *downloadButton;
- QPushButton *quitButton;
- QDialogButtonBox *buttonBox;
- QProgressDialog *progressDialog;
-
-//![1]
- QHash<QString, bool> isDirectory;
- QString currentPath;
- QFtp *ftp;
- QFile *file;
-
- QNetworkSession *networkSession;
- QNetworkConfigurationManager manager;
-//![1]
-};
-
-#endif
diff --git a/examples/network/qftp/images/cdtoparent.png b/examples/network/qftp/images/cdtoparent.png
deleted file mode 100644
index 24b6180829..0000000000
--- a/examples/network/qftp/images/cdtoparent.png
+++ /dev/null
Binary files differ
diff --git a/examples/network/qftp/images/dir.png b/examples/network/qftp/images/dir.png
deleted file mode 100644
index 0ce5ae75fc..0000000000
--- a/examples/network/qftp/images/dir.png
+++ /dev/null
Binary files differ
diff --git a/examples/network/qftp/images/file.png b/examples/network/qftp/images/file.png
deleted file mode 100644
index be6c53089a..0000000000
--- a/examples/network/qftp/images/file.png
+++ /dev/null
Binary files differ
diff --git a/examples/network/qftp/main.cpp b/examples/network/qftp/main.cpp
deleted file mode 100644
index 8330052b3e..0000000000
--- a/examples/network/qftp/main.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the examples of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
-** the names of its contributors may be used to endorse or promote
-** products derived from this software without specific prior written
-** permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QApplication>
-#include "ftpwindow.h"
-
-
-int main(int argc, char *argv[])
-{
- Q_INIT_RESOURCE(ftp);
- QApplication app(argc, argv);
- FtpWindow ftpWin;
- ftpWin.show();
- return ftpWin.exec();
-}
diff --git a/examples/network/qftp/qftp.desktop b/examples/network/qftp/qftp.desktop
deleted file mode 100644
index 6149fe96df..0000000000
--- a/examples/network/qftp/qftp.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Version=1.0
-Type=Application
-Terminal=false
-Name=FTP
-Exec=/opt/usr/bin/qftp
-Icon=qftp
-X-Window-Icon=
-X-HildonDesk-ShowInToolbar=true
-X-Osso-Type=application/x-executable
diff --git a/examples/network/qftp/qftp.pro b/examples/network/qftp/qftp.pro
deleted file mode 100644
index c554b37a03..0000000000
--- a/examples/network/qftp/qftp.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-QT += widgets
-
-HEADERS = ftpwindow.h
-SOURCES = ftpwindow.cpp \
- main.cpp
-RESOURCES += ftp.qrc
-QT += network
-
-# install
-target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/network/qftp
-sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro images
-sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/network/qftp
-INSTALLS += target sources
diff --git a/src/corelib/io/qbuffer.cpp b/src/corelib/io/qbuffer.cpp
index dd7e9d2427..a5e605b9d5 100644
--- a/src/corelib/io/qbuffer.cpp
+++ b/src/corelib/io/qbuffer.cpp
@@ -143,12 +143,8 @@ QByteArray QBufferPrivate::peek(qint64 maxSize)
QBuffer emits readyRead() when new data has arrived in the
buffer. By connecting to this signal, you can use QBuffer to
- store temporary data before processing it. For example, you can
- pass the buffer to QFtp when downloading a file from an FTP
- server. Whenever a new payload of data has been downloaded,
- readyRead() is emitted, and you can process the data that just
- arrived. QBuffer also emits bytesWritten() every time new data
- has been written to the buffer.
+ store temporary data before processing it. QBuffer also emits
+ bytesWritten() every time new data has been written to the buffer.
\sa QFile, QDataStream, QTextStream, QByteArray
*/
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp
index e68fe883e7..8f76e0e4b9 100644
--- a/src/corelib/io/qprocess.cpp
+++ b/src/corelib/io/qprocess.cpp
@@ -471,7 +471,7 @@ void QProcessPrivate::Channel::clear()
read the standard output by calling read(), readLine(), and
getChar(). Because it inherits QIODevice, QProcess can also be
used as an input source for QXmlReader, or for generating data to
- be uploaded using QFtp.
+ be uploaded using QNetworkAccessManager.
\note On Windows CE and Symbian, reading and writing to a process
is not supported.
diff --git a/src/network/access/access.pri b/src/network/access/access.pri
index 944855e9d1..0047084eb1 100644
--- a/src/network/access/access.pri
+++ b/src/network/access/access.pri
@@ -1,7 +1,7 @@
# Qt network access module
HEADERS += \
- access/qftp.h \
+ access/qftp_p.h \
access/qhttpheader_p.h \
access/qhttpnetworkheader_p.h \
access/qhttpnetworkrequest_p.h \
diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp
index 3dc22424f4..6fafff0f56 100644
--- a/src/network/access/qftp.cpp
+++ b/src/network/access/qftp.cpp
@@ -42,7 +42,7 @@
//#define QFTPPI_DEBUG
//#define QFTPDTP_DEBUG
-#include "qftp.h"
+#include "private/qftp_p.h"
#include "qabstractsocket.h"
#ifndef QT_NO_FTP
@@ -825,6 +825,8 @@ void QFtpPI::connectToHost(const QString &host, quint16 port)
}
/*
+ \internal
+
Sends the sequence of commands \a cmds to the FTP server. When the commands
are all done the finished() signal is emitted. When an error occurs, the
error() signal is emitted.
@@ -970,6 +972,8 @@ void QFtpPI::readyRead()
}
/*
+ \internal
+
Process a reply from the FTP server.
Returns true if the reply was processed or false if the reply has to be
@@ -1150,6 +1154,8 @@ bool QFtpPI::processReply()
}
/*
+ \internal
+
Starts next pending command. Returns false if there are no pending commands,
otherwise it returns true.
*/
@@ -1306,6 +1312,7 @@ int QFtpPrivate::addCommand(QFtpCommand *cmd)
*
*********************************************************************/
/*!
+ \internal
\class QFtp
\brief The QFtp class provides an implementation of the client side of FTP protocol.
@@ -1409,6 +1416,7 @@ int QFtpPrivate::addCommand(QFtpCommand *cmd)
/*!
+ \internal
Constructs a QFtp object with the given \a parent.
*/
QFtp::QFtp(QObject *parent)
@@ -1435,6 +1443,7 @@ QFtp::QFtp(QObject *parent)
}
/*!
+ \internal
\enum QFtp::State
This enum defines the connection state:
@@ -1451,6 +1460,7 @@ QFtp::QFtp(QObject *parent)
\sa stateChanged() state()
*/
/*!
+ \internal
\enum QFtp::TransferMode
FTP works with two socket connections; one for commands and
@@ -1468,6 +1478,7 @@ QFtp::QFtp(QObject *parent)
data.
*/
/*!
+ \internal
\enum QFtp::TransferType
This enum identifies the data transfer type used with get and
@@ -1479,6 +1490,7 @@ QFtp::QFtp(QObject *parent)
characters will be converted to the local format.
*/
/*!
+ \internal
\enum QFtp::Error
This enum identifies the error that occurred.
@@ -1495,6 +1507,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\enum QFtp::Command
This enum is used as the return value for the currentCommand() function.
@@ -1524,6 +1537,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::stateChanged(int state)
This signal is emitted when the state of the connection changes.
@@ -1538,6 +1552,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::listInfo(const QUrlInfo &i);
This signal is emitted for each directory entry the list() command
@@ -1547,6 +1562,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::commandStarted(int id)
This signal is emitted when processing the command identified by
@@ -1556,6 +1572,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::commandFinished(int id, bool error)
This signal is emitted when processing the command identified by
@@ -1566,6 +1583,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::done(bool error)
This signal is emitted when the last pending command has finished;
@@ -1577,6 +1595,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::readyRead()
This signal is emitted in response to a get() command when there
@@ -1597,6 +1616,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::dataTransferProgress(qint64 done, qint64 total)
This signal is emitted in response to a get() or put() request to
@@ -1617,6 +1637,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
\fn void QFtp::rawCommandReply(int replyCode, const QString &detail);
This signal is emitted in response to the rawCommand() function.
@@ -1627,6 +1648,7 @@ QFtp::QFtp(QObject *parent)
*/
/*!
+ \internal
Connects to the FTP server \a host using port \a port.
The stateChanged() signal is emitted when the state of the
@@ -1655,6 +1677,7 @@ int QFtp::connectToHost(const QString &host, quint16 port)
}
/*!
+ \internal
Logs in to the FTP server with the username \a user and the
password \a password.
@@ -1681,6 +1704,7 @@ int QFtp::login(const QString &user, const QString &password)
}
/*!
+ \internal
Closes the connection to the FTP server.
The stateChanged() signal is emitted when the state of the
@@ -1704,6 +1728,7 @@ int QFtp::close()
}
/*!
+ \internal
Sets the current FTP transfer mode to \a mode. The default is QFtp::Passive.
\sa QFtp::TransferMode
@@ -1717,6 +1742,7 @@ int QFtp::setTransferMode(TransferMode mode)
}
/*!
+ \internal
Enables use of the FTP proxy on host \a host and port \a
port. Calling this function with \a host empty disables proxying.
@@ -1731,6 +1757,7 @@ int QFtp::setProxy(const QString &host, quint16 port)
}
/*!
+ \internal
Lists the contents of directory \a dir on the FTP server. If \a
dir is empty, it lists the contents of the current directory.
@@ -1760,6 +1787,7 @@ int QFtp::list(const QString &dir)
}
/*!
+ \internal
Changes the working directory of the server to \a dir.
The function does not block and returns immediately. The command
@@ -1779,6 +1807,7 @@ int QFtp::cd(const QString &dir)
}
/*!
+ \internal
Downloads the file \a file from the server.
If \a dev is 0, then the readyRead() signal is emitted when there
@@ -1832,6 +1861,7 @@ int QFtp::get(const QString &file, QIODevice *dev, TransferType type)
}
/*!
+ \internal
\overload
Writes a copy of the given \a data to the file called \a file on
@@ -1869,6 +1899,7 @@ int QFtp::put(const QByteArray &data, const QString &file, TransferType type)
}
/*!
+ \internal
Reads the data from the IO device \a dev, and writes it to the
file called \a file on the server. The data is read in chunks from
the IO device, so this overload allows you to transmit large
@@ -1897,6 +1928,7 @@ int QFtp::put(QIODevice *dev, const QString &file, TransferType type)
}
/*!
+ \internal
Deletes the file called \a file from the server.
The function does not block and returns immediately. The command
@@ -1916,6 +1948,7 @@ int QFtp::remove(const QString &file)
}
/*!
+ \internal
Creates a directory called \a dir on the server.
The function does not block and returns immediately. The command
@@ -1935,6 +1968,7 @@ int QFtp::mkdir(const QString &dir)
}
/*!
+ \internal
Removes the directory called \a dir from the server.
The function does not block and returns immediately. The command
@@ -1954,6 +1988,7 @@ int QFtp::rmdir(const QString &dir)
}
/*!
+ \internal
Renames the file called \a oldname to \a newname on the server.
The function does not block and returns immediately. The command
@@ -1976,6 +2011,7 @@ int QFtp::rename(const QString &oldname, const QString &newname)
}
/*!
+ \internal
Sends the raw FTP command \a command to the FTP server. This is
useful for low-level FTP access. If the operation you wish to
perform has an equivalent QFtp function, we recommend using the
@@ -2000,6 +2036,7 @@ int QFtp::rawCommand(const QString &command)
}
/*!
+ \internal
Returns the number of bytes that can be read from the data socket
at the moment.
@@ -2011,6 +2048,7 @@ qint64 QFtp::bytesAvailable() const
}
/*!
+ \internal
Reads \a maxlen bytes from the data socket into \a data and
returns the number of bytes read. Returns -1 if an error occurred.
@@ -2022,6 +2060,7 @@ qint64 QFtp::read(char *data, qint64 maxlen)
}
/*!
+ \internal
Reads all the bytes available from the data socket and returns
them.
@@ -2033,6 +2072,7 @@ QByteArray QFtp::readAll()
}
/*!
+ \internal
Aborts the current command and deletes all scheduled commands.
If there is an unfinished command (i.e. a command for which the
@@ -2071,6 +2111,7 @@ void QFtp::abort()
}
/*!
+ \internal
Returns the identifier of the FTP command that is being executed
or 0 if there is no command being executed.
@@ -2084,6 +2125,7 @@ int QFtp::currentId() const
}
/*!
+ \internal
Returns the command type of the FTP command being executed or \c
None if there is no command being executed.
@@ -2097,6 +2139,7 @@ QFtp::Command QFtp::currentCommand() const
}
/*!
+ \internal
Returns the QIODevice pointer that is used by the FTP command to read data
from or store data to. If there is no current FTP command being executed or
if the command does not use an IO device, this function returns 0.
@@ -2117,6 +2160,7 @@ QIODevice* QFtp::currentDevice() const
}
/*!
+ \internal
Returns true if there are any commands scheduled that have not yet
been executed; otherwise returns false.
@@ -2131,6 +2175,7 @@ bool QFtp::hasPendingCommands() const
}
/*!
+ \internal
Deletes all pending commands from the list of scheduled commands.
This does not affect the command that is being executed. If you
want to stop this as well, use abort().
@@ -2145,6 +2190,7 @@ void QFtp::clearPendingCommands()
}
/*!
+ \internal
Returns the current state of the object. When the state changes,
the stateChanged() signal is emitted.
@@ -2156,6 +2202,7 @@ QFtp::State QFtp::state() const
}
/*!
+ \internal
Returns the last error that occurred. This is useful to find out
what went wrong when receiving a commandFinished() or a done()
signal with the \c error argument set to \c true.
@@ -2168,6 +2215,7 @@ QFtp::Error QFtp::error() const
}
/*!
+ \internal
Returns a human-readable description of the last error that
occurred. This is useful for presenting a error message to the
user when receiving a commandFinished() or a done() signal with
@@ -2385,6 +2433,7 @@ void QFtpPrivate::_q_piFtpReply(int code, const QString &text)
}
/*!
+ \internal
Destructor.
*/
QFtp::~QFtp()
@@ -2397,6 +2446,6 @@ QT_END_NAMESPACE
#include "qftp.moc"
-#include "moc_qftp.cpp"
+#include "moc_qftp_p.cpp"
#endif // QT_NO_FTP
diff --git a/src/network/access/qftp.h b/src/network/access/qftp_p.h
index 326e967f3b..0dc6a2006f 100644
--- a/src/network/access/qftp.h
+++ b/src/network/access/qftp_p.h
@@ -39,6 +39,17 @@
**
****************************************************************************/
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the Network Access API. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+
#ifndef QFTP_H
#define QFTP_H
@@ -56,7 +67,7 @@ QT_MODULE(Network)
class QFtpPrivate;
-class Q_NETWORK_EXPORT QFtp : public QObject
+class Q_AUTOTEST_EXPORT QFtp : public QObject
{
Q_OBJECT
diff --git a/src/network/access/qnetworkaccessftpbackend_p.h b/src/network/access/qnetworkaccessftpbackend_p.h
index 0e286d99c7..7338121493 100644
--- a/src/network/access/qnetworkaccessftpbackend_p.h
+++ b/src/network/access/qnetworkaccessftpbackend_p.h
@@ -57,7 +57,7 @@
#include "qnetworkaccesscache_p.h"
#include "qnetworkrequest.h"
#include "qnetworkreply.h"
-#include "QtNetwork/qftp.h"
+#include "private/qftp_p.h"
#include "QtCore/qpointer.h"
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index 551b90116a..a8873d3be9 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -53,8 +53,8 @@
QNetworkProxy provides the method for configuring network layer
proxy support to the Qt network classes. The currently supported
- classes are QAbstractSocket, QTcpSocket, QUdpSocket, QTcpServer,
- QNetworkAccessManager and QFtp. The proxy support is designed to
+ classes are QAbstractSocket, QTcpSocket, QUdpSocket, QTcpServer
+ and QNetworkAccessManager. The proxy support is designed to
be as transparent as possible. This means that existing
network-enabled applications that you have written should
automatically support network proxy using the following code.
@@ -166,8 +166,7 @@
\row
\o Caching FTP
\o Implemented using an FTP proxy, it is useful only in the
- context of FTP requests (see QFtp,
- QNetworkAccessManager)
+ context of FTP requests (see QNetworkAccessManager)
\o CachingCapability, HostNameLookupCapability
\endtable
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index 11a9d45990..4d70684563 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -163,7 +163,7 @@
issue to be aware of, though: You must make sure that enough data
is available before attempting to read it using operator>>().
- \sa QFtp, QNetworkAccessManager, QTcpServer
+ \sa QNetworkAccessManager, QTcpServer
*/
/*!
diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp
index f960010e0c..f900ca752c 100644
--- a/src/network/socket/qtcpsocket.cpp
+++ b/src/network/socket/qtcpsocket.cpp
@@ -60,7 +60,7 @@
\bold{Note:} TCP sockets cannot be opened in QIODevice::Unbuffered mode.
- \sa QTcpServer, QUdpSocket, QFtp, QNetworkAccessManager,
+ \sa QTcpServer, QUdpSocket, QNetworkAccessManager,
{Fortune Server Example}, {Fortune Client Example},
{Threaded Fortune Server Example}, {Blocking Fortune Client Example},
{Loopback Example}, {Torrent Example}
diff --git a/src/tools/uic/qclass_lib_map.h b/src/tools/uic/qclass_lib_map.h
index 030be12076..820e8b04d2 100644
--- a/src/tools/uic/qclass_lib_map.h
+++ b/src/tools/uic/qclass_lib_map.h
@@ -397,7 +397,6 @@ QT_CLASS_LIB(QXmlStreamStringRef, QtXml, qxmlstream.h)
QT_CLASS_LIB(QXmlStreamWriter, QtXml, qxmlstream.h)
QT_CLASS_LIB(QNetworkCacheMetaData, QtNetwork, qabstractnetworkcache.h)
QT_CLASS_LIB(QAbstractNetworkCache, QtNetwork, qabstractnetworkcache.h)
-QT_CLASS_LIB(QFtp, QtNetwork, qftp.h)
QT_CLASS_LIB(QHttpHeader, QtNetwork, qhttpheader_p.h)
QT_CLASS_LIB(QHttpResponseHeader, QtNetwork, qhttpheader_p.h)
QT_CLASS_LIB(QNetworkAccessManager, QtNetwork, qnetworkaccessmanager.h)
diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp
index 01837e1a4c..e731b63c66 100644
--- a/src/widgets/widgets/qprogressbar.cpp
+++ b/src/widgets/widgets/qprogressbar.cpp
@@ -192,9 +192,8 @@ bool QProgressBarPrivate::repaintRequired() const
If minimum and maximum both are set to 0, the bar shows a busy
indicator instead of a percentage of steps. This is useful, for
- example, when using QFtp or QNetworkAccessManager to download
- items when they are unable to determine the size of the item being
- downloaded.
+ example, when using QNetworkAccessManager to download items when
+ they are unable to determine the size of the item being downloaded.
\table
\row \o \inlineimage macintosh-progressbar.png Screenshot of a Macintosh style progress bar
diff --git a/tests/auto/network/access/access.pro b/tests/auto/network/access/access.pro
index 69ed189712..1e98d3cf85 100644
--- a/tests/auto/network/access/access.pro
+++ b/tests/auto/network/access/access.pro
@@ -8,12 +8,11 @@ SUBDIRS=\
qhttpnetworkconnection \
qnetworkreply \
qnetworkcachemetadata \
- qftp \
qhttpnetworkreply \
qabstractnetworkcache \
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
qhttpnetworkconnection \
qhttpnetworkreply \
-
+ qftp \
diff --git a/tests/auto/network/access/qftp/tst_qftp.cpp b/tests/auto/network/access/qftp/tst_qftp.cpp
index 49e1f4b230..35abd68415 100644
--- a/tests/auto/network/access/qftp/tst_qftp.cpp
+++ b/tests/auto/network/access/qftp/tst_qftp.cpp
@@ -45,7 +45,7 @@
#include <qcoreapplication.h>
#include <qfile.h>
#include <qbuffer.h>
-#include "qftp.h"
+#include "private/qftp_p.h"
#include <qmap.h>
#include <time.h>
#include <stdlib.h>
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 6ed241175d..e2c5798c53 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -54,7 +54,9 @@
#include <QtNetwork/QLocalSocket>
#include <QtNetwork/QLocalServer>
#include <QtNetwork/QHostInfo>
-#include <QtNetwork/QFtp>
+#include <QtNetwork/QNetworkAccessManager>
+#include <QtNetwork/QNetworkRequest>
+#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QAbstractNetworkCache>
#include <QtNetwork/qauthenticator.h>
#include <QtNetwork/qnetworkaccessmanager.h>
@@ -1849,23 +1851,22 @@ void tst_QNetworkReply::putToFtp()
// download the file again from FTP to make sure it was uploaded
// correctly
- QFtp ftp;
- ftp.connectToHost(url.host());
- ftp.login();
- ftp.get(url.path());
+ QNetworkAccessManager qnam;
+ QNetworkRequest req(url);
+ QNetworkReply *r = qnam.get(req);
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QObject::connect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QObject::disconnect(r, SIGNAL(finished(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QByteArray uploaded = ftp.readAll();
+ QByteArray uploaded = r->readAll();
QCOMPARE(uploaded.size(), data.size());
QCOMPARE(uploaded, data);
- ftp.close();
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ r->close();
+ QObject::connect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QObject::disconnect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
}
void tst_QNetworkReply::putToHttp_data()
@@ -3901,23 +3902,22 @@ void tst_QNetworkReply::ioPutToFtpFromFile()
// download the file again from FTP to make sure it was uploaded
// correctly
- QFtp ftp;
- ftp.connectToHost(url.host());
- ftp.login();
- ftp.get(url.path());
+ QNetworkAccessManager qnam;
+ QNetworkRequest req(url);
+ QNetworkReply *r = qnam.get(req);
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QObject::connect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
QTestEventLoop::instance().enterLoop(3);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QObject::disconnect(r, SIGNAL(finished(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
- QByteArray uploaded = ftp.readAll();
+ QByteArray uploaded = r->readAll();
QCOMPARE(qint64(uploaded.size()), sourceFile.size());
QCOMPARE(uploaded, sourceFile.readAll());
- ftp.close();
- QObject::connect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ r->close();
+ QObject::connect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
QTestEventLoop::instance().enterLoop(10);
- QObject::disconnect(&ftp, SIGNAL(done(bool)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QObject::disconnect(r, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
}
void tst_QNetworkReply::ioPutToHttpFromFile_data()