From cbb7510d990e8bf6b251e879586caf711bea9377 Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Mon, 6 May 2024 22:49:59 +0800
Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BB=8Eapt=E6=BA=90?=
 =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=8C=85=E5=90=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 kernelinformation.cpp | 33 +++++++++++++++++++++++++++++++++
 kernelinformation.h   |  4 ++++
 2 files changed, 37 insertions(+)

diff --git a/kernelinformation.cpp b/kernelinformation.cpp
index 38a3fbf..78b5f45 100644
--- a/kernelinformation.cpp
+++ b/kernelinformation.cpp
@@ -1,12 +1,45 @@
 #include "kernelinformation.h"
 
+#include <QProcess>
+
 KernelInformation::KernelInformation()
 {
 
 }
 
+QStringList KernelInformation::GetAptPackageList(QString name)
+{
+    QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+    env.insert("LANG", "en");
+    QString data = GetCommandResult("apt", QStringList() << "list" << name, env);
+    QStringList lineData = data.split("\n");
+    QStringList result = {};
+    for(QString i: lineData) {
+        if(i.contains("Listing...")) {
+            continue;
+        }
+        result.append(i.split("/").at(0));
+    }
+    return result;
+}
+
+QByteArray KernelInformation::GetCommandResult(QString command, QStringList argv, QProcessEnvironment env)
+{
+    QProcess process;
+    process.setProcessEnvironment(env);
+    process.start(command, argv);
+    process.waitForStarted();
+    process.waitForFinished();
+    QByteArray result = process.readAllStandardOutput();
+    process.close();
+    return result;
+}
+
 void KernelInformation::LoadInfo()
 {
+    // 从 apt 获取信息
+    qDebug() << this->GetAptPackageList("linux-*");
+    // 从 Github 拉取信息
     QUrl url(this->url);
     QUrlQuery query;
     query.addQueryItem("format", "j1");
diff --git a/kernelinformation.h b/kernelinformation.h
index a864e38..3a4630d 100644
--- a/kernelinformation.h
+++ b/kernelinformation.h
@@ -42,9 +42,13 @@ signals:
     void loadFinished(QNetworkReply *reply);
 
 
+
 private:
     QString url = "http://info.kernel.gxde.gfdgdxi.top/information.json";
     QJsonArray listData;
+
+    QStringList GetAptPackageList(QString name);
+    QByteArray GetCommandResult(QString command, QStringList argv, QProcessEnvironment env = QProcessEnvironment::systemEnvironment());
 };
 
 #endif // KERNELINFORMATION_H