实现从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); AptPkgInfo info = AptPkgInfo("linux-", AptPkgInfo::PkgSearchOption::HeadInclude);
QStringList list = info.GetAptPackageList(); QStringList list = info.GetAptPackageList();
QJsonArray array; QJsonArray array;
indexMap = {};
for(QString i: list) { for(QString i: list) {
QJsonObject object; QJsonObject object;
bool isContinue = false; bool isContinue = false;
@ -51,8 +52,12 @@ void KernelInformation::LoadInfo()
alreadyIndex = indexMap.value(strTemp); alreadyIndex = indexMap.value(strTemp);
QJsonArray pkgArray = array.at(alreadyIndex).toObject().value("PkgName").toArray(); QJsonArray pkgArray = array.at(alreadyIndex).toObject().value("PkgName").toArray();
pkgArray.append(i); pkgArray.append(i);
array.insert(alreadyIndex, array.at(alreadyIndex).toObject().insert("PkgName", pkgArray)->toObject()); qDebug() << pkgArray;
//array.at(alreadyIndex).toObject().insert("PkgName", 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; continue;
} }
info.SetPkgName(strTemp); info.SetPkgName(strTemp);
@ -61,6 +66,7 @@ void KernelInformation::LoadInfo()
object.insert("Des", info.get_maintainer(i)); object.insert("Des", info.get_maintainer(i));
object.insert("Arch", info.get_architecture(i)); object.insert("Arch", info.get_architecture(i));
object.insert("PkgName", QJsonArray::fromStringList(QStringList() << i)); object.insert("PkgName", QJsonArray::fromStringList(QStringList() << i));
indexMap.insert(strTemp, array.count());
array.append(object); array.append(object);
} }
this->listData = array; this->listData = array;
@ -130,16 +136,16 @@ QStringList KernelInformation::get_system(int value) const
QStringList KernelInformation::get_arch(int value) const QStringList KernelInformation::get_arch(int value) const
{ {
QJsonArray list = get_kernelData(value).value("Arch").toArray(); //QJsonArray list = get_kernelData(value).value("Arch").toArray();
int count = list.count(); /*int count = list.count();
QStringList result; QStringList result;
for(int i = 0; i < count; i++) { for(int i = 0; i < count; i++) {
result << list.at(i).toString(); result << list.at(i).toString();
} }
if(!result.count()) { if(!result.count()) {
result << "all"; result << "all";
} }*/
return result; return QStringList() << get_kernelData(value).value("Arch").toString();
} }
QString KernelInformation::localKernelName() const QString KernelInformation::localKernelName() const

@ -31,12 +31,13 @@ void MainWindow::RefreshKernelListView(KernelInformation *info, bool showLocalAr
int count = info->get_count(); int count = info->get_count();
QStandardItemModel *model = new QStandardItemModel(); QStandardItemModel *model = new QStandardItemModel();
model->setHorizontalHeaderLabels(QStringList() << tr("ID") << tr("Kernel Name") << tr("Author") << tr("Arch") << tr("Installed")); model->setHorizontalHeaderLabels(QStringList() << tr("ID") << tr("Kernel Name") << tr("Author") << tr("Arch") << tr("Installed"));
const QString arch = info->arch();
int line = 0; int line = 0;
for(int i = 0; i < count; i++) { for(int i = 0; i < count; i++) {
// 显示所有架构 // 显示所有架构
QString kernelArch = ""; QString kernelArch = "";
bool isLocalArch = false; bool isLocalArch = false;
const QString arch = info->arch();
for(QString i: info->get_arch(i)) { for(QString i: info->get_arch(i)) {
if(i == arch) { if(i == arch) {
isLocalArch = true; isLocalArch = true;