2026-07-02_14_31_VX5 韩国

This commit is contained in:
2026-07-02 14:32:38 +08:00
parent ea3c3fb234
commit 1074c98eb6
15 changed files with 764 additions and 198 deletions
+56 -27
View File
@@ -36,7 +36,12 @@ FileManageWidget::FileManageWidget(QWidget *parent) :
connect(ui->systemFileListView, &QListWidget::itemSelectionChanged, this, &FileManageWidget::refreshButtonsStatus);
connect(ui->udiskFileListView, &QListWidget::itemSelectionChanged, this, &FileManageWidget::refreshButtonsStatus);
updateUDiskDevList();
m_hasUDisk = checkUDiskPresent();
onUDiskStateChanged();
m_udiskCheckTimer = new QTimer(this);
connect(m_udiskCheckTimer, &QTimer::timeout, this, &FileManageWidget::onUDiskCheckTimeout);
m_udiskCheckTimer->start(1000);
m_focusedListView = ui->systemFileListView;
m_focusedListView->setFocus();
@@ -47,6 +52,7 @@ FileManageWidget::FileManageWidget(QWidget *parent) :
FileManageWidget::~FileManageWidget()
{
m_udiskCheckTimer->stop();
ui->systemFileListView->removeEventFilter(this);
ui->udiskFileListView->removeEventFilter(this);
delete ui;
@@ -94,20 +100,22 @@ void FileManageWidget::onFilterCBoxSelectChanged(int i)
}
m_currFilterType = i;
updateFileListView(ui->systemFileListView);
updateFileListView(ui->udiskFileListView);
refreshFileList(ui->systemFileListView);
if (m_hasUDisk) {
refreshFileList(ui->udiskFileListView);
}
}
void FileManageWidget::onExportBtnClicked()
{
copyFiles(ui->systemFileListView, ui->udiskFileListView);
updateFileListView(ui->udiskFileListView);
refreshFileList(ui->udiskFileListView);
}
void FileManageWidget::onImportBtnClicked()
{
copyFiles(ui->udiskFileListView, ui->systemFileListView);
updateFileListView(ui->systemFileListView);
refreshFileList(ui->systemFileListView);
}
void FileManageWidget::onSelectAllBtnClicked()
@@ -138,37 +146,59 @@ void FileManageWidget::onDelSelectedBtnClicked()
qInfo() << "Delete: " << filename << ", result: " << ret;
}
updateFileListView(m_focusedListView);
refreshFileList(m_focusedListView);
}
void FileManageWidget::updateUDiskDevList()
bool FileManageWidget::checkUDiskPresent()
{
bool hasUDisk = false;
QFile mountsFile("/proc/mounts");
if (mountsFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&mountsFile);
while (!in.atEnd()) {
const QString line = in.readLine();
if (line.contains("/udisk ")) {
hasUDisk = true;
break;
}
}
QString mountsContent = QString::fromLocal8Bit(mountsFile.readAll());
mountsFile.close();
if (mountsContent.lastIndexOf("/udisk ") != -1) {
return true;
}
}
return false;
}
if (!hasUDisk) {
QDir dir(UDISK_DOC_ROOT_DIR);
hasUDisk = dir.exists();
bool FileManageWidget::ensureUDiskDocDir()
{
QDir dir(UDISK_DOC_ROOT_DIR);
if (!dir.exists()) {
if (!dir.mkpath(UDISK_DOC_ROOT_DIR)) {
qCritical() << "Cannot create UDisk doc dir:" << UDISK_DOC_ROOT_DIR;
return false;
}
qInfo() << "Created UDisk doc dir:" << UDISK_DOC_ROOT_DIR;
}
return true;
}
void FileManageWidget::onUDiskCheckTimeout()
{
bool hasUDisk = checkUDiskPresent();
if (hasUDisk == m_hasUDisk) {
return;
}
m_hasUDisk = hasUDisk;
onUDiskStateChanged();
}
void FileManageWidget::onUDiskStateChanged()
{
ui->udiskSelectBox->clear();
if (hasUDisk) {
if (m_hasUDisk) {
ui->udiskSelectBox->addItem(tr("U盘"));
ui->udiskSelectBox->setCurrentIndex(0);
if (ensureUDiskDocDir()) {
refreshFileList(ui->udiskFileListView);
} else {
ui->udiskFileListView->clear();
}
} else {
ui->udiskFileListView->clear();
}
updateFileListView(ui->udiskFileListView);
}
void FileManageWidget::refreshButtonsStatus()
@@ -187,15 +217,14 @@ void FileManageWidget::refreshButtonsStatus()
ui->selectAllBtn->setEnabled(m_focusedListView->count() != selectedItems.size());
}
int FileManageWidget::updateFileListView(QListWidget* listView)
int FileManageWidget::refreshFileList(QListWidget* listView)
{
QString searchPath = listView->property("searchPath").toString();
// 判断目录是否存在
QDir dir(searchPath);
if(!dir.exists()) {
qCritical() << "Cannot open path: " << searchPath;
return -1;
if (!dir.exists()) {
listView->clear();
return 0;
}
// 根据过滤类型设置过滤器字符串