KVIrc 5.2.4
Developer APIs
KviFileTransfer.h
Go to the documentation of this file.
1#ifndef _KVI_FILETRANSFER_H_
2#define _KVI_FILETRANSFER_H_
3//=============================================================================
4//
5// File : KviFileTransfer.h
6// Creation date : Mon Apr 21 22:14:31 2003 GMT by Szymon Stefanek
7//
8// This file is part of the KVIrc IRC client distribution
9// Copyright (C) 2003-2010 Szymon Stefanek (pragma at kvirc dot net)
10//
11// This program is FREE software. You can redistribute it and/or
12// modify it under the terms of the GNU General Public License
13// as published by the Free Software Foundation; either version 2
14// of the License, or (at your option) any later version.
15//
16// This program is distributed in the HOPE that it will be USEFUL,
17// but WITHOUT ANY WARRANTY; without even the implied warranty of
18// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19// See the GNU General Public License for more details.
20//
21// You should have received a copy of the GNU General Public License
22// along with this program. If not, write to the Free Software Foundation,
23// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24//
25//=============================================================================
26
27#include "kvi_settings.h"
28#include "KviTalTableWidget.h"
29
30#include <QObject>
31#include <vector>
32
33class KviFileTransfer;
34class KviWindow;
35class QMenu;
36class QPainter;
37
38// This is for the external extension
39#define KVI_FILE_TRANSFER_WINDOW_EXTENSION_NAME "File transfer extension"
40
41class KVIRC_API KviFileTransferManager : public QObject
42{
43 friend class KviApplication;
44 friend class KviFileTransfer;
45 friend class FileTransferWindow; // FIXME: This is in a module!
46 Q_OBJECT
47public:
50
51protected:
52 std::vector<KviFileTransfer *> m_pTransferList;
53 KviWindow * m_pTransferWindow = nullptr;
54
55protected:
56 static void cleanup();
57 void registerTransfer(KviFileTransfer * t);
58 void unregisterTransfer(KviFileTransfer * t);
59 void setTransferWindow(KviWindow * wnd) { m_pTransferWindow = wnd; }
60public:
61 // might be zero!
62 KviWindow * transferWindow() const { return m_pTransferWindow; }
63 static KviFileTransferManager * instance();
64 std::vector<KviFileTransfer *> transferList() const { return m_pTransferList; }
65 void invokeTransferWindow(bool bCreateMinimized = false, bool bNoRaise = false);
66 void killAllTransfers();
67 void killTerminatedTransfers();
68signals:
71};
72
73#define COLUMN_TRANSFERTYPE 0
74#define COLUMN_FILEINFO 1
75#define COLUMN_PROGRESS 2
76
77class KVIRC_API KviFileTransfer : public QObject
78{
79 Q_OBJECT
80public:
83
84protected:
85 int m_iId;
86 KviTalTableWidgetItemEx * m_pDisplayItem = nullptr;
87
88public:
89 // This is called by KviFileTransferItem at any time
90 void setDisplayItem(KviTalTableWidgetItemEx * i) { m_pDisplayItem = i; }
91 int id() const { return m_iId; }
92 // this is just a convenience function : it's equivalent to !active()
93 bool terminated();
94 // This may be used to invoke the transfer window
95 void invokeTransferWindow(bool bCreateMinimized = false, bool bNoRaise = false);
97 // this returns the pointer to the transfer window : may be 0!
98 KviWindow * transferWindow() const { return manager()->transferWindow(); }
99 // this returns transferWindow() if not 0, otherwise the application's active window
100 KviWindow * outputWindow();
101
102 // this may be called by the transfers to update the display when the state changes
103 void displayUpdate();
104
105 // this must be implemented by the transfer
106 virtual bool active() = 0;
107 virtual void displayPaint(QPainter * p, int column, QRect rect) = 0;
108 virtual QString tipText();
109 virtual QString localFileName();
110 virtual QString retryCommand();
111 virtual int displayHeight(int iLineSpacing);
112 virtual void fillContextPopup(QMenu * m) = 0;
113 virtual void die();
114};
115
116#endif
m_iId
Definition KvsObject_buttonGroup.cpp:62
Definition FileTransferWindow.h:95
Definition KviApplication.h:106
Definition KviFileTransfer.h:42
std::vector< KviFileTransfer * > m_pTransferList
Definition KviFileTransfer.h:52
void setTransferWindow(KviWindow *wnd)
Definition KviFileTransfer.h:59
KviWindow * transferWindow() const
Definition KviFileTransfer.h:62
void transferUnregistering(KviFileTransfer *t)
static KviFileTransferManager * instance()
Definition KviFileTransfer.cpp:48
void transferRegistered(KviFileTransfer *t)
std::vector< KviFileTransfer * > transferList() const
Definition KviFileTransfer.h:64
Definition KviFileTransfer.h:78
void setDisplayItem(KviTalTableWidgetItemEx *i)
Definition KviFileTransfer.h:90
int id() const
Definition KviFileTransfer.h:91
virtual void displayPaint(QPainter *p, int column, QRect rect)=0
virtual bool active()=0
KviFileTransferManager * manager() const
Definition KviFileTransfer.h:96
virtual void fillContextPopup(QMenu *m)=0
int m_iId
Definition KviFileTransfer.h:85
KviWindow * transferWindow() const
Definition KviFileTransfer.h:98
Definition KviTalTableWidget.h:67
Base class for all windows in KVIrc.
Definition KviWindow.h:75
#define m
Definition detector.cpp:78
#define i
Definition detector.cpp:74
#define t
Definition detector.cpp:85
#define p
Definition detector.cpp:81
This file contains compile time settings.
#define KVIRC_API
Definition kvi_settings.h:127