Make QFtp private.
authorJonas M. Gastal <jgastal@profusion.mobi>
Wed, 11 Jan 2012 12:48:08 +0000 (10:48 -0200)
committerQt by Nokia <qt-info@nokia.com>
Thu, 12 Jan 2012 13:38:55 +0000 (14:38 +0100)
All references to QFtp in documentation have been removed, QFtp's
documentaiton was marked internal. The QFtp example was removed.

Task-number: QTBUG-23199
Change-Id: Ifff83cac069fb350e8ebeae63e605850e65c0c30
Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
28 files changed:
dist/changes-5.0.0
doc/src/core/threads.qdoc
doc/src/network/network-programming/qtnetwork.qdoc
doc/src/snippets/code/src_corelib_io_qurl.cpp
examples/network/network.pro
examples/network/qftp/ftp.qrc [deleted file]
examples/network/qftp/ftpwindow.cpp [deleted file]
examples/network/qftp/ftpwindow.h [deleted file]
examples/network/qftp/images/cdtoparent.png [deleted file]
examples/network/qftp/images/dir.png [deleted file]
examples/network/qftp/images/file.png [deleted file]
examples/network/qftp/main.cpp [deleted file]
examples/network/qftp/qftp.desktop [deleted file]
examples/network/qftp/qftp.pro [deleted file]
src/corelib/io/qbuffer.cpp
src/corelib/io/qprocess.cpp
src/network/access/access.pri
src/network/access/qftp.cpp
src/network/access/qftp_p.h [moved from src/network/access/qftp.h with 93% similarity]
src/network/access/qnetworkaccessftpbackend_p.h
src/network/kernel/qnetworkproxy.cpp
src/network/socket/qabstractsocket.cpp
src/network/socket/qtcpsocket.cpp
src/tools/uic/qclass_lib_map.h
src/widgets/widgets/qprogressbar.cpp
tests/auto/network/access/access.pro
tests/auto/network/access/qftp/tst_qftp.cpp
tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp

index 03858e6..aafe574 100644 (file)
@@ -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
index 2ed0330..c38a7f3 100644 (file)
     \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
index b5725e4..122aa57 100644 (file)
@@ -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.
     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
     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
index 81c02cd..98d8e37 100644 (file)
@@ -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]
 
 
index f12a6a1..0496cbb 100644 (file)
@@ -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 (file)
index b598ab8..0000000
+++ /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 (file)
index 26a934e..0000000
+++ /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 (file)
index 83ebf8e..0000000
+++ /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 (file)
index 24b6180..0000000
Binary files a/examples/network/qftp/images/cdtoparent.png and /dev/null differ
diff --git a/examples/network/qftp/images/dir.png b/examples/network/qftp/images/dir.png
deleted file mode 100644 (file)
index 0ce5ae7..0000000
Binary files a/examples/network/qftp/images/dir.png and /dev/null differ
diff --git a/examples/network/qftp/images/file.png b/examples/network/qftp/images/file.png
deleted file mode 100644 (file)
index be6c530..0000000
Binary files a/examples/network/qftp/images/file.png and /dev/null differ
diff --git a/examples/network/qftp/main.cpp b/examples/network/qftp/main.cpp
deleted file mode 100644 (file)
index 8330052..0000000
+++ /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 (file)
index 6149fe9..0000000
+++ /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 (file)
index c554b37..0000000
+++ /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
index dd7e9d2..a5e605b 100644 (file)
@@ -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
 */
index e68fe88..8f76e0e 100644 (file)
@@ -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.
index 944855e..0047084 100644 (file)
@@ -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 \
index 3dc2242..6fafff0 100644 (file)
@@ -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
similarity index 93%
rename from src/network/access/qftp.h
rename to src/network/access/qftp_p.h
index 326e967..0dc6a20 100644 (file)
 **
 ****************************************************************************/
 
+//
+//  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
 
index 0e286d9..7338121 100644 (file)
@@ -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"
 
index 551b901..a8873d3 100644 (file)
@@ -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.
     \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
index 11a9d45..4d70684 100644 (file)
     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
 */
 
 /*!
index f960010..f900ca7 100644 (file)
@@ -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}
index 030be12..820e8b0 100644 (file)
@@ -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)
index 01837e1..e731b63 100644 (file)
@@ -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
index 69ed189..1e98d3c 100644 (file)
@@ -8,12 +8,11 @@ SUBDIRS=\
    qhttpnetworkconnection \
    qnetworkreply \
    qnetworkcachemetadata \
-   qftp \
    qhttpnetworkreply \
    qabstractnetworkcache \
 
 !contains(QT_CONFIG, private_tests): SUBDIRS -= \
           qhttpnetworkconnection \
           qhttpnetworkreply \
-
+          qftp \
 
index 49e1f4b..35abd68 100644 (file)
@@ -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>
index 6ed2411..e2c5798 100644 (file)
@@ -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()