func:添加右键上传下载。修正发送退出对方接收中断问题。

This commit is contained in:
2025-11-15 21:54:46 +08:00
parent 7a69db774d
commit d73ddf7341
8 changed files with 109 additions and 47 deletions

View File

@@ -92,6 +92,9 @@ void Compare::InitControl()
});
LoadTitles();
isResource_ = true;
ui->tableWidget->setIsResource(isResource_);
}
void Compare::InitTabWidget()

View File

@@ -9,10 +9,11 @@
#include <QHeaderView>
#include <QLineEdit>
#include <QListWidget>
#include <QMessageBox>
#include <QTableWidgetItem>
#include <RemoteFile.h>
#include "Form/FileInfoForm.h"
#include "Form/FileInfoForm.h"
#include "GuiUtil/Public.h"
#include "ui_FileControl.h"
@@ -56,6 +57,12 @@ void FileManager::SetModeStr(const QString& modeStr, int type, ClientCore* clien
evtHome();
evtFile();
}
if (isRemote_) {
menu_->addAction(tr("下载"), this, &FileManager::UpDown);
} else {
menu_->addAction(tr("上传"), this, &FileManager::UpDown);
}
}
void FileManager::InitControl()
@@ -471,6 +478,49 @@ void FileManager::ShowProperties()
info->exec();
}
void FileManager::UpDown()
{
auto datas = ui->tableWidget->selectedItems();
if (datas.isEmpty()) {
return;
}
if (datas.size() % 5 != 0) {
QMessageBox::information(this, tr("提示"), tr("请选择完整的行。"));
return;
}
QVector<TransTask> tasks;
for (int i = 0; i < (datas.size() / 5); ++i) {
if (datas[i * 5 + 3]->text() != "File") {
qDebug() << QString(tr("暂不支持传输文件夹:%1")).arg(datas[i * 5 + 3]->text());
continue;
}
/*
要注意这一块的逻辑,本软件的所讲的【上传】【下载】都是针对本地。
这里的任务拼接和 DropEvent 有所不同,
DropEvent 是接收方负责拼接任务,但是这里是发送方拼接任务。
所以这里的拼接逻辑需要注意。
*/
TransTask task;
task.taskUUID = Util::UUID();
task.isUpload = !isRemote_;
task.localId = cliCore_->GetOwnID();
task.remoteId = cliCore_->GetRemoteID();
if (isRemote_) {
task.remotePath = Util::Join(GlobalData::Ins()->GetRemoteRoot(), datas[i * 5 + 1]->text());
task.localPath = GlobalData::Ins()->GetLocalRoot();
} else {
task.remotePath = GlobalData::Ins()->GetRemoteRoot();
task.localPath = Util::Join(GlobalData::Ins()->GetLocalRoot(), datas[i * 5 + 1]->text());
}
tasks.push_back(task);
}
if (tasks.isEmpty()) {
return;
}
emit sigSendTasks(tasks);
}
QString FileManager::GetRoot()
{
if (isRemote_) {

View File

@@ -57,6 +57,7 @@ private:
void ShowFilterForm();
void CopyFullPath();
void ShowProperties();
void UpDown();
public slots:
void evtHome();

View File

@@ -52,7 +52,7 @@ void CustomTableWidget::dropEvent(QDropEvent* event)
for (int i = 0; i < (parseData.size() / 5); ++i) {
if (parseData[i * 5 + 3] != "File") {
qDebug() << QString(tr("Not Handle %1")).arg(parseData[i * 5 + 1]);
qDebug() << QString(tr("暂不支持传输文件夹:%1")).arg(parseData[i * 5 + 1]);
continue;
}
TransTask task;
@@ -69,6 +69,10 @@ void CustomTableWidget::dropEvent(QDropEvent* event)
}
tasks.push_back(task);
}
if (tasks.empty()) {
return;
}
emit sigTasks(tasks);
}

View File

@@ -105,4 +105,4 @@ private:
ClientCore* clientCore_{};
};
#endif // TRANSFORM_H
#endif // TRANSFORM_H