From a1a5ff883c625a09c54b8865106902692af6937f Mon Sep 17 00:00:00 2001 From: keke <243768648@qq.com> Date: Wed, 28 Sep 2022 23:59:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BD=AF=E4=BB=B6=E5=8C=85=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E6=98=BE=E7=A4=BA=E9=9A=8F=E5=AD=97=E8=8A=82=E9=98=B6?= =?UTF-8?q?=E6=A2=AF=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/appmanagermodel.cpp | 8 ++++---- src/appmanagerwidget.cpp | 8 ++++---- src/common/appmanagercommon.cpp | 19 +++++++++++++++++++ src/common/appmanagercommon.h | 8 ++++++++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/appmanagermodel.cpp b/src/appmanagermodel.cpp index 37cb576..0389854 100644 --- a/src/appmanagermodel.cpp +++ b/src/appmanagermodel.cpp @@ -41,18 +41,18 @@ QList AppManagerModel::getAppInfosList() QString AppManagerModel::formatePkgInfo(const PkgInfo &info) { - QString text = QString("应用名:%1\n包名:%2\n安装后占用:%3KB\n更新时间:%4\n维护者:%5\n" - "架构:%6\n版本:%7\n下载地址:%8\n安装包大小:%9B\n主页:%10\n" + QString text = QString("应用名:%1\n包名:%2\n安装后占用:%3\n更新时间:%4\n维护者:%5\n" + "架构:%6\n版本:%7\n下载地址:%8\n安装包大小:%9\n主页:%10\n" "桌面文件:%11\n执行命令:%12\n执行路径:%13\n依赖:%14\n描述:%15\n\n") .arg("") .arg(info.pkgName) - .arg(info.installedSize) + .arg(info.installedSize ? formatBytes(info.installedSize * 1024, 2) : "0 B") .arg(info.updatedTime) .arg(info.maintainer) .arg(info.arch) .arg(info.version) .arg(info.downloadUrl) - .arg(info.pkgSize) + .arg(info.pkgSize ? formatBytes(info.pkgSize, 1) : "0 B") .arg(info.homepage) .arg("") .arg("") diff --git a/src/appmanagerwidget.cpp b/src/appmanagerwidget.cpp index ab8bbb3..90006c1 100644 --- a/src/appmanagerwidget.cpp +++ b/src/appmanagerwidget.cpp @@ -754,18 +754,18 @@ QString AppManagerWidget::formateAppInfo(const AppInfo &info) text += "本地安装信息\n" "-----------------------------\n"; if (info.isInstalled) { - text += QString("应用名:%1\n包名:%2\n安装后占用:%3KB\n更新时间:%4\n维护者:%5\n" - "架构:%6\n版本:%7\n下载地址:%8\n安装包大小:%9B\n主页:%10\n" + text += QString("应用名:%1\n包名:%2\n安装后占用:%3\n更新时间:%4\n维护者:%5\n" + "架构:%6\n版本:%7\n下载地址:%8\n安装包大小:%9\n主页:%10\n" "桌面文件:%11\n执行命令:%12\n执行路径:%13\n依赖:%14\n描述:%15\n\n") .arg(info.desktopInfo.appName) .arg(info.installedPkgInfo.pkgName) - .arg(info.installedPkgInfo.installedSize) + .arg(info.installedPkgInfo.installedSize ? formatBytes(info.installedPkgInfo.installedSize * 1024, 2) : "0 B") .arg(info.installedPkgInfo.updatedTime) .arg(info.installedPkgInfo.maintainer) .arg(info.installedPkgInfo.arch) .arg(info.installedPkgInfo.version) .arg(info.installedPkgInfo.downloadUrl) - .arg(info.installedPkgInfo.pkgSize) + .arg(info.installedPkgInfo.pkgSize ? formatBytes(info.installedPkgInfo.pkgSize, 1) : "0 B") .arg(info.installedPkgInfo.homepage) .arg(info.desktopInfo.desktopPath) .arg(info.desktopInfo.exec) diff --git a/src/common/appmanagercommon.cpp b/src/common/appmanagercommon.cpp index 01cca1f..9175bca 100644 --- a/src/common/appmanagercommon.cpp +++ b/src/common/appmanagercommon.cpp @@ -51,3 +51,22 @@ void AM::popupNormalSysNotify(const QString &summary, const QString &body) QProcess proc; proc.startDetached("notify-send", {"-a", "com.github.ccc-app-manager", summary, body}); } + +// 格式化容量 +QString AM::formatBytes(qint64 input, int prec) +{ + QString flowValueStr; + if (KB_COUNT > input) { + flowValueStr = QString::number(input / 1, 'd', prec) + " B"; + } else if (MB_COUNT > input) { + flowValueStr = QString::number(input / KB_COUNT + double(input % KB_COUNT) / KB_COUNT, 'd', prec) + " KB"; + } else if (GB_COUNT > input) { + flowValueStr = QString::number(input / MB_COUNT + double(input % MB_COUNT) / MB_COUNT, 'd', prec) + " MB"; + } else if (TB_COUNT > input) { + flowValueStr = QString::number(input / GB_COUNT + double(input % GB_COUNT) / GB_COUNT, 'd', prec) + " GB"; + } else { + // 大于TB单位 + flowValueStr = QString::number(input / TB_COUNT + double(input % TB_COUNT) / TB_COUNT, 'd', prec) + " TB"; + } + return flowValueStr; +} diff --git a/src/common/appmanagercommon.h b/src/common/appmanagercommon.h index c0dabc6..fa4086e 100644 --- a/src/common/appmanagercommon.h +++ b/src/common/appmanagercommon.h @@ -10,6 +10,12 @@ // 列表数据角色定义 #define AM_LIST_VIEW_ITEM_DATA_ROLE_PKG_NAME Dtk::ItemDataRole::UserRole + 1 +// 文件大小单位,以b为基本单位 +#define KB_COUNT (1 << 10) +#define MB_COUNT (1 << 20) +#define GB_COUNT (1 << 30) +#define TB_COUNT (long(1) << 40) + namespace AM { // 运行状态 enum RunningStatus { @@ -88,4 +94,6 @@ bool isChineseChar(const QChar &character); PinyinInfo getPinYinInfoFromStr(const QString &words); void popupNormalSysNotify(const QString &summary, const QString &body); +// 格式化容量 +QString formatBytes(qint64 input, int prec); } // namespace AM -- Gitee