添加文件夹传输进度更新。
This commit is contained in:
@@ -142,6 +142,10 @@ void ClientCore::handleAsk(QSharedPointer<FrameBuffer> frame)
|
||||
}
|
||||
return;
|
||||
}
|
||||
// 这个请求的处理可能是耗时的,需要开线程处理。
|
||||
if (msg.command == STRMSG_AC_ALL_DIRFILES) {
|
||||
msg.command = STRMSG_AC_ANSWER_ALL_DIRFILES;
|
||||
}
|
||||
// 未知信息
|
||||
qWarning() << QString(tr("未知询问信息类型:%1")).arg(msg.command);
|
||||
}
|
||||
@@ -413,4 +417,97 @@ void WaitThread::interrupCheck()
|
||||
isAlreadyInter_ = true;
|
||||
emit sigCheckOver();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WaitOper::WaitOper(QObject* parent) : WaitThread(parent)
|
||||
{
|
||||
}
|
||||
|
||||
void WaitOper::run()
|
||||
{
|
||||
isAlreadyInter_ = false;
|
||||
infoMsg_.msg = STR_NONE;
|
||||
isRun_ = true;
|
||||
recvMsg_ = false;
|
||||
|
||||
InfoMsg msg;
|
||||
msg.command = sendStrType_;
|
||||
msg.fromPath = stra_;
|
||||
msg.toPath = strb_;
|
||||
msg.type = type_;
|
||||
|
||||
auto f = cli_->GetBuffer<InfoMsg>(msg, FBT_MSGINFO_ASK, cli_->GetRemoteID());
|
||||
if (!ClientCore::syncInvoke(cli_, f)) {
|
||||
auto errMsg = QString(tr("向%1发送%2请求失败。")).arg(cli_->GetRemoteID()).arg(sendStrType_);
|
||||
emit sigCheckOver();
|
||||
qCritical() << errMsg;
|
||||
return;
|
||||
}
|
||||
while (isRun_) {
|
||||
QThread::msleep(1);
|
||||
if (isAlreadyInter_) {
|
||||
qInfo() << tr("线程中断文件操作等待......");
|
||||
return;
|
||||
}
|
||||
if (!recvMsg_) {
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
isAlreadyInter_ = true;
|
||||
emit sigCheckOver();
|
||||
auto n = QString(tr("向%1的请求%2处理结束。")).arg(cli_->GetRemoteID()).arg(sendStrType_);
|
||||
qInfo() << n;
|
||||
}
|
||||
|
||||
void WaitOper::SetType(const QString& sendType, const QString& ansType)
|
||||
{
|
||||
sendStrType_ = sendType;
|
||||
ansStrType_ = ansType;
|
||||
}
|
||||
|
||||
void WaitOper::SetPath(const QString& stra, const QString& strb, const QString& type)
|
||||
{
|
||||
stra_ = stra;
|
||||
strb_ = strb;
|
||||
type_ = type;
|
||||
}
|
||||
|
||||
InfoMsg WaitOper::GetMsg() const
|
||||
{
|
||||
return infoMsg_;
|
||||
}
|
||||
|
||||
void WaitOper::interrupCheck()
|
||||
{
|
||||
qWarning() << QString(tr("中断请求处理%1......")).arg(sendStrType_);
|
||||
WaitThread::interrupCheck();
|
||||
}
|
||||
|
||||
void WaitOper::recvFrame(QSharedPointer<FrameBuffer> frame)
|
||||
{
|
||||
InfoMsg info = infoUnpack<InfoMsg>(frame->data);
|
||||
if (info.command == ansStrType_) {
|
||||
infoMsg_ = info;
|
||||
recvMsg_ = true;
|
||||
return;
|
||||
}
|
||||
auto n = tr("收到未知Oper的回复信息:") + info.command;
|
||||
qInfo() << n;
|
||||
}
|
||||
|
||||
WaitOperOwn::WaitOperOwn(QObject* parent) : WaitThread(parent)
|
||||
{
|
||||
}
|
||||
|
||||
void WaitOperOwn::run()
|
||||
{
|
||||
if (func_) {
|
||||
func_();
|
||||
}
|
||||
emit sigOver();
|
||||
}
|
||||
|
||||
void WaitOperOwn::recvFrame(QSharedPointer<FrameBuffer> frame)
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user