/* (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, either version 3 of the License, or (at your option) 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, 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