Eneboo - Documentación para desarrolladores
|
00001 /**************************************************************************** 00002 ** $Id: qt/qftp.h 3.3.8 edited Jan 11 14:46 $ 00003 ** 00004 ** Definition of QFtp class. 00005 ** 00006 ** Created : 970521 00007 ** 00008 ** Copyright (C) 1997-2007 Trolltech ASA. All rights reserved. 00009 ** 00010 ** This file is part of the network module of the Qt GUI Toolkit. 00011 ** 00012 ** This file may be distributed under the terms of the Q Public License 00013 ** as defined by Trolltech ASA of Norway and appearing in the file 00014 ** LICENSE.QPL included in the packaging of this file. 00015 ** 00016 ** This file may be distributed and/or modified under the terms of the 00017 ** GNU General Public License version 2 as published by the Free Software 00018 ** Foundation and appearing in the file LICENSE.GPL included in the 00019 ** packaging of this file. 00020 ** 00021 ** Licensees holding valid Qt Enterprise Edition licenses may use this 00022 ** file in accordance with the Qt Commercial License Agreement provided 00023 ** with the Software. 00024 ** 00025 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00026 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00027 ** 00028 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for 00029 ** information about Qt Commercial License Agreements. 00030 ** See http://www.trolltech.com/qpl/ for QPL licensing information. 00031 ** See http://www.trolltech.com/gpl/ for GPL licensing information. 00032 ** 00033 ** Contact info@trolltech.com if any conditions of this licensing are 00034 ** not clear to you. 00035 ** 00036 **********************************************************************/ 00037 00038 #ifndef QFTP_H 00039 #define QFTP_H 00040 00041 #ifndef QT_H 00042 #include "qstring.h" // char*->QString conversion 00043 #include "qurlinfo.h" 00044 #include "qnetworkprotocol.h" 00045 #endif // QT_H 00046 00047 #if !defined( QT_MODULE_NETWORK ) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_NETWORK ) 00048 #define QM_EXPORT_FTP 00049 #else 00050 #define QM_EXPORT_FTP Q_EXPORT 00051 #endif 00052 00053 #ifndef QT_NO_NETWORKPROTOCOL_FTP 00054 00055 00056 class QSocket; 00057 class QFtpCommand; 00058 00059 class QM_EXPORT_FTP QFtp : public QNetworkProtocol 00060 { 00061 Q_OBJECT 00062 00063 public: 00064 QFtp(); // ### Qt 4.0: get rid of this overload 00065 QFtp( QObject *parent, const char *name=0 ); 00066 virtual ~QFtp(); 00067 00068 int supportedOperations() const; 00069 00070 // non-QNetworkProtocol functions: 00071 enum State { 00072 Unconnected, 00073 HostLookup, 00074 Connecting, 00075 Connected, 00076 LoggedIn, 00077 Closing 00078 }; 00079 enum Error { 00080 NoError, 00081 UnknownError, 00082 HostNotFound, 00083 ConnectionRefused, 00084 NotConnected 00085 }; 00086 enum Command { 00087 None, 00088 ConnectToHost, 00089 Login, 00090 Close, 00091 List, 00092 Cd, 00093 Get, 00094 Put, 00095 Remove, 00096 Mkdir, 00097 Rmdir, 00098 Rename, 00099 RawCommand 00100 }; 00101 00102 int connectToHost( const QString &host, Q_UINT16 port=21 ); 00103 int login( const QString &user=QString::null, const QString &password=QString::null ); 00104 int close(); 00105 int list( const QString &dir=QString::null ); 00106 int cd( const QString &dir ); 00107 int get( const QString &file, QIODevice *dev=0 ); 00108 int put( const QByteArray &data, const QString &file ); 00109 int put( QIODevice *dev, const QString &file ); 00110 int remove( const QString &file ); 00111 int mkdir( const QString &dir ); 00112 int rmdir( const QString &dir ); 00113 int rename( const QString &oldname, const QString &newname ); 00114 00115 int rawCommand( const QString &command ); 00116 00117 Q_ULONG bytesAvailable() const; 00118 Q_LONG readBlock( char *data, Q_ULONG maxlen ); 00119 QByteArray readAll(); 00120 00121 int currentId() const; 00122 QIODevice* currentDevice() const; 00123 Command currentCommand() const; 00124 bool hasPendingCommands() const; 00125 void clearPendingCommands(); 00126 00127 State state() const; 00128 00129 Error error() const; 00130 QString errorString() const; 00131 00132 public slots: 00133 void abort(); 00134 00135 signals: 00136 void stateChanged( int ); 00137 void listInfo( const QUrlInfo& ); 00138 void readyRead(); 00139 void dataTransferProgress( int, int ); 00140 void rawCommandReply( int, const QString& ); 00141 00142 void commandStarted( int ); 00143 void commandFinished( int, bool ); 00144 void done( bool ); 00145 00146 protected: 00147 void parseDir( const QString &buffer, QUrlInfo &info ); // ### Qt 4.0: delete this? (not public API) 00148 void operationListChildren( QNetworkOperation *op ); 00149 void operationMkDir( QNetworkOperation *op ); 00150 void operationRemove( QNetworkOperation *op ); 00151 void operationRename( QNetworkOperation *op ); 00152 void operationGet( QNetworkOperation *op ); 00153 void operationPut( QNetworkOperation *op ); 00154 00155 // ### Qt 4.0: delete these 00156 // unused variables: 00157 QSocket *commandSocket, *dataSocket; 00158 bool connectionReady, passiveMode; 00159 int getTotalSize, getDoneSize; 00160 bool startGetOnFail; 00161 int putToWrite, putWritten; 00162 bool errorInListChildren; 00163 00164 private: 00165 void init(); 00166 int addCommand( QFtpCommand * ); 00167 00168 bool checkConnection( QNetworkOperation *op ); 00169 00170 private slots: 00171 void startNextCommand(); 00172 void piFinished( const QString& ); 00173 void piError( int, const QString& ); 00174 void piConnectState( int ); 00175 void piFtpReply( int, const QString& ); 00176 00177 private slots: 00178 void npListInfo( const QUrlInfo & ); 00179 void npDone( bool ); 00180 void npStateChanged( int ); 00181 void npDataTransferProgress( int, int ); 00182 void npReadyRead(); 00183 00184 protected slots: 00185 // ### Qt 4.0: delete these 00186 void hostFound(); 00187 void connected(); 00188 void closed(); 00189 void dataHostFound(); 00190 void dataConnected(); 00191 void dataClosed(); 00192 void dataReadyRead(); 00193 void dataBytesWritten( int nbytes ); 00194 void error( int ); 00195 }; 00196 00197 #endif // QT_NO_NETWORKPROTOCOL_FTP 00198 00199 #endif // QFTP_H