From a019a5ea78547f416426ccd46311211f1bb490bc Mon Sep 17 00:00:00 2001 From: taynpg Date: Fri, 20 Jun 2025 16:00:18 +0800 Subject: [PATCH] glodata: add global struct data. --- ClientCore/ClientCore.cpp | 4 ++-- Gui/Control/CompareControl.cpp | 2 +- Gui/Control/FileControl.cpp | 38 ++++++++++++++++++++++++++-------- Gui/Control/FileControl.h | 5 +++-- Gui/Control/cpTableWidget.cpp | 21 ++++++++++++++++++- Gui/Control/cusTableWidget.cpp | 5 ----- Gui/frelayGUI.cpp | 4 ++-- Util/Util.cpp | 28 +++++++++++++++++++++++++ Util/Util.h | 22 ++++++++++++++++++++ 9 files changed, 107 insertions(+), 22 deletions(-) diff --git a/ClientCore/ClientCore.cpp b/ClientCore/ClientCore.cpp index fdf2537..9fbb0c1 100644 --- a/ClientCore/ClientCore.cpp +++ b/ClientCore/ClientCore.cpp @@ -8,7 +8,7 @@ ClientCore::ClientCore(QObject* parent) : QObject(parent) void ClientCore::Instance() { - qDebug() << "Instance() thread:" << QThread::currentThread(); + //qDebug() << "Instance() thread:" << QThread::currentThread(); socket_ = new QTcpSocket(this); connect(socket_, &QTcpSocket::readyRead, this, &ClientCore::onReadyRead); connect(socket_, &QTcpSocket::disconnected, this, &ClientCore::onDisconnected); @@ -237,7 +237,7 @@ SocketWorker::~SocketWorker() void SocketWorker::run() { - qDebug() << "SocketWorker thread:" << QThread::currentThread(); + //qDebug() << "SocketWorker thread:" << QThread::currentThread(); core_->Instance(); exec(); } diff --git a/Gui/Control/CompareControl.cpp b/Gui/Control/CompareControl.cpp index e86cb2b..e6c625e 100644 --- a/Gui/Control/CompareControl.cpp +++ b/Gui/Control/CompareControl.cpp @@ -37,7 +37,7 @@ void Compare::InitTabWidget() ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch); ui->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch); - ui->tableWidget->setDragEnabled(true); + ui->tableWidget->setDragEnabled(false); ui->tableWidget->viewport()->setAcceptDrops(true); ui->tableWidget->setDropIndicatorShown(true); ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); diff --git a/Gui/Control/FileControl.cpp b/Gui/Control/FileControl.cpp index e2ed055..41712c2 100644 --- a/Gui/Control/FileControl.cpp +++ b/Gui/Control/FileControl.cpp @@ -27,17 +27,19 @@ void FileManager::SetModeStr(const QString& modeStr, int type, ClientCore* clien ui->lbMode->setText(modeStr); if (type == 0) { + isRemote_ = false; fileHelper_ = std::make_shared(); } else { auto remotePtr = std::make_shared(); remotePtr->setClientCore(clientCore); + isRemote_ = true; ui->tableWidget->setIsRemote(true); fileHelper_ = remotePtr; } ui->tableWidget->setOwnIDCall([this]() { return cliCore_->GetOwnID(); }); ui->tableWidget->setRemoteIDCall([this]() { return cliCore_->GetRemoteID(); }); - ui->tableWidget->setBasePathCall([this]() { return curRoot_; }); + ui->tableWidget->setBasePathCall([this]() { return GetRoot(); }); connect(fileHelper_.get(), &DirFileHelper::sigHome, this, &FileManager::ShowPath); connect(fileHelper_.get(), &DirFileHelper::sigDirFile, this, &FileManager::ShowFile); @@ -177,15 +179,33 @@ void FileManager::ShowFile(const DirFileInfoVec& info) ui->tableWidget->setItem(i, 4, item); } ui->tableWidget->resizeColumnToContents(0); - curRoot_ = info.root; - ShowPath(curRoot_); + SetRoot(info.root); + ShowPath(GetRoot()); +} + +void FileManager::SetRoot(const QString& path) +{ + if (isRemote_) { + GlobalData::Ins()->SetRemoteRoot(path); + } else { + GlobalData::Ins()->SetLocalRoot(path); + } +} + +QString FileManager::GetRoot() +{ + if (isRemote_) { + return GlobalData::Ins()->GetRemoteRoot(); + } else { + return GlobalData::Ins()->GetLocalRoot(); + } } void FileManager::evtHome() { auto r = fileHelper_->GetHome(); auto curPath = ui->comboBox->currentText(); - curRoot_ = curPath; + SetRoot(curPath); qDebug() << QString(tr("%1 get home ret:%2").arg(__FUNCTION__).arg(r)); } @@ -193,13 +213,13 @@ void FileManager::evtFile() { auto curPath = ui->comboBox->currentText(); auto r = fileHelper_->GetDirFile(curPath); - curRoot_ = curPath; + SetRoot(curPath); qDebug() << QString(tr("%1 get files ret:%2").arg(__FUNCTION__).arg(r)); } void FileManager::evtUp() { - QString path(curRoot_); + QString path(GetRoot()); QDir dir(path); path = QDir::cleanPath(dir.absolutePath() + "/.."); if (path.isEmpty()) { @@ -207,8 +227,8 @@ void FileManager::evtUp() } auto r = fileHelper_->GetDirFile(path); if (r) { - curRoot_ = path; - ShowPath(curRoot_); + SetRoot(path); + ShowPath(GetRoot()); } } @@ -226,7 +246,7 @@ void FileManager::doubleClick(int row, int column) return; } - QDir dir(curRoot_); + QDir dir(GetRoot()); QString np = dir.filePath(item->text()); fileHelper_->GetDirFile(np); } diff --git a/Gui/Control/FileControl.h b/Gui/Control/FileControl.h index 111a716..a62a43d 100644 --- a/Gui/Control/FileControl.h +++ b/Gui/Control/FileControl.h @@ -22,9 +22,9 @@ public: ~FileManager(); public: + QString GetRoot(); void SetModeStr(const QString& modeStr, int type = 0, ClientCore* clientCore = nullptr); void SetOtherSideCall(const std::function& call); - QString GetCurRoot(); signals: void sigSendTasks(const QVector& tasks); @@ -35,6 +35,7 @@ private: void ShowPath(const QString& path); void ShowFile(const DirFileInfoVec& info); void doubleClick(int row, int column); + void SetRoot(const QString& path); private: void evtHome(); @@ -42,8 +43,8 @@ private: void evtUp(); private: + bool isRemote_; Ui::FileManager* ui; - QString curRoot_; QMenu* menu_; ClientCore* cliCore_; QMutex cbMut_; diff --git a/Gui/Control/cpTableWidget.cpp b/Gui/Control/cpTableWidget.cpp index e6bf3c6..374932f 100644 --- a/Gui/Control/cpTableWidget.cpp +++ b/Gui/Control/cpTableWidget.cpp @@ -17,12 +17,31 @@ CpTableWidget::~CpTableWidget() void CpTableWidget::dropEvent(QDropEvent* event) { + if (!event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) { + event->ignore(); + return; + } + QByteArray encoded = event->mimeData()->data("application/x-qabstractitemmodeldatalist"); + QDataStream stream(&encoded, QIODevice::ReadOnly); + QList draggedItems; + while (!stream.atEnd()) { + int row, col; + QMap roleData; + stream >> row >> col >> roleData; + if (col != 1) { + continue; + } + } } void CpTableWidget::dragEnterEvent(QDragEnterEvent* event) { - + if (event->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")) { + event->acceptProposedAction(); + } else { + event->ignore(); + } } diff --git a/Gui/Control/cusTableWidget.cpp b/Gui/Control/cusTableWidget.cpp index 8732136..c8e6668 100644 --- a/Gui/Control/cusTableWidget.cpp +++ b/Gui/Control/cusTableWidget.cpp @@ -27,11 +27,6 @@ void CustomTableWidget::setBasePathCall(const std::function& call) basePathCall_ = call; } -QString FileManager::GetCurRoot() -{ - return curRoot_; -} - void CustomTableWidget::setOwnIDCall(const std::function& call) { oidCall_ = call; diff --git a/Gui/frelayGUI.cpp b/Gui/frelayGUI.cpp index 2d493b8..75ac4c4 100644 --- a/Gui/frelayGUI.cpp +++ b/Gui/frelayGUI.cpp @@ -47,9 +47,9 @@ void frelayGUI::InitControl() remoteFile_ = new FileManager(this); localFile_->SetModeStr(tr("Local:"), 0, clientCore_); - localFile_->SetOtherSideCall([this]() { return remoteFile_->GetCurRoot(); }); + localFile_->SetOtherSideCall([this]() { return remoteFile_->GetRoot(); }); remoteFile_->SetModeStr(tr("Remote:"), 1, clientCore_); - remoteFile_->SetOtherSideCall([this]() { return localFile_->GetCurRoot(); }); + remoteFile_->SetOtherSideCall([this]() { return localFile_->GetRoot(); }); tabWidget_ = new QTabWidget(this); diff --git a/Util/Util.cpp b/Util/Util.cpp index d485307..7327500 100644 --- a/Util/Util.cpp +++ b/Util/Util.cpp @@ -127,4 +127,32 @@ QString DirFileHelper::GetErr() const DirFileHelper::DirFileHelper(QObject* parent) : QObject(parent) { +} + +GlobalData* GlobalData::Ins() +{ + static GlobalData instance; + return &instance; +} + +void GlobalData::SetLocalRoot(const QString& root) +{ + QMutexLocker locker(&mutex_); + LocalRoot_ = root; +} + +void GlobalData::SetRemoteRoot(const QString& root) +{ + QMutexLocker locker(&mutex_); + RemoteRoot_ = root; +} + +QString GlobalData::GetLocalRoot() const +{ + return LocalRoot_; +} + +QString GlobalData::GetRemoteRoot() const +{ + return RemoteRoot_; } \ No newline at end of file diff --git a/Util/Util.h b/Util/Util.h index 3961688..1b31492 100644 --- a/Util/Util.h +++ b/Util/Util.h @@ -2,8 +2,30 @@ #define UTIL_H #include +#include #include +class GlobalData +{ +public: + static GlobalData* Ins(); + ~GlobalData() = default; + +public: + void SetLocalRoot(const QString& root); + void SetRemoteRoot(const QString& root); + QString GetLocalRoot() const; + QString GetRemoteRoot() const; + +private: + GlobalData() = default; + +public: + QMutex mutex_; + QString LocalRoot_; + QString RemoteRoot_; +}; + class Util : public QObject { Q_OBJECT