26 #ifndef FILETRANSFER_H
27 #define FILETRANSFER_H
30 #include <QHostAddress>
31 #include <QStringList>
32 #include <QSharedData>
38 namespace qutim_sdk_0_3
42 class LocalizedString;
43 class FileTransferFactory;
44 class FileTransferManager;
45 class FileTransferManagerPrivate;
46 class FileTransferJobPrivate;
47 class FileTransferInfoPrivate;
48 class FileTransferObserverPrivate;
49 class FileTransferFactoryPrivate;
50 class FileTransferManagerPrivate;
61 QString fileName()
const;
62 void setFileName(
const QString &fileName);
63 qint64 fileSize()
const;
64 void setFileSize(qint64 fileSize);
66 QSharedDataPointer<FileTransferInfoPrivate> d_ptr;
74 Q_PROPERTY(QString title READ title NOTIFY titleChanged)
75 Q_PROPERTY(QString fileName READ fileName NOTIFY fileNameChanged)
76 Q_PROPERTY(
int filesCount READ filesCount)
77 Q_PROPERTY(
int currentIndex READ currentIndex NOTIFY currentIndexChanged)
78 Q_PROPERTY(qint64 totalSize READ totalSize NOTIFY totalSizeChanged)
79 Q_PROPERTY(qint64 fileSize READ fileSize NOTIFY fileSizeChanged)
80 Q_PROPERTY(qint64 progress READ progress NOTIFY progressChanged)
81 Q_PROPERTY(qutim_sdk_0_3::
FileTransferJob::State state READ state NOTIFY stateChanged)
82 Q_PROPERTY(qutim_sdk_0_3::
ChatUnit *chatUnit READ chatUnit)
86 enum State { Initiation, Started, Finished, Error };
92 void send(
const QUrl &url,
const QString &title = QString());
93 void send(
const QDir &baseDir,
const QStringList &files,
const QString &title);
95 Direction direction()
const;
96 QString title()
const;
97 QString fileName()
const;
101 int filesCount()
const;
102 int currentIndex()
const;
103 qint64 fileSize()
const;
104 qint64 progress()
const;
105 qint64 totalSize()
const;
108 ErrorType error()
const;
117 virtual void doSend() = 0;
118 virtual void doStop() = 0;
119 virtual void doReceive() = 0;
121 void init(
int filesCount, qint64 totalSize,
const QString &title);
123 QIODevice *setCurrentIndex(
int index);
124 void setFileProgress(qint64 fileProgress);
125 void setError(ErrorType error);
127 void setState(State state);
130 virtual void virtual_hook(
int id,
void *data);
132 #if !defined(Q_MOC_RUN) && !defined(DOXYGEN_SHOULD_SKIP_THIS) && !defined(IN_IDE_PARSER)
135 void titleChanged(
const QString &);
136 void fileNameChanged(
const QString &);
137 void fileSizeChanged(qint64);
138 void progressChanged(qint64);
139 void totalSizeChanged(qint64);
140 void currentIndexChanged(
int);
149 QScopedPointer<FileTransferJobPrivate> d_ptr;
156 Q_PROPERTY(
bool ability READ checkAbility NOTIFY abilityChanged)
161 bool checkAbility() const;
164 void abilityChanged(
bool);
166 Q_PRIVATE_SLOT(d_func(),
void _q_clearObserverData(QObject *unit));
167 QScopedPointer<FileTransferObserverPrivate> d_ptr;
177 CanSendMultiple = 0x01
179 Q_DECLARE_FLAGS(Capabilities, Capability)
182 Capabilities capabilities() const;
186 virtual
bool checkAbility(
ChatUnit *unit) = 0;
187 virtual
bool startObserve(
ChatUnit *unit) = 0;
188 virtual
bool stopObserve(
ChatUnit *unit) = 0;
191 void changeAvailability(
ChatUnit *unit,
bool canSend);
193 void setIcon(const QIcon &icon);
194 virtual
void virtual_hook(
int id,
void *data);
195 QScopedPointer<FileTransferFactoryPrivate> d_ptr;
202 Q_CLASSINFO(
"Service",
"FileTransferManager")
207 static bool checkAbility(
ChatUnit *unit);
211 const QString &title = QString(),
214 static QList<FileTransferFactory*> factories();
219 static void updateFactories(
const QStringList &factoryClassNames);
223 virtual void virtual_hook(
int id,
void *data);
224 QScopedPointer<FileTransferManagerPrivate> d_ptr;
229 #endif // FILETRANSFER_H