Files
frelay/Gui/frelayGUI.cpp

126 lines
3.2 KiB
C++
Raw Normal View History

2025-06-18 08:49:29 +08:00
#include "frelayGUI.h"
2025-06-15 14:31:54 +08:00
2025-06-18 08:49:29 +08:00
#include <QLabel>
2025-06-18 14:53:56 +08:00
#include <QSplitter>
#include <fversion.h>
2025-06-15 14:31:54 +08:00
#include "./ui_frelayGUI.h"
#include "Control/LogControl.h"
2025-06-15 14:31:54 +08:00
static LogPrint* logPrint = nullptr;
2025-06-15 14:31:54 +08:00
frelayGUI::frelayGUI(QWidget* parent) : QMainWindow(parent), ui(new Ui::frelayGUI)
{
ui->setupUi(this);
InitControl();
ControlSignal();
ControlLayout();
resize(1500, 800);
2025-06-18 08:49:29 +08:00
setWindowTitle(QString(tr("frelay %1")).arg(VERSION_NUM));
QLabel* permanent = new QLabel(this);
permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);
permanent->setText(QString("%1 on %2").arg(VERSION_GIT_COMMIT, VERSION_GIT_BRANCH));
2025-06-18 08:49:29 +08:00
this->statusBar()->addPermanentWidget(permanent);
2025-06-15 14:31:54 +08:00
}
frelayGUI::~frelayGUI()
{
delete ui;
}
void frelayGUI::InitControl()
{
logPrint = new LogPrint(this);
clientCore_ = new ClientCore();
2025-06-15 14:31:54 +08:00
2025-06-18 10:36:19 +08:00
compare_ = new Compare(this);
2025-06-18 11:11:08 +08:00
transform_ = new TransForm(this);
2025-06-18 17:22:15 +08:00
transform_->SetClientCore(clientCore_);
2025-06-18 10:36:19 +08:00
2025-06-15 14:31:54 +08:00
connecter_ = new Connecter(this);
connecter_->RunWorker(clientCore_);
2025-06-15 14:31:54 +08:00
connecter_->SetRemoteCall([this](const QString& id) { clientCore_->SetRemoteID(id); });
localFile_ = new FileManager(this);
remoteFile_ = new FileManager(this);
2025-06-20 09:45:39 +08:00
localFile_->SetModeStr(tr("Local:"), 0, clientCore_);
2025-06-15 14:31:54 +08:00
remoteFile_->SetModeStr(tr("Remote:"), 1, clientCore_);
tabWidget_ = new QTabWidget(this);
connect(localFile_, &FileManager::sigSendTasks, this, &frelayGUI::HandleTask);
connect(remoteFile_, &FileManager::sigSendTasks, this, &frelayGUI::HandleTask);
connect(compare_, &Compare::sigTasks, this, &frelayGUI::HandleTask);
connect(connecter_, &Connecter::sigConfirmUse, remoteFile_, &FileManager::evtHome);
2025-06-15 14:31:54 +08:00
}
void frelayGUI::ControlSignal()
{
}
void frelayGUI::ControlLayout()
{
auto* splitter = new QSplitter(Qt::Vertical);
splitter->setHandleWidth(1);
auto* sTop = new QSplitter(Qt::Horizontal);
auto* sConnect = new QSplitter(Qt::Vertical);
auto* sFile = new QSplitter(Qt::Horizontal);
sTop->setHandleWidth(1);
sConnect->setHandleWidth(1);
sFile->setHandleWidth(1);
sTop->addWidget(tabWidget_);
sTop->addWidget(connecter_);
tabWidget_->addTab(logPrint, tr("Log"));
2025-06-18 10:36:19 +08:00
tabWidget_->addTab(compare_, tr("Compare"));
2025-06-15 14:31:54 +08:00
sFile->addWidget(localFile_);
sFile->addWidget(remoteFile_);
splitter->addWidget(sTop);
splitter->addWidget(sFile);
2025-06-20 14:58:47 +08:00
QList<int> sizes;
sizes << height() * 2 / 5 << height() * 3 / 5;
splitter->setSizes(sizes);
2025-06-15 14:31:54 +08:00
setCentralWidget(splitter);
}
void frelayGUI::ControlMsgHander(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
switch (type) {
case QtDebugMsg:
logPrint->Debug(msg);
break;
case QtInfoMsg:
logPrint->Info(msg);
break;
case QtWarningMsg:
logPrint->Warn(msg);
break;
default:
logPrint->Error(msg);
break;
}
}
void frelayGUI::HandleTask(const QVector<TransTask>& tasks)
{
if (!clientCore_->IsConnect()) {
qCritical() << QString(tr("Not connect to server."));
return;
}
transform_->SetTasks(tasks);
transform_->exec();
}
2025-06-15 14:31:54 +08:00
void frelayGUI::closeEvent(QCloseEvent* event)
{
QMainWindow::closeEvent(event);
}