Files
frelay/Gui/Form/Transform.cpp

110 lines
2.7 KiB
C++
Raw Normal View History

2025-06-16 23:41:35 +08:00
#include "Transform.h"
2025-06-18 13:18:31 +08:00
2025-06-16 20:06:49 +08:00
#include <QMessageBox>
#include "ui_Transform.h"
TransForm::TransForm(QWidget* parent) : QDialog(parent), ui(new Ui::TransForm)
{
ui->setupUi(this);
2025-06-18 14:53:56 +08:00
connect(this, &TransForm::sigProgress, this, &TransForm::setProgress);
connect(this, &TransForm::sigDone, this, &TransForm::handleDone);
connect(this, &TransForm::sigFailed, this, &TransForm::handleFailed);
connect(this, &TransForm::sigSetUi, this, &TransForm::handleUI);
2025-06-16 20:06:49 +08:00
}
TransForm::~TransForm()
{
delete ui;
}
void TransForm::SetClientCore(ClientCore* clientCore)
{
clientCore_ = clientCore;
2025-06-18 13:18:31 +08:00
fileTrans_ = new FileTrans(clientCore_);
}
void TransForm::SetTasks(const QVector<TransTask>& tasks)
{
tasks_ = tasks;
}
void TransForm::startTask()
{
for (auto& task : tasks_) {
2025-06-18 14:53:56 +08:00
sigSetUi(task);
if (task.isUpload) {
fileTrans_->ReqSendFile(task);
while (true) {
auto progress = fileTrans_->GetSendProgress();
if (progress < 0) {
sigFailed();
break;
}
if (progress >= 100.0) {
sigDone();
break;
}
sigProgress(progress);
QThread::msleep(10);
}
} else {
fileTrans_->ReqDownFile(task);
while (true) {
auto progress = fileTrans_->GetDownProgress();
if (progress < 0) {
sigFailed();
break;
}
if (progress >= 100.0) {
sigDone();
break;
}
sigProgress(progress);
QThread::msleep(10);
}
}
}
}
void TransForm::setProgress(double val)
{
ui->progressBar->setValue(val);
}
void TransForm::handleFailed()
{
ui->progressBar->setValue(0);
}
void TransForm::handleDone()
{
ui->progressBar->setValue(0);
}
void TransForm::handleUI(const TransTask& task)
{
if (task.isUpload) {
ui->edFrom->setText(task.localId);
ui->edTo->setText(task.remoteId);
ui->pedFrom->setPlainText(task.localPath);
ui->pedTo->setPlainText(task.remotePath);
}
else {
ui->edFrom->setText(task.localId);
ui->edTo->setText(task.remoteId);
ui->pedFrom->setPlainText(task.remotePath);
ui->pedTo->setPlainText(task.localPath);
2025-06-18 13:18:31 +08:00
}
}
void TransForm::showEvent(QShowEvent* event)
{
QDialog::showEvent(event);
2025-06-18 17:22:15 +08:00
workTh_ = new TranFromTh(this, this);
//fileTrans_->moveToThread(workTh_);
2025-06-18 14:53:56 +08:00
connect(workTh_, &QThread::finished, fileTrans_, &QObject::deleteLater);
workTh_->start();
2025-06-16 20:06:49 +08:00
}