From e56b327a65711fdd149ba689faa65bc562f6890d Mon Sep 17 00:00:00 2001 From: keke <243768648@qq.com> Date: Tue, 7 Feb 2023 11:52:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BA=94=E7=94=A8=E6=9C=80=E8=BF=91?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/appmanagercommon.h | 3 +++ src/job/appmanagerjob.cpp | 18 +++++++++++++++++- src/job/appmanagerjob.h | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/common/appmanagercommon.h b/src/common/appmanagercommon.h index fa4086e..25ecb70 100644 --- a/src/common/appmanagercommon.h +++ b/src/common/appmanagercommon.h @@ -16,6 +16,9 @@ #define GB_COUNT (1 << 30) #define TB_COUNT (long(1) << 40) +// 时间格式化字符串 +#define DATE_TIME_FORMAT_STR "yyyy-MM-dd HH:mm:ss.zzz" + namespace AM { // 运行状态 enum RunningStatus { diff --git a/src/job/appmanagerjob.cpp b/src/job/appmanagerjob.cpp index b7f1c9b..14bab5f 100644 --- a/src/job/appmanagerjob.cpp +++ b/src/job/appmanagerjob.cpp @@ -616,7 +616,6 @@ bool AppManagerJob::getPkgInfoListFromFile(QList &pkgInfoList, const QS continue; } - if (lineText.startsWith("Description: ")) { pkgInfo.description = lineText.split(": ").last(); pkgInfo.description.append("\n"); @@ -636,6 +635,7 @@ bool AppManagerJob::getPkgInfoListFromFile(QList &pkgInfoList, const QS if (lineText.isEmpty()) { pkgInfo.infosFilePath = pkgInfosFilePath; pkgInfo.depositoryUrl = depositoryUrlStr; + pkgInfo.updatedTime = getPkgUpdatedTime(pkgInfo.pkgName, pkgInfo.arch); pkgInfoList.append(pkgInfo); pkgInfo = {}; } @@ -739,6 +739,7 @@ bool AppManagerJob::getInstalledPkgInfo(PkgInfo &pkgInfo, const QString &pkgName // 检测到下一包信息 if (lineText.isEmpty()) { pkgInfo.infosFilePath = localPkgInfosFilePath; + pkgInfo.updatedTime = getPkgUpdatedTime(pkgInfo.pkgName, pkgInfo.arch); if (pkgName == pkgInfo.pkgName) { if (pkgInfo.isInstalled) { break; @@ -915,6 +916,21 @@ DesktopInfo AppManagerJob::getDesktopInfo(const QString &desktop) return desktopInfo; } +QString AppManagerJob::getPkgUpdatedTime(const QString &pkgName, const QString &arch) +{ + // 判断文件名中是否有架构名 + QString listFilePath = QString("/var/lib/dpkg/info/%1.list").arg(pkgName); + QString archContent = QFile::exists(listFilePath) ? "" : QString(":%1").arg(arch); + + QFileInfo fInfo(QString("/var/lib/dpkg/info/%1%2.list").arg(pkgName).arg(archContent)); + if (!fInfo.exists()) { + qInfo() << Q_FUNC_INFO << fInfo.fileName() << "not exists!"; + return ""; + } + + return fInfo.lastModified().toString(DATE_TIME_FORMAT_STR); +} + qint64 AppManagerJob::getUrlFileSize(QString &url, int tryTimes) { qint64 size = -1; diff --git a/src/job/appmanagerjob.h b/src/job/appmanagerjob.h index 57e73ef..5b1a67f 100644 --- a/src/job/appmanagerjob.h +++ b/src/job/appmanagerjob.h @@ -107,6 +107,7 @@ private: QStringList getAppInstalledFileList(const QString &pkgName, const QString &arch); QStringList getAppDesktopPathList(const QStringList &list, const QString &pkgName); AM::DesktopInfo getDesktopInfo(const QString &desktop); + QString getPkgUpdatedTime(const QString &pkgName, const QString &arch); qint64 getUrlFileSize(QString &url, int tryTimes = 3); -- Gitee