diff --git a/ClientCore/ClientCore.cpp b/ClientCore/ClientCore.cpp index 58249be..d9d1aa7 100644 --- a/ClientCore/ClientCore.cpp +++ b/ClientCore/ClientCore.cpp @@ -4,10 +4,6 @@ ClientCore::ClientCore(QObject* parent) : QObject(parent) { - qRegisterMetaType>("QSharedPointer"); - qRegisterMetaType("InfoClientVec"); - qRegisterMetaType("DirFileInfoVec"); - socket_ = new QTcpSocket(this); connect(socket_, &QTcpSocket::readyRead, this, &ClientCore::onReadyRead); connect(socket_, &QTcpSocket::disconnected, this, &ClientCore::onDisconnected); diff --git a/Gui/Control/ConnectControl.cpp b/Gui/Control/ConnectControl.cpp index 36a06b2..6223c48 100644 --- a/Gui/Control/ConnectControl.cpp +++ b/Gui/Control/ConnectControl.cpp @@ -95,6 +95,12 @@ void Connecter::setState(ConnectState cs) } } +void Connecter::Disconnect() +{ + sockWorker_->quit(); + qWarning() << QString(tr("Disconnected...")); +} + void Connecter::RefreshClient() { InfoMsg info; @@ -138,6 +144,7 @@ void Connecter::InitControl() ui->listView->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->listView, &QListView::customContextMenuRequested, this, &Connecter::ShowContextMenu); + connect(ui->btnDisconnect, &QPushButton::clicked, this, &Connecter::Disconnect); menu_ = new QMenu(this); QAction* acUseThis = menu_->addAction(tr("UseThis")); diff --git a/Gui/Control/ConnectControl.h b/Gui/Control/ConnectControl.h index ae0f84f..13b92f5 100644 --- a/Gui/Control/ConnectControl.h +++ b/Gui/Control/ConnectControl.h @@ -1,4 +1,4 @@ -#ifndef CONNECTCONTROL_H +#ifndef CONNECTCONTROL_H #define CONNECTCONTROL_H #include @@ -38,6 +38,7 @@ private: void Connect(); void setState(ConnectState cs); void RefreshClient(); + void Disconnect(); void ShowContextMenu(const QPoint& pos); std::string getCurClient(); diff --git a/Gui/Form/Transform.cpp b/Gui/Form/Transform.cpp index 24c7b38..0a269ef 100644 --- a/Gui/Form/Transform.cpp +++ b/Gui/Form/Transform.cpp @@ -16,6 +16,8 @@ TransForm::TransForm(QWidget* parent) : QDialog(parent), ui(new Ui::TransForm) TransForm::~TransForm() { + exis_ = true; + QThread::msleep(10); delete ui; } @@ -27,6 +29,7 @@ void TransForm::SetClientCore(ClientCore* clientCore) void TransForm::SetTasks(const QVector& tasks) { + exis_ = true; tasks_ = tasks; } @@ -37,6 +40,9 @@ void TransForm::startTask() if (task.isUpload) { fileTrans_->ReqSendFile(task); while (true) { + if (exis_) { + return; + } auto progress = fileTrans_->GetSendProgress(); if (progress < 0) { emit sigFailed(); @@ -52,6 +58,9 @@ void TransForm::startTask() } else { fileTrans_->ReqDownFile(task); while (true) { + if (exis_) { + return; + } auto progress = fileTrans_->GetDownProgress(); if (progress < 0) { emit sigFailed(); @@ -90,8 +99,7 @@ void TransForm::handleUI(const TransTask& task) ui->edTo->setText(task.remoteId); ui->pedFrom->setPlainText(task.localPath); ui->pedTo->setPlainText(task.remotePath); - } - else { + } else { ui->edFrom->setText(task.localId); ui->edTo->setText(task.remoteId); ui->pedFrom->setPlainText(task.remotePath); diff --git a/Gui/Form/Transform.h b/Gui/Form/Transform.h index 6ca130f..375b403 100644 --- a/Gui/Form/Transform.h +++ b/Gui/Form/Transform.h @@ -41,6 +41,7 @@ protected: void showEvent(QShowEvent* event) override; private: + bool exis_{ false }; TranFromTh* workTh_{}; QVector tasks_; FileTrans* fileTrans_{}; diff --git a/Gui/frelayGUI.cpp b/Gui/frelayGUI.cpp index dde5bbb..cfd6e13 100644 --- a/Gui/frelayGUI.cpp +++ b/Gui/frelayGUI.cpp @@ -8,7 +8,6 @@ #include "Control/LogControl.h" static LogPrint* logPrint = nullptr; -static QMutex logMut; frelayGUI::frelayGUI(QWidget* parent) : QMainWindow(parent), ui(new Ui::frelayGUI) { @@ -28,9 +27,7 @@ frelayGUI::frelayGUI(QWidget* parent) : QMainWindow(parent), ui(new Ui::frelayGU frelayGUI::~frelayGUI() { - QMutexLocker locker(&logMut); delete ui; - logPrint = nullptr; } void frelayGUI::InitControl() @@ -93,9 +90,7 @@ void frelayGUI::ControlMsgHander(QtMsgType type, const QMessageLogContext& conte { Q_UNUSED(context); - QMutexLocker locker(&logMut); - - if (!logPrint) { + if (!qApp || !qobject_cast(qApp->activeWindow())) { return; } diff --git a/Gui/main.cpp b/Gui/main.cpp index 9f3966b..62c0e82 100644 --- a/Gui/main.cpp +++ b/Gui/main.cpp @@ -8,6 +8,9 @@ int main(int argc, char* argv[]) QApplication a(argc, argv); qInstallMessageHandler(frelayGUI::ControlMsgHander); + qRegisterMetaType>("QSharedPointer"); + qRegisterMetaType("InfoClientVec"); + qRegisterMetaType("DirFileInfoVec"); #ifdef _WIN32 QFont font("Microsoft YaHei", 9);