-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtransferdialog.cpp
51 lines (38 loc) · 1.37 KB
/
transferdialog.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "transferdialog.h"
#include "connection.h"
#include <QLabel>
#include <QProgressBar>
#include <QVBoxLayout>
#include <QSslSocket>
#include <QPushButton>
TransferDialog::TransferDialog(QWidget *parent, Connection *transfer, qint64 totalSize) : QDialog(parent)
{
setAttribute(Qt::WA_DeleteOnClose);
m_progressBar = new QProgressBar;
m_progressBar->setMaximum(totalSize / 1024);
m_progressLabel = new QLabel;
QPushButton *cancelButton = new QPushButton("Cancel");
setLayout(new QVBoxLayout);
layout()->addWidget(m_progressBar);
layout()->addWidget(m_progressLabel);
layout()->addWidget(cancelButton);
connect(transfer, &Connection::destroyed, this, &TransferDialog::close);
connect(transfer, &Connection::bytesTransferred, this, &TransferDialog::onBytesTransferred);
connect(transfer->socket(), &QSslSocket::disconnected, this, &TransferDialog::close);
connect(cancelButton, &QPushButton::clicked, this, &TransferDialog::onCancel);
show();
}
void TransferDialog::onBytesTransferred(qint64 bytes)
{
bytes /= 1024;
m_progressBar->setValue(m_progressBar->value() + bytes);
m_progressLabel->setText(QString("%1 kb / %2 kb").arg(m_progressBar->value(), m_progressBar->maximum()));
}
void TransferDialog::onCancel()
{
if (!m_connection) {
close();
return;
}
m_connection->socket()->close();
}