func:添加显示驱动器。

This commit is contained in:
2025-11-09 18:10:54 +08:00
parent c4a773e156
commit 67db0163fc
9 changed files with 37 additions and 10 deletions

View File

@@ -152,6 +152,7 @@ void ClientCore::UseFrame(QSharedPointer<FrameBuffer> frame)
case FrameBufferType::FBT_CLI_ASK_HOME: { case FrameBufferType::FBT_CLI_ASK_HOME: {
InfoMsg info; InfoMsg info;
info.msg = Util::GetUserHome(); info.msg = Util::GetUserHome();
info.list = Util::GetLocalDrivers();
if (!Send<InfoMsg>(info, FBT_CLI_ANS_HOME, frame->fid)) { if (!Send<InfoMsg>(info, FBT_CLI_ANS_HOME, frame->fid)) {
qCritical() << QString(tr("send home failed.")); qCritical() << QString(tr("send home failed."));
return; return;
@@ -161,7 +162,7 @@ void ClientCore::UseFrame(QSharedPointer<FrameBuffer> frame)
case FrameBufferType::FBT_CLI_ANS_HOME: { case FrameBufferType::FBT_CLI_ANS_HOME: {
InfoMsg info = infoUnpack<InfoMsg>(frame->data); InfoMsg info = infoUnpack<InfoMsg>(frame->data);
qInfo() << QString(tr("用户目录:%1")).arg(info.msg); qInfo() << QString(tr("用户目录:%1")).arg(info.msg);
emit sigPath(info.msg); emit sigPath(info.msg, info.list);
break; break;
} }
case FrameBufferType::FBT_SER_MSG_FORWARD_FAILED: { case FrameBufferType::FBT_SER_MSG_FORWARD_FAILED: {

View File

@@ -64,7 +64,7 @@ public:
signals: signals:
void sigDisconnect(); void sigDisconnect();
void sigPath(const QString& path); void sigPath(const QString& path, const QStringList& drivers);
void sigClients(const InfoClientVec& clients); void sigClients(const InfoClientVec& clients);
void sigFiles(const DirFileInfoVec& files); void sigFiles(const DirFileInfoVec& files);
void sigReqSend(QSharedPointer<FrameBuffer> frame); void sigReqSend(QSharedPointer<FrameBuffer> frame);

View File

@@ -11,7 +11,8 @@ RemoteFile::RemoteFile(QObject* parent) : DirFileHelper(parent)
void RemoteFile::setClientCore(ClientCore* cliCore) void RemoteFile::setClientCore(ClientCore* cliCore)
{ {
cliCore_ = cliCore; cliCore_ = cliCore;
connect(cliCore_, &ClientCore::sigPath, this, [this](const QString& path) { sigHome(path); }); connect(cliCore_, &ClientCore::sigPath, this,
[this](const QString& path, const QStringList& drivers) { sigHome(path, drivers); });
connect(cliCore_, &ClientCore::sigFiles, this, [this](const DirFileInfoVec& files) { sigDirFile(files); }); connect(cliCore_, &ClientCore::sigFiles, this, [this](const DirFileInfoVec& files) { sigDirFile(files); });
} }

View File

@@ -109,17 +109,26 @@ void FileManager::InitMenu()
menu_->addSeparator(); menu_->addSeparator();
} }
void FileManager::ShowPath(const QString& path) void FileManager::ShowPath(const QString& path, const QStringList& drivers)
{ {
QMutexLocker locker(&cbMut_); QMutexLocker locker(&cbMut_);
int existingIndex = ui->comboBox->findText(path); int existingIndex = ui->comboBox->findText(path);
if (existingIndex != -1) { if (existingIndex != -1) {
ui->comboBox->removeItem(existingIndex); ui->comboBox->removeItem(existingIndex);
} else if (ui->comboBox->count() >= 20) { } else if (ui->comboBox->count() >= 20) {
ui->comboBox->removeItem(ui->comboBox->count() - 1); ui->comboBox->removeItem(ui->comboBox->count() - 1);
} }
ui->comboBox->insertItem(0, path); for (const auto& driver : drivers) {
if (ui->comboBox->findText(driver) == -1) {
ui->comboBox->insertItem(0, driver);
}
}
if (ui->comboBox->findText(path) == -1) {
ui->comboBox->insertItem(0, path);
}
ui->comboBox->setCurrentIndex(0); ui->comboBox->setCurrentIndex(0);
drivers_ = drivers;
} }
void FileManager::ShowFile(const DirFileInfoVec& info) void FileManager::ShowFile(const DirFileInfoVec& info)
@@ -133,7 +142,7 @@ void FileManager::ShowFile(const DirFileInfoVec& info)
RefreshTab(); RefreshTab();
ui->tableWidget->resizeColumnToContents(0); ui->tableWidget->resizeColumnToContents(0);
SetRoot(currentInfo_.root); SetRoot(currentInfo_.root);
ShowPath(GetRoot()); ShowPath(GetRoot(), drivers_);
} }
void FileManager::SetRoot(const QString& path) void FileManager::SetRoot(const QString& path)
@@ -479,7 +488,7 @@ void FileManager::evtUp()
auto r = fileHelper_->GetDirFile(path); auto r = fileHelper_->GetDirFile(path);
if (r) { if (r) {
SetRoot(path); SetRoot(path);
ShowPath(GetRoot()); ShowPath(GetRoot(), drivers_);
} }
} }

