mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-12-20 03:01:36 +08:00
feat:获取包大小
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
#include <QRegularExpression>
|
#include <QRegularExpression>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
|
#include <qdebug.h>
|
||||||
|
|
||||||
aptssUpdater::aptssUpdater(QWidget *parent)
|
aptssUpdater::aptssUpdater(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
@@ -66,9 +67,55 @@ QStringList aptssUpdater::getUpdateablePackages()
|
|||||||
|
|
||||||
QStringList aptssUpdater::getPackageSizes()
|
QStringList aptssUpdater::getPackageSizes()
|
||||||
{
|
{
|
||||||
|
QStringList packageSizes;
|
||||||
|
QProcess process;
|
||||||
|
|
||||||
|
// 使用绝对路径 + 自动输入N跳过交互
|
||||||
|
QString command = R"(echo N | /opt/durapps/spark-store/bin/aptss upgrade --assume-no)";
|
||||||
|
|
||||||
|
process.start("bash", QStringList() << "-c" << command);
|
||||||
|
if (!process.waitForFinished()) {
|
||||||
|
qWarning() << "获取包大小失败:进程未完成";
|
||||||
|
return packageSizes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString output = process.readAllStandardOutput() + process.readAllStandardError();
|
||||||
|
|
||||||
|
// 清理颜色控制字符(ANSI 转义序列)
|
||||||
|
output.remove(QRegularExpression(R"(\x1B\[[0-9;]*[a-zA-Z])")); // \x1B is ESC
|
||||||
|
|
||||||
|
QStringList lines = output.split('\n', Qt::SkipEmptyParts);
|
||||||
|
|
||||||
|
// 从 getUpdateablePackages 获取包名
|
||||||
|
QStringList updateablePackages;
|
||||||
|
for (const QString &pkgInfo : getUpdateablePackages()) {
|
||||||
|
QString pkgName = pkgInfo.section(":", 0, 0).trimmed();
|
||||||
|
updateablePackages << pkgName;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 匹配 [apt-fast xx:xx:xx] 行,提取内容
|
||||||
|
QRegularExpression sizeLineRegex(R"(\[apt-fast [^\]]+\](\S+)\s+\S+\s+(\d+(\.\d+)?[KMG]?iB))");
|
||||||
|
|
||||||
|
for (const QString &line : lines) {
|
||||||
|
QRegularExpressionMatch match = sizeLineRegex.match(line.trimmed());
|
||||||
|
if (match.hasMatch()) {
|
||||||
|
QString name = match.captured(1);
|
||||||
|
QString size = match.captured(2);
|
||||||
|
|
||||||
|
if (updateablePackages.contains(name)) {
|
||||||
|
packageSizes << QString("%1: %2").arg(name, size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
qDebug() << "包大小列表:" << packageSizes;
|
||||||
|
return packageSizes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
QStringList aptssUpdater::getDesktopAppNames()
|
QStringList aptssUpdater::getDesktopAppNames()
|
||||||
{
|
{
|
||||||
QStringList appNames;
|
QStringList appNames;
|
||||||
|
|||||||
@@ -106,6 +106,7 @@ void MainWindow::checkUpdates()
|
|||||||
// 获取可更新包列表
|
// 获取可更新包列表
|
||||||
// QStringList updateablePackages = updater.getUpdateablePackages();
|
// QStringList updateablePackages = updater.getUpdateablePackages();
|
||||||
QStringList appName = updater.getDesktopAppNames();
|
QStringList appName = updater.getDesktopAppNames();
|
||||||
|
updater.getPackageSizes();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user