From e8ea4ed1a99dbe2791dd010d57ed3b9973d88ddf Mon Sep 17 00:00:00 2001 From: momen Date: Wed, 15 Oct 2025 17:03:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=BD=93/tmp=E8=B7=AF=E5=BE=84=E4=B8=8B?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E5=8C=85=E6=97=B6=EF=BC=8C=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E5=AE=89=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/appdelegate.cpp | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/appdelegate.cpp b/src/appdelegate.cpp index fcaf2ac..61f9136 100644 --- a/src/appdelegate.cpp +++ b/src/appdelegate.cpp @@ -277,12 +277,33 @@ bool AppDelegate::editorEvent(QEvent *event, QAbstractItemModel *model, if (m_downloads.contains(packageName) && !m_downloads[packageName].isDownloading) { return false; } - QString downloadUrl = index.data(Qt::UserRole + 7).toString(); - QString outputPath = QString("%1/%2.metalink").arg(QDir::tempPath(), packageName); + + // 检查/tmp目录下是否已经存在deb包 + QDir tempDir(QDir::tempPath()); + QStringList debs = tempDir.entryList(QStringList() << QString("%1_*.deb").arg(packageName), QDir::Files); + QString debPath; + if (!debs.isEmpty()) { + debPath = tempDir.absoluteFilePath(debs.first()); + } else { + debs = tempDir.entryList(QStringList() << QString("%1*.deb").arg(packageName), QDir::Files); + if (!debs.isEmpty()) { + debPath = tempDir.absoluteFilePath(debs.first()); + } + } + + // 如果存在deb包,直接进行安装 + if (!debPath.isEmpty() && QFile::exists(debPath)) { + qDebug() << "发现已存在的deb包,直接进行安装:" << debPath; + enqueueInstall(packageName); + } else { + // 否则触发下载流程 + QString downloadUrl = index.data(Qt::UserRole + 7).toString(); + QString outputPath = QString("%1/%2.metalink").arg(QDir::tempPath(), packageName); - m_downloads[packageName] = {0, true}; - m_downloadManager->startDownload(packageName, downloadUrl, outputPath); - emit updateDisplay(packageName); + m_downloads[packageName] = {0, true}; + m_downloadManager->startDownload(packageName, downloadUrl, outputPath); + emit updateDisplay(packageName); + } return true; } }