up:远端不存在目录校验功能测试完毕。
This commit is contained in:
@@ -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
24
Gui/Control/Common.cpp
Normal 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
16
Gui/Control/Common.h
Normal 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
|
||||
@@ -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());
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -36,6 +36,7 @@ public:
|
||||
|
||||
public slots:
|
||||
void HandleTask(const QVector<TransTask>& tasks);
|
||||
bool CheckTaskResult(QVector<TransTask>& tasks);
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent* event) override;
|
||||
|
||||
Reference in New Issue
Block a user