gui: single instance mode.

This commit is contained in:
2025-06-21 12:08:01 +08:00
parent d0a3496356
commit d4b36c2137
46 changed files with 3102 additions and 175 deletions

View File

@@ -12,11 +12,11 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Network)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Network)
add_executable(frelayConsole Console.h Console.cpp main.cpp Helper.h Helper.cpp ../Res/ico.rc)
add_executable(frelayConsole Console.h Console.cpp main.cpp ../Res/ico.rc)
target_link_libraries(frelayConsole PRIVATE Protocol Util ClientCore)
if(NOT DEFINED COMPILER_USE_MINGW)
target_link_libraries(frelayConsole PRIVATE crashelper)
endif()
target_link_libraries(frelayConsole PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network)
target_link_libraries(frelayConsole PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network)

View File

@@ -1,9 +1,38 @@
#include "Console.h"
RelayConsole::RelayConsole(QObject* parent) : QObject(parent)
ConsoleHelper::ConsoleHelper(QObject* parent) : QObject(parent)
{
}
RelayConsole::~RelayConsole()
ConsoleHelper::~ConsoleHelper()
{
}
void ConsoleHelper::RunWorker(ClientCore* clientCore)
{
clientCore_ = clientCore;
sockWorker_ = new SocketWorker(clientCore_, nullptr);
clientCore_->moveToThread(sockWorker_);
connect(clientCore_, &ClientCore::conSuccess, this, [this]() { qInfo() << QString(tr("Connected.")); });
connect(clientCore_, &ClientCore::conFailed, this, [this]() { qInfo() << QString(tr("Connect failed.")); });
connect(clientCore_, &ClientCore::connecting, this, [this]() { qInfo() << QString(tr("Connecting...")); });
connect(clientCore_, &ClientCore::sigDisconnect, this, [this]() { qInfo() << QString(tr("Disconnected.")); });
connect(this, &ConsoleHelper::sigDoConnect, clientCore_, &ClientCore::DoConnect);
connect(sockWorker_, &QThread::finished, sockWorker_, &QObject::deleteLater);
sockWorker_->start();
}
void ConsoleHelper::SetIpPort(const QString& ip, quint16 port)
{
ip_ = ip;
port_ = port;
qDebug() << "SetIpPort:" << ip_ << port_;
}
void ConsoleHelper::Connect()
{
emit sigDoConnect(ip_, port_);
}

View File

@@ -1,15 +1,29 @@
#ifndef FRELAY_CONSOLE_H
#define FRELAY_CONSOLE_H
#ifndef CONSOLE_H
#define CONSOLE_H
#include <ClientCore.h>
class RelayConsole : public QObject
class ConsoleHelper : public QObject
{
Q_OBJECT
Q_OBJECT
public:
RelayConsole(QObject* parent = nullptr);
~RelayConsole() override;
ConsoleHelper(QObject* parent = nullptr);
~ConsoleHelper() override;
public:
void RunWorker(ClientCore* clientCore);
void SetIpPort(const QString& ip, quint16 port);
void Connect();
signals:
void sigDoConnect(const QString& ip, quint16 port);
private:
QString ip_;
quint16 port_{};
SocketWorker* sockWorker_{};
ClientCore* clientCore_;
};
#endif // FRELAY_CONSOLE_H
#endif // CONSOLE_H

View File

@@ -1,38 +0,0 @@
#include "Helper.h"
ConsoleHelper::ConsoleHelper(QObject* parent) : QObject(parent)
{
}
ConsoleHelper::~ConsoleHelper()
{
}
void ConsoleHelper::RunWorker(ClientCore* clientCore)
{
clientCore_ = clientCore;
sockWorker_ = new SocketWorker(clientCore_, nullptr);
clientCore_->moveToThread(sockWorker_);
connect(clientCore_, &ClientCore::conSuccess, this, [this]() { qInfo() << QString(tr("Connected.")); });
connect(clientCore_, &ClientCore::conFailed, this, [this]() { qInfo() << QString(tr("Connect failed.")); });
connect(clientCore_, &ClientCore::connecting, this, [this]() { qInfo() << QString(tr("Connecting...")); });
connect(clientCore_, &ClientCore::sigDisconnect, this, [this]() { qInfo() << QString(tr("Disconnected.")); });
connect(this, &ConsoleHelper::sigDoConnect, clientCore_, &ClientCore::DoConnect);
connect(sockWorker_, &QThread::finished, sockWorker_, &QObject::deleteLater);
sockWorker_->start();
}
void ConsoleHelper::SetIpPort(const QString& ip, quint16 port)
{
ip_ = ip;
port_ = port;
qDebug() << "SetIpPort:" << ip_ << port_;
}
void ConsoleHelper::Connect()
{
emit sigDoConnect(ip_, port_);
}

View File

@@ -1,29 +0,0 @@
#ifndef CONSOLE_HELPER_H
#define CONSOLE_HELPER_H
#include <ClientCore.h>
class ConsoleHelper : public QObject
{
Q_OBJECT
public:
ConsoleHelper(QObject* parent = nullptr);
~ConsoleHelper() override;
public:
void RunWorker(ClientCore* clientCore);
void SetIpPort(const QString& ip, quint16 port);
void Connect();
signals:
void sigDoConnect(const QString& ip, quint16 port);
private:
QString ip_;
quint16 port_{};
SocketWorker* sockWorker_{};
ClientCore* clientCore_;
};
#endif // CONSOLE_HELPER_H

View File

@@ -2,7 +2,6 @@
#include <Util.h>
#include "Console.h"
#include "Helper.h"
#ifndef COMPILER_USE_MINGW
#include <crashelper.h>
@@ -21,7 +20,7 @@ int main(int argc, char* argv[])
backward::SetDumpFileSavePath(configDir + "/dumpfile");
backward::SetDumpLogSavePath(configDir + "/dumplog");
#else
backward::SetDumpLogSavePath(configDir + QDir::separator() + "dumplog");
backward::SetDumpLogSavePath(configDir + "/dumplog");
#endif
#endif
@@ -38,4 +37,4 @@ int main(int argc, char* argv[])
helper->Connect();
return app.exec();
}
}