From 3c88cc03f85c08f89a48d41cd7948313ef70d7a5 Mon Sep 17 00:00:00 2001
From: gfdgd_xi <3025613752@qq.com>
Date: Sat, 11 May 2024 19:46:01 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BB=8Eapt=E6=BA=90?=
 =?UTF-8?q?=E8=AF=BB=E5=8F=96=E6=95=B0=E6=8D=AE=E5=B9=B6=E5=88=86=E7=B1=BB?=
 =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=9A=84=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 kernelinformation.cpp | 18 ++++++++++++------
 mainwindow.cpp        |  3 ++-
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/kernelinformation.cpp b/kernelinformation.cpp
index a552ea9..a983056 100644
--- a/kernelinformation.cpp
+++ b/kernelinformation.cpp
@@ -18,6 +18,7 @@ void KernelInformation::LoadInfo()
     AptPkgInfo info = AptPkgInfo("linux-", AptPkgInfo::PkgSearchOption::HeadInclude);
     QStringList list = info.GetAptPackageList();
     QJsonArray array;
+    indexMap = {};
     for(QString i: list) {
         QJsonObject object;
         bool isContinue = false;
@@ -51,8 +52,12 @@ void KernelInformation::LoadInfo()
             alreadyIndex = indexMap.value(strTemp);
             QJsonArray pkgArray = array.at(alreadyIndex).toObject().value("PkgName").toArray();
             pkgArray.append(i);
-            array.insert(alreadyIndex, array.at(alreadyIndex).toObject().insert("PkgName", pkgArray)->toObject());
-            //array.at(alreadyIndex).toObject().insert("PkgName", pkgArray);
+            qDebug() << pkgArray;
+            //array.replace(alreadyIndex, array.at(alreadyIndex).toObject().insert("PkgName", pkgArray)->toObject());
+            qDebug() << alreadyIndex << array.count();
+            QJsonObject pkgObject = array.at(alreadyIndex).toObject();
+            pkgObject["PkgName"] = pkgArray;
+            array.replace(alreadyIndex, pkgObject);//.insert("PkgName", pkgArray)->toObject());
             continue;
         }
         info.SetPkgName(strTemp);
@@ -61,6 +66,7 @@ void KernelInformation::LoadInfo()
         object.insert("Des", info.get_maintainer(i));
         object.insert("Arch", info.get_architecture(i));
         object.insert("PkgName", QJsonArray::fromStringList(QStringList() << i));
+        indexMap.insert(strTemp, array.count());
         array.append(object);
     }
     this->listData = array;
@@ -130,16 +136,16 @@ QStringList KernelInformation::get_system(int value) const
 
 QStringList KernelInformation::get_arch(int value) const
 {
-    QJsonArray list = get_kernelData(value).value("Arch").toArray();
-    int count = list.count();
+    //QJsonArray list = get_kernelData(value).value("Arch").toArray();
+    /*int count = list.count();
     QStringList result;
     for(int i = 0; i < count; i++) {
         result << list.at(i).toString();
     }
     if(!result.count()) {
         result << "all";
-    }
-    return result;
+    }*/
+    return QStringList() << get_kernelData(value).value("Arch").toString();
 }
 
 QString KernelInformation::localKernelName() const
diff --git a/mainwindow.cpp b/mainwindow.cpp
index c15aa8a..2725095 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -31,12 +31,13 @@ void MainWindow::RefreshKernelListView(KernelInformation *info, bool showLocalAr
     int count = info->get_count();
     QStandardItemModel *model = new QStandardItemModel();
     model->setHorizontalHeaderLabels(QStringList() << tr("ID") << tr("Kernel Name") << tr("Author") << tr("Arch") << tr("Installed"));
+    const QString arch = info->arch();
     int line = 0;
     for(int i = 0; i < count; i++) {
         // 显示所有架构
         QString kernelArch = "";
         bool isLocalArch = false;
-        const QString arch = info->arch();
+
         for(QString i: info->get_arch(i)) {
             if(i == arch) {
                 isLocalArch = true;