View File

@@ -46,7 +46,7 @@ signals:
private: private:
void InitControl(); void InitControl();
void InitMenu(); void InitMenu();
void ShowPath(const QString& path); void ShowPath(const QString& path, const QStringList& drivers);
void ShowFile(const DirFileInfoVec& info); void ShowFile(const DirFileInfoVec& info);
void doubleClick(int row, int column); void doubleClick(int row, int column);
void SetRoot(const QString& path); void SetRoot(const QString& path);
@@ -70,6 +70,7 @@ private:
ClientCore* cliCore_; ClientCore* cliCore_;
QMutex cbMut_; QMutex cbMut_;
QMutex tbMut_; QMutex tbMut_;
QStringList drivers_;
QSet<QString> fileTypes_; QSet<QString> fileTypes_;
QSet<QString> curSelectTypes_; QSet<QString> curSelectTypes_;
DirFileInfoVec currentInfo_; DirFileInfoVec currentInfo_;

View File

@@ -8,6 +8,7 @@
| 序号 | 类型 | 内容 | 说明 | 基于版本 | 完成版本 | | 序号 | 类型 | 内容 | 说明 | 基于版本 | 完成版本 |
| :--: | :--: | ------------------------------------------------------------ | :--: | :------: | :------: | | :--: | :--: | ------------------------------------------------------------ | :--: | :------: | :------: |
| 32 | 功能 | 路径选择显示驱动器。 | | 0.2.2 | 0.2.3 |
| 31 | 功能 | Server端buffer大小判断,有过多无效数据则踢出该客户端。 | | 0.2.2 | | | 31 | 功能 | Server端buffer大小判断,有过多无效数据则踢出该客户端。 | | 0.2.2 | |
| 30 | 功能 | 传输界面的取消退出,缺失功能处理。 | | 0.2.2 | 0.2.3 | | 30 | 功能 | 传输界面的取消退出,缺失功能处理。 | | 0.2.2 | 0.2.3 |
| 29 | 功能 | 根据接收端的速率限制发送端的速度。 | | 0.2.2 | 0.2.3 | | 29 | 功能 | 根据接收端的速率限制发送端的速度。 | | 0.2.2 | 0.2.3 |

View File

@@ -11,7 +11,7 @@ LocalFile::LocalFile(QObject* parent) : DirFileHelper(parent)
bool LocalFile::GetHome() bool LocalFile::GetHome()
{ {
auto home = Util::GetUserHome(); auto home = Util::GetUserHome();
emit sigHome(home); emit sigHome(home, Util::GetLocalDrivers());
return true; return true;
} }

View File

@@ -6,6 +6,7 @@
#include <QFileInfo> #include <QFileInfo>
#include <QMutex> #include <QMutex>
#include <QStandardPaths> #include <QStandardPaths>
#include <QStorageInfo>
#include <QUuid> #include <QUuid>
#include <fversion.h> #include <fversion.h>
#include <iostream> #include <iostream>
@@ -154,6 +155,18 @@ QString Util::UUID()
return QUuid::createUuid().toString().remove("{").remove("}"); return QUuid::createUuid().toString().remove("{").remove("}");
} }
QVector<QString> Util::GetLocalDrivers()
{
QVector<QString> result;
auto drivers = QStorageInfo::mountedVolumes();
for (const auto& driver : drivers) {
if (driver.isValid() && driver.isReady()) {
result.push_back(driver.rootPath());
}
}
return result;
}
QString DirFileHelper::GetErr() const QString DirFileHelper::GetErr() const
{ {
return QString(); return QString();

View File

@@ -52,6 +52,7 @@ public:
static bool FileExist(const QString& path); static bool FileExist(const QString& path);
static bool DirExist(const QString& path, bool isFilePath); static bool DirExist(const QString& path, bool isFilePath);
static QString UUID(); static QString UUID();
static QVector<QString> GetLocalDrivers();
}; };
class DirFileHelper : public QObject class DirFileHelper : public QObject
@@ -65,7 +66,7 @@ public:
QString GetErr() const; QString GetErr() const;
signals: signals:
void sigHome(const QString& path); void sigHome(const QString& path, const QStringList& drivers);
void sigDirFile(const DirFileInfoVec& dirFile); void sigDirFile(const DirFileInfoVec& dirFile);
protected: protected: