Files
frelay/Gui/Form/Transform.cpp

149 lines
3.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
2025-06-20 09:45:39 +08:00
setWindowTitle(tr("TransProgress"));
ui->edFrom->setReadOnly(true);
ui->edTo->setReadOnly(true);
ui->pedFrom->setReadOnly(true);
ui->pedTo->setReadOnly(true);
ui->edTask->setReadOnly(true);
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-20 09:45:39 +08:00
connect(this, &TransForm::sigTaskNum, this, &TransForm::showNum);
2025-06-16 20:06:49 +08:00
}
TransForm::~TransForm()
{
2025-06-19 17:01:25 +08:00
exis_ = true;
QThread::msleep(10);
2025-06-16 20:06:49 +08:00
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;
2025-06-19 22:07:12 +08:00
exis_ = false;
2025-06-18 13:18:31 +08:00
}
void TransForm::startTask()
{
2025-06-20 09:45:39 +08:00
qInfo() << "TransForm::startTask enter....";
curTaskNum_ = 0;
2025-06-18 13:18:31 +08:00
for (auto& task : tasks_) {
2025-06-20 09:45:39 +08:00
QString str = QString(tr("%1/%2")).arg(curTaskNum_).arg(tasks_.size());
emit sigTaskNum(str);
emit sigSetUi(task);
2025-06-18 14:53:56 +08:00
if (task.isUpload) {
fileTrans_->ReqSendFile(task);
while (true) {
2025-06-19 17:01:25 +08:00
if (exis_) {
return;
}
2025-06-18 14:53:56 +08:00
auto progress = fileTrans_->GetSendProgress();
if (progress < 0) {
emit sigFailed();
2025-06-18 14:53:56 +08:00
break;
}
if (progress >= 100.0) {
emit sigDone();
2025-06-18 14:53:56 +08:00
break;
}
emit sigProgress(progress);
2025-06-18 14:53:56 +08:00
QThread::msleep(10);
}
} else {
fileTrans_->ReqDownFile(task);
while (true) {
2025-06-19 17:01:25 +08:00
if (exis_) {
return;
}
2025-06-18 14:53:56 +08:00
auto progress = fileTrans_->GetDownProgress();
if (progress < 0) {
emit sigFailed();
2025-06-18 14:53:56 +08:00
break;
}
if (progress >= 100.0) {
emit sigDone();
2025-06-18 14:53:56 +08:00
break;
}
emit sigProgress(progress);
2025-06-18 14:53:56 +08:00
QThread::msleep(10);
}
}
2025-06-20 09:45:39 +08:00
++curTaskNum_;
str = QString(tr("%1/%2")).arg(curTaskNum_).arg(tasks_.size());
emit sigTaskNum(str);
2025-06-18 14:53:56 +08:00
}
2025-06-19 22:07:12 +08:00
tasks_.clear();
2025-06-20 09:45:39 +08:00
qInfo() << "TransForm::startTask exit....";
2025-06-18 14:53:56 +08:00
}
void TransForm::setProgress(double val)
{
ui->progressBar->setValue(val);
}
void TransForm::handleFailed()
{
ui->progressBar->setValue(0);
}
void TransForm::handleDone()
{
2025-06-19 22:31:34 +08:00
ui->progressBar->setValue(100);
2025-06-18 14:53:56 +08:00
}
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);
2025-06-19 17:01:25 +08:00
} else {
2025-06-18 14:53:56 +08:00
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
}
}
2025-06-20 09:45:39 +08:00
void TransForm::showNum(const QString& data)
{
ui->edTask->setText(data);
}
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);
2025-06-20 09:45:39 +08:00
// fileTrans_->moveToThread(workTh_);
2025-06-19 22:07:12 +08:00
connect(workTh_, &QThread::finished, workTh_, &QObject::deleteLater);
2025-06-18 14:53:56 +08:00
workTh_->start();
2025-06-16 20:06:49 +08:00
}
2025-06-19 22:07:12 +08:00
void TransForm::closeEvent(QCloseEvent* event)
{
exis_ = true;
2025-06-20 09:45:39 +08:00
QDialog::closeEvent(event);
2025-06-19 22:07:12 +08:00
}