1 | #ifndef FILETRANSDLG_H
|
---|
2 | #define FILETRANSDLG_H
|
---|
3 |
|
---|
4 | #include"ui_filetrans.h"
|
---|
5 | #include"im.h"
|
---|
6 | #include"s5b.h"
|
---|
7 |
|
---|
8 | #if QT_VERSION < 0x030200
|
---|
9 | typedef long int Q_LLONG;
|
---|
10 | #endif
|
---|
11 |
|
---|
12 | class PsiCon;
|
---|
13 | class PsiAccount;
|
---|
14 | namespace XMPP
|
---|
15 | {
|
---|
16 | class FileTransfer;
|
---|
17 | }
|
---|
18 | using namespace XMPP;
|
---|
19 |
|
---|
20 | class FileTransferHandler : public QObject
|
---|
21 | {
|
---|
22 | Q_OBJECT
|
---|
23 | public:
|
---|
24 | enum { ErrReject, ErrTransfer, ErrFile };
|
---|
25 | enum { Sending, Receiving };
|
---|
26 | FileTransferHandler(PsiAccount *pa, FileTransfer *ft=0);
|
---|
27 | ~FileTransferHandler();
|
---|
28 |
|
---|
29 | PsiAccount *account() const;
|
---|
30 | int mode() const;
|
---|
31 | Jid peer() const;
|
---|
32 | QString fileName() const;
|
---|
33 | Q_LLONG fileSize() const;
|
---|
34 | QString description() const;
|
---|
35 | Q_LLONG offset() const;
|
---|
36 | int totalSteps() const;
|
---|
37 | bool resumeSupported() const;
|
---|
38 | QString saveName() const;
|
---|
39 |
|
---|
40 | void send(const Jid &to, const QString &fname, const QString &desc);
|
---|
41 | void accept(const QString &saveName, const QString &fileName, Q_LLONG offset=0);
|
---|
42 |
|
---|
43 | signals:
|
---|
44 | void accepted();
|
---|
45 | void statusMessage(const QString &s);
|
---|
46 | void connected();
|
---|
47 | void progress(int p, Q_LLONG sent);
|
---|
48 | void error(int, int, const QString &s);
|
---|
49 |
|
---|
50 | private slots:
|
---|
51 | // s5b status
|
---|
52 | void s5b_proxyQuery();
|
---|
53 | void s5b_proxyResult(bool b);
|
---|
54 | void s5b_requesting();
|
---|
55 | void s5b_accepted();
|
---|
56 | void s5b_tryingHosts(const StreamHostList &hosts);
|
---|
57 | void s5b_proxyConnect();
|
---|
58 | void s5b_waitingForActivation();
|
---|
59 |
|
---|
60 | // ft
|
---|
61 | void ft_accepted();
|
---|
62 | void ft_connected();
|
---|
63 | void ft_readyRead(const QByteArray &);
|
---|
64 | void ft_bytesWritten(int);
|
---|
65 | void ft_error(int);
|
---|
66 | void trySend();
|
---|
67 | void doFinish();
|
---|
68 |
|
---|
69 | private:
|
---|
70 | class Private;
|
---|
71 | Private *d;
|
---|
72 |
|
---|
73 | void mapSignals();
|
---|
74 | };
|
---|
75 |
|
---|
76 | class FileRequestDlg : public FileTransUI
|
---|
77 | {
|
---|
78 | Q_OBJECT
|
---|
79 | public:
|
---|
80 | FileRequestDlg(const Jid &j, PsiCon *psi, PsiAccount *pa);
|
---|
81 | FileRequestDlg(const Jid &j, PsiCon *psi, PsiAccount *pa, const QStringList& files);
|
---|
82 | FileRequestDlg(const QDateTime &ts, FileTransfer *ft, PsiAccount *pa);
|
---|
83 | ~FileRequestDlg();
|
---|
84 |
|
---|
85 | protected:
|
---|
86 | void keyPressEvent(QKeyEvent *);
|
---|
87 |
|
---|
88 | public slots:
|
---|
89 | void done(int r);
|
---|
90 |
|
---|
91 | private slots:
|
---|
92 | void updateIdentity(PsiAccount *);
|
---|
93 | void pa_disconnected();
|
---|
94 | void chooseFile();
|
---|
95 | void doStart();
|
---|
96 | void ft_accepted();
|
---|
97 | void ft_statusMessage(const QString &s);
|
---|
98 | void ft_connected();
|
---|
99 | void ft_error(int, int, const QString &);
|
---|
100 | void t_timeout();
|
---|
101 |
|
---|
102 | private:
|
---|
103 | class Private;
|
---|
104 | Private *d;
|
---|
105 |
|
---|
106 | void blockWidgets();
|
---|
107 | void unblockWidgets();
|
---|
108 | };
|
---|
109 |
|
---|
110 | class FileTransDlg : public QDialog
|
---|
111 | {
|
---|
112 | Q_OBJECT
|
---|
113 | public:
|
---|
114 | FileTransDlg(PsiCon *);
|
---|
115 | ~FileTransDlg();
|
---|
116 |
|
---|
117 | int addItem(const QString &filename, Q_LLONG size, const QString &peer, bool sending);
|
---|
118 | void setProgress(int id, int step, int total, Q_LLONG sent, int bytesPerSecond, bool updateAll=false);
|
---|
119 | void setError(int id, const QString &reason);
|
---|
120 | void removeItem(int id);
|
---|
121 |
|
---|
122 | void takeTransfer(FileTransferHandler *h, int p, Q_LLONG sent);
|
---|
123 | void killTransfers(PsiAccount *pa);
|
---|
124 |
|
---|
125 | private slots:
|
---|
126 | void clearFinished();
|
---|
127 | void ft_progress(int p, Q_LLONG sent);
|
---|
128 | void ft_error(int, int, const QString &s);
|
---|
129 | void updateItems();
|
---|
130 |
|
---|
131 | void itemCancel(int);
|
---|
132 | void itemOpenDest(int);
|
---|
133 | void itemClear(int);
|
---|
134 |
|
---|
135 | private:
|
---|
136 | class Private;
|
---|
137 | Private *d;
|
---|
138 | };
|
---|
139 |
|
---|
140 | #endif
|
---|