/* (c) Copyright 2012 - 2018 Anton Sviridenko https://picapica.im 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, version 3. 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, see . */ #ifndef FILETRANSFERDIALOG_H #define FILETRANSFERDIALOG_H #include #include #include #include #include #include class FileTransferDialog : public QDialog { Q_OBJECT public: enum TransferDirection { SENDING, RECEIVING }; enum TransferStatus { WAITINGFORACCEPT, DENIED, SENDINGFILE, RECEIVINGFILE, PAUSED, CANCELLED, PEERDISCONNECTED, IOERROR, FINISHED }; explicit FileTransferDialog(QByteArray peer_id, QString filename, quint64 size, TransferDirection drct, QWidget *parent = 0); TransferDirection getTransferDirection() { return dir_; }; private: QLabel *lbFilename; QLabel *lbPeer; QLabel *lbProgressStatus; QLabel *lbTransferSpeed; QLabel *lbRemainingTime; QLabel *lbTransferStatus; QProgressBar *pgbar; QPushButton *leftbutton; QPushButton *rightbutton; QByteArray peer_id_; QString peer_name_; TransferDirection dir_; QString filename_; quint64 filesize_; double percents; quint64 progress_; quint64 prevprogress_; static QString bytestoHumanBase2(quint64 bytes); static QString bytestoHumanBase10(quint64 bytes); static QString timeLeft(quint64 seconds); QTimer *timer; signals: void pausedFile(QByteArray peer_id, FileTransferDialog *sender); void resumedFile(QByteArray peer_id, FileTransferDialog *sender); void cancelledFile(QByteArray peer_id, FileTransferDialog *sender); void acceptedFile(QByteArray peer_id); void deniedFile(QByteArray peer_id); public slots: void update(quint64 progress); void setTransferStatus(enum TransferStatus st); void pausedByPeer(); void resumedByPeer(); void cancelledByPeer(); void ioError(); void peerDisconnected(); private slots: void timeout(); void leftbuttonclick(); void rightbuttonclick(); }; #endif // FILETRANSFERDIALOG_H