diff --git a/src/appmanagermodel.cpp b/src/appmanagermodel.cpp index 0389854de1359e59bd44a0ffe9fe5c7c0db08cf5..a7e1498aae94b831a3e6c25a6e09f66424d7cac9 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 5c4cfac0e827b1caddc8a2f89bd4599449d5eed2..54b733b14504c287687aba57e2dcabaafec11a4c 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 dd3d7456736225d13d54cd0d14bacd250f3eb228..08aa8c01035bccdbdc520188016f6ccb52fcfe3e 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)