func:添加右键上传下载。修正发送退出对方接收中断问题。
This commit is contained in:
@@ -289,6 +289,7 @@ void FileTrans::fbtCanDown(QSharedPointer<FrameBuffer> frame)
|
||||
downTask_->permission = info.permissions;
|
||||
downTask_->totalSize = info.size;
|
||||
downTask_->tranSize = 0;
|
||||
isSend_ = false;
|
||||
qDebug() << QString(tr("Can Down trans file:%1.")).arg(info.fromPath);
|
||||
}
|
||||
|
||||
@@ -339,6 +340,7 @@ void FileTrans::fbtCanSend(QSharedPointer<FrameBuffer> frame)
|
||||
{
|
||||
InfoMsg info = infoUnpack<InfoMsg>(frame->data);
|
||||
qInfo() << QString(tr("开始发送 %1 到 %2")).arg(info.fromPath, frame->fid);
|
||||
isSend_ = true;
|
||||
SendFile(sendTask_);
|
||||
}
|
||||
|
||||
@@ -353,7 +355,7 @@ void FileTrans::fbtTransFailed(QSharedPointer<FrameBuffer> frame)
|
||||
|
||||
void FileTrans::Interrupt(bool notic)
|
||||
{
|
||||
if (downTask_->state == TaskState::STATE_RUNNING) {
|
||||
if (!isSend_ && downTask_->state == TaskState::STATE_RUNNING) {
|
||||
qWarning() << QString(tr("传输文件 %1 中断。")).arg(downTask_->file.fileName());
|
||||
downTask_->file.close();
|
||||
|
||||
@@ -368,7 +370,7 @@ void FileTrans::Interrupt(bool notic)
|
||||
|
||||
downTask_->state = TaskState::STATE_NONE;
|
||||
}
|
||||
if (sendTask_->state == TaskState::STATE_RUNNING) {
|
||||
if (isSend_ && sendTask_->state == TaskState::STATE_RUNNING) {
|
||||
qWarning() << QString(tr("传输文件 %1 中断。")).arg(sendTask_->file.fileName());
|
||||
sendTask_->file.close();
|
||||
|
||||
|
||||
@@ -98,8 +98,9 @@ private:
|
||||
QMutex lMut_;
|
||||
QMutex rMut_;
|
||||
|
||||
ClientCore* clientCore_;
|
||||
QMutex sthMut_;
|
||||
bool isSend_{};
|
||||
ClientCore* clientCore_;
|
||||
QMap<QString, QThread*> upTasks_;
|
||||
};
|
||||
|
||||
|
||||
@@ -92,6 +92,9 @@ void Compare::InitControl()
|
||||
});
|
||||
|
||||
LoadTitles();
|
||||
|
||||
isResource_ = true;
|
||||
ui->tableWidget->setIsResource(isResource_);
|
||||
}
|
||||
|
||||
void Compare::InitTabWidget()
|
||||
|
||||
@@ -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_) {
|
||||
|
||||
@@ -57,6 +57,7 @@ private:
|
||||
void ShowFilterForm();
|
||||
void CopyFullPath();
|
||||
void ShowProperties();
|
||||
void UpDown();
|
||||
|
||||
public slots:
|
||||
void evtHome();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,16 +7,17 @@
|
||||
## 问题清单:
|
||||
|
||||
| 序号 | 类型 | 内容 | 说明 | 基于版本 | 完成版本 |
|
||||
| :--: | :--: | ------------------------------------------------------------ | :--: | :------: | :------: |
|
||||
| :--: | :--: | ------------------------------------------------------------ | :----: | :------: | :------: |
|
||||
| 40 | 问题 | 上传方完成后,接收端未接收完毕不能退出的问题。 | | 0.2.3 | 0.2.4 |
|
||||
| 39 | 优化 | Console端断联后应当自动退出。 | | 0.2.3 | 0.2.4 |
|
||||
| 38 | 功能 | PE中使用没有拖拽功能,文件管理器要有下载/上传按钮。 | | 0.2.3 | |
|
||||
| 37 | 问题 | 未连接对方客户端时,执行对照传输会崩溃。 | | 0.2.3 | |
|
||||
| 38 | 功能 | PE中使用没有拖拽功能,文件管理器要有下载/上传按钮。 | | 0.2.3 | 0.2.4 |
|
||||
| 37 | 问题 | 未连接对方客户端时,执行对照传输会崩溃。 | 待复现 | 0.2.3 | |
|
||||
| 36 | 功能 | 备份文件功能。 | | 0.2.3 | |
|
||||
| 35 | 功能 | 完善对照功能的界面其他内容。 | | 0.2.3 | |
|
||||
| 34 | 功能 | 支持删除、重命名、新建文件(夹)。 | | 0.2.3 | |
|
||||
| 33 | 功能 | 弹窗查看文件(夹)属性窗口。 | | 0.2.3 | |
|
||||
| 33 | 功能 | 弹窗查看文件(夹)属性窗口。 | | 0.2.3 | 0.2.4 |
|
||||
| 32 | 功能 | 路径选择显示驱动器。 | | 0.2.2 | 0.2.3 |
|
||||
| 31 | 功能 | Server端buffer大小判断,有过多无效数据则踢出该客户端。 | | 0.2.2 | |
|
||||
| 31 | 功能 | Server端buffer大小判断,有过多无效数据则踢出该客户端。 | | 0.2.2 | 0.2.4 |
|
||||
| 30 | 功能 | 传输界面的取消退出,缺失功能处理。 | | 0.2.2 | 0.2.3 |
|
||||
| 29 | 功能 | 根据接收端的速率限制发送端的速度。 | | 0.2.2 | 0.2.3 |
|
||||
| 28 | 变更 | 语言简体中文。 | | 0.2.2 | 0.2.3 |
|
||||
|
||||
Reference in New Issue
Block a user