/*
(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