up:远端不存在目录校验功能测试完毕。

This commit is contained in:
2025-11-08 18:11:52 +08:00
parent bd1f0ffb8c
commit 910c1598f2
15 changed files with 777 additions and 37 deletions

View File

@@ -27,6 +27,7 @@ Control/cusTableWidget.cpp Control/cusTableWidget.h
Control/cpTableWidget.h Control/cpTableWidget.cpp
GuiUtil/Config.h GuiUtil/Config.cpp
../Res/qss.qrc Form/Loading.h Form/Loading.cpp
Control/Common.h Control/Common.cpp
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)

24
Gui/Control/Common.cpp Normal file
View File

@@ -0,0 +1,24 @@
#include "Common.h"
#include <QMessageBox>
Common::Common() : QWidget(nullptr)
{
}
int Common::GetAcceptThree(QWidget* parent, const QString& notice, const QString& title)
{
QMessageBox msgBox(parent);
msgBox.setWindowTitle(notice);
msgBox.setText(title);
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::YesToAll | QMessageBox::Cancel);
int result = msgBox.exec();
switch (result) {
case QMessageBox::Yes:
return 0;
case QMessageBox::YesToAll:
return 1;
default:
return -1;
}
}

16
Gui/Control/Common.h Normal file
View File

@@ -0,0 +1,16 @@
#ifndef COMMON_H
#define COMMON_H
#include <QWidget>
class Common : public QWidget
{
Q_OBJECT
public:
Common();
public:
static int GetAcceptThree(QWidget* parent, const QString& notice, const QString& title);
};
#endif // COMMON_H

View File

@@ -162,16 +162,25 @@ void CheckCondition::SetTasks(const QVector<TransTask>& tasks)
tasks_ = tasks;
}
InfoMsg CheckCondition::GetInfoMsg() const
QVector<TransTask> CheckCondition::GetTasks() const
{
return infoMsg_;
return tasks_;
}
void CheckCondition::recvFrame(QSharedPointer<FrameBuffer> frame)
{
InfoMsg info = infoUnpack<InfoMsg>(frame->data);
if (info.command == STRMSG_AC_ANSWER_FILE_EXIST) {
infoMsg_ = info;
for (auto& item : info.mapData) {
auto it =
std::find_if(tasks_.begin(), tasks_.end(), [&item](const TransTask& task) { return task.taskUUID == item.uuid; });
if (it == tasks_.end()) {
continue;
}
it->remoteCheckState = static_cast<FileCheckState>(item.state);
}
qInfo() << tr("检查结束......");
msg_ = info.command;
return;
@@ -209,9 +218,11 @@ void CheckCondition::run()
// 再检查远程文件是否存在
InfoMsg msg;
msg.command = STRMSG_AC_CHECK_FILE_EXIST;
for (const auto& task : tasks_) {
msg.mapData[task.taskUUID].mark = task.isUpload ? STRMSG_AC_UP : STRMSG_AC_DOWN;
msg.mapData[task.taskUUID].key = task.remotePath;
for (auto& task : tasks_) {
msg.mapData[task.taskUUID].uuid = task.taskUUID;
msg.mapData[task.taskUUID].command = task.isUpload ? STRMSG_AC_UP : STRMSG_AC_DOWN;
msg.mapData[task.taskUUID].path = task.remotePath;
}
auto f = clientCore_->GetBuffer(msg, FBT_MSGINFO_ASK, clientCore_->GetRemoteID());

View File

@@ -85,7 +85,7 @@ public:
public:
void SetClientCore(ClientCore* clientCore);
void SetTasks(const QVector<TransTask>& tasks);
InfoMsg GetInfoMsg() const;
QVector<TransTask> GetTasks() const;
Q_SIGNALS:
void sigCheckOver();
@@ -103,7 +103,6 @@ private:
bool isAlreadyInter_;
QVector<TransTask> tasks_;
ClientCore* clientCore_{};
InfoMsg infoMsg_;
};
#endif // TRANSFORM_H

View File

@@ -2,10 +2,12 @@
#include <Form/Loading.h>
#include <QLabel>
#include <QMessageBox>
#include <QScreen>
#include <QSplitter>
#include <QVBoxLayout>
#include <fversion.h>
#include "Control/Common.h"
#include "./ui_frelayGUI.h"
#include "Control/LogControl.h"
@@ -142,7 +144,6 @@ void frelayGUI::HandleTask(const QVector<TransTask>& tasks)
qCritical() << QString(tr("未连接到服务器。。。"));
return;
}
transform_->SetTasks(tasks);
// 检查文件
CheckCondition cond(this);
@@ -159,14 +160,63 @@ void frelayGUI::HandleTask(const QVector<TransTask>& tasks)
cond.start();
checking.exec();
auto msg = cond.GetInfoMsg();
for (auto& data : msg.mapData) {
if (data.state == static_cast<qint32>(FCS_NORMAL)) {
// 检查结果
auto reTasks = cond.GetTasks();
if (!CheckTaskResult(reTasks)) {
return;
}
transform_->SetTasks(reTasks);
transform_->exec();
}
bool frelayGUI::CheckTaskResult(QVector<TransTask>& tasks)
{
bool isAccept = false;
for (auto& task : tasks) {
if (task.localCheckState == FCS_NORMAL && task.remoteCheckState == FCS_NORMAL) {
continue;
}
if (task.isUpload) {
if (task.localCheckState != FCS_NORMAL) {
QMessageBox::information(this, tr("文件校验"), tr("本地文件校验失败,请检查文件是否存在:") + task.localPath);
return false;
}
if (task.remoteCheckState != FCS_NORMAL && !isAccept) {
auto msg = tr("远端不存在文件夹") + task.remotePath + ",需要自动创建吗?";
auto ret =Common::GetAcceptThree(this, "操作确认", msg);
if (ret == 0) {
continue;
}
else if (ret == 1) {
isAccept = true;
continue;
}
else {
return false;
}
}
} else {
if (task.localCheckState != FCS_NORMAL) {
auto msg = tr("本地不存在文件夹") + task.localPath + ",需要自动创建吗?";
auto ret =Common::GetAcceptThree(this, "操作确认", msg);
if (ret == 0) {
continue;
}
else if (ret == 1) {
isAccept = true;
continue;
}
else {
return false;
}
}
if (task.remoteCheckState != FCS_NORMAL) {
QMessageBox::information(this, tr("文件校验"), tr("远端文件校验失败,请检查文件是否存在:") + task.remotePath);
return false;
}
}
}
transform_->exec();
return true;
}
void frelayGUI::closeEvent(QCloseEvent* event)

View File

@@ -36,6 +36,7 @@ public:
public slots:
void HandleTask(const QVector<TransTask>& tasks);
bool CheckTaskResult(QVector<TransTask>& tasks);
protected:
void closeEvent(QCloseEvent* event) override;