实现从apt源读取数据并分类功能的功能

This commit is contained in:
gfdgd xi 2024-05-11 19:46:01 +08:00
parent bd51419f52
commit 3c88cc03f8
2 changed files with 14 additions and 7 deletions

@ -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

@ -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;