From e7c99699e8f120ef3fdbc0c428ce82709973c751 Mon Sep 17 00:00:00 2001 From: keke <243768648@qq.com> Date: Thu, 9 Mar 2023 00:52:00 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E5=8D=95=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/appmanagermodel.cpp | 4 +-- src/appmanagerwidget.cpp | 4 +-- src/common/appmanagercommon.cpp | 43 +++++++++++++++++++++++++++------ 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/appmanagermodel.cpp b/src/appmanagermodel.cpp index 0389854..a7e1498 100644 --- a/src/appmanagermodel.cpp +++ b/src/appmanagermodel.cpp @@ -46,13 +46,13 @@ QString AppManagerModel::formatePkgInfo(const PkgInfo &info) "桌面文件:%11\n执行命令:%12\n执行路径:%13\n依赖:%14\n描述:%15\n\n") .arg("") .arg(info.pkgName) - .arg(info.installedSize ? formatBytes(info.installedSize * 1024, 2) : "0 B") + .arg(info.installedSize ? formatBytes(info.installedSize * 1024, 2) : "0B") .arg(info.updatedTime) .arg(info.maintainer) .arg(info.arch) .arg(info.version) .arg(info.downloadUrl) - .arg(info.pkgSize ? formatBytes(info.pkgSize, 1) : "0 B") + .arg(info.pkgSize ? formatBytes(info.pkgSize, 1) : "0B") .arg(info.homepage) .arg("") .arg("") diff --git a/src/appmanagerwidget.cpp b/src/appmanagerwidget.cpp index 5c4cfac..54b733b 100644 --- a/src/appmanagerwidget.cpp +++ b/src/appmanagerwidget.cpp @@ -852,13 +852,13 @@ QString AppManagerWidget::formateAppInfo(const AppInfo &info) "桌面文件:%11\n执行命令:%12\n执行路径:%13\n依赖:%14\n描述:%15\n\n") .arg(info.desktopInfo.appName) .arg(info.installedPkgInfo.pkgName) - .arg(info.installedPkgInfo.installedSize ? formatBytes(info.installedPkgInfo.installedSize * 1024, 2) : "0 B") + .arg(info.installedPkgInfo.installedSize ? formatBytes(info.installedPkgInfo.installedSize * 1024, 2) : "0B") .arg(info.installedPkgInfo.updatedTime) .arg(info.installedPkgInfo.maintainer) .arg(info.installedPkgInfo.arch) .arg(info.installedPkgInfo.version) .arg(info.installedPkgInfo.downloadUrl) - .arg(info.installedPkgInfo.pkgSize ? formatBytes(info.installedPkgInfo.pkgSize, 1) : "0 B") + .arg(info.installedPkgInfo.pkgSize ? formatBytes(info.installedPkgInfo.pkgSize, 1) : "0B") .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 dd3d745..08aa8c0 100644 --- a/src/common/appmanagercommon.cpp +++ b/src/common/appmanagercommon.cpp @@ -52,23 +52,52 @@ void AM::popupNormalSysNotify(const QString &summary, const QString &body) proc.startDetached("notify-send", {"-a", "com.github.ccc-app-manager", summary, body}); } +// 移除字符串结尾的"0"和"." +void rmZeroAndDotOfTail(QString &str) +{ + QString retStr; + int zeroCountOfTail = 0; + for(QString::const_reverse_iterator cIter = str.rbegin(); cIter != str.rend(); ++cIter) { + if ('0' == *cIter) { + zeroCountOfTail++; + continue; + } + break; + } + + str.remove(str.size() - zeroCountOfTail, zeroCountOfTail); + if (str.endsWith(".")) { + str.remove(str.size() - 1, 1); + } + + if (str.isEmpty()) { + str = "0"; + } +} + // 格式化容量 QString AM::formatBytes(qint64 input, int prec) { - QString flowValueStr; + QString flowValueStr, unitStr; if (KB_COUNT > input) { - flowValueStr = QString::number(input / 1, 'd', prec) + " B"; + flowValueStr = QString::number(input / 1, 'd', prec); + unitStr = "B"; } else if (MB_COUNT > input) { - flowValueStr = QString::number(input / KB_COUNT + double(input % KB_COUNT) / KB_COUNT, 'd', prec) + " KB"; + flowValueStr = QString::number(input / KB_COUNT + double(input % KB_COUNT) / KB_COUNT, 'f', prec); + unitStr = "KB"; } else if (GB_COUNT > input) { - flowValueStr = QString::number(input / MB_COUNT + double(input % MB_COUNT) / MB_COUNT, 'd', prec) + " MB"; + flowValueStr = QString::number(input / MB_COUNT + double(input % MB_COUNT) / MB_COUNT, 'f', prec); + unitStr = "MB"; } else if (TB_COUNT > input) { - flowValueStr = QString::number(input / GB_COUNT + double(input % GB_COUNT) / GB_COUNT, 'd', prec) + " GB"; + flowValueStr = QString::number(input / GB_COUNT + double(input % GB_COUNT) / GB_COUNT, 'f', prec); + unitStr = "GB"; } else { // 大于TB单位 - flowValueStr = QString::number(input / TB_COUNT + double(input % TB_COUNT) / TB_COUNT, 'd', prec) + " TB"; + flowValueStr = QString::number(input / TB_COUNT + double(input % TB_COUNT) / TB_COUNT, 'f', prec); + unitStr = "TB"; } - return flowValueStr; + rmZeroAndDotOfTail(flowValueStr); + return flowValueStr + unitStr; } bool AM::judgePkgIsInstalledFromStr(const QString &str) -- Gitee