#ifndef _KVI_FILETRANSFER_H_ #define _KVI_FILETRANSFER_H_ //============================================================================= // // File : kvi_filetransfer.h // Creation date : Mon Apr 21 22:14:31 2003 GMT by Szymon Stefanek // // This file is part of the KVirc irc client distribution // Copyright (C) 2003 Szymon Stefanek (pragma at kvirc dot net) // // This program is FREE software. You can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your opinion) any later version. // // This program is distributed in the HOPE that it will be USEFUL, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, write to the Free Software Foundation, // Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // //============================================================================= #include "kvi_settings.h" #include #include "kvi_pointerlist.h" #include "kvi_tal_listview.h" class KviFileTransfer; class KviWindow; class KviTalPopupMenu; class TQPainter; // This is for the external extension #define KVI_FILE_TRANSFER_WINDOW_EXTENSION_NAME "File transfer extension" class KVIRC_API KviFileTransferManager : public TQObject { friend class KviApp; friend class KviFileTransfer; friend class KviFileTransferWindow; Q_OBJECT public: KviFileTransferManager(); ~KviFileTransferManager(); protected: KviPointerList * m_pTransferList; KviWindow * m_pTransferWindow; protected: static void cleanup(); void registerTransfer(KviFileTransfer * t); void unregisterTransfer(KviFileTransfer * t); void setTransferWindow(KviWindow * wnd){ m_pTransferWindow = wnd; }; public: // might be zero! KviWindow * transferWindow(){ return m_pTransferWindow; }; static KviFileTransferManager * instance(); KviPointerList * transferList(){ return m_pTransferList; }; void invokeTransferWindow(KviWindow * pWnd = 0,bool bCreateMinimized = false,bool bNoRaise = false); void killAllTransfers(); void killTerminatedTransfers(); signals: void transferRegistered(KviFileTransfer *t); void transferUnregistering(KviFileTransfer *t); }; #define COLUMN_TRANSFERTYPE 0 #define COLUMN_FILEINFO 1 #define COLUMN_PROGRESS 2 class KVIRC_API KviFileTransfer : public TQObject { Q_OBJECT public: KviFileTransfer(); ~KviFileTransfer(); protected: int m_iId; KviTalListViewItem * m_pDisplayItem; public: // This is called by KviFileTransferItem at any time void setDisplayItem(KviTalListViewItem * i){ m_pDisplayItem = i; }; int id(){ return m_iId; }; // this is just a convenience function : it's equivalent to !active() bool terminated(); // This may be used to invoke the transfer window void invokeTransferWindow(KviWindow * pWnd = 0,bool bCreateMinimized = false,bool bNoRaise = false); KviFileTransferManager * manager(){ return KviFileTransferManager::instance(); }; // this returns the pointer to the transfer window : may be 0! KviWindow * transferWindow(){ return manager()->transferWindow(); }; // this returns transferWindow() if not 0 , otherwise the application's active window KviWindow * outputWindow(); // this may be called by the transfers to update the display when the state changes void displayUpdate(); // this must be implemented by the transfer virtual bool active() = 0; virtual void displayPaint(TQPainter * p,int column,int width,int height) = 0; virtual TQString tipText(); virtual TQString localFileName(); virtual TQString retryCommand(); virtual int displayHeight(int iLineSpacing); virtual void fillContextPopup(KviTalPopupMenu * m,int column) = 0; virtual void die() = 0; }; #endif //! _KVI_FILETRANSFER_H_