From 27bd1114cd03b6475833173e886607320bc84247 Mon Sep 17 00:00:00 2001 From: gfdgd_xi <3025613752@qq.com> Date: Fri, 3 May 2024 22:25:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=AD=9B=E9=80=89=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E6=9E=B6=E6=9E=84=E7=9A=84=E5=86=85=E6=A0=B8=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernelinstaller.cpp | 1 + mainwindow.cpp | 39 ++++++++++++++++++++++++++++++++------- mainwindow.h | 4 +++- mainwindow.ui | 10 ++++++++++ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/kernelinstaller.cpp b/kernelinstaller.cpp index 4110ff9..be7d066 100644 --- a/kernelinstaller.cpp +++ b/kernelinstaller.cpp @@ -130,6 +130,7 @@ void KernelInstaller::CheckInstallerStatusTimer() if(status == -1) { return; } + emit InstallFinished(status); // 安装完成 if(status == 0) { ui->m_status->setText(tr("Done")); diff --git a/mainwindow.cpp b/mainwindow.cpp index 2e462cc..d394fc7 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -21,23 +21,38 @@ void MainWindow::RefreshKernelList() ui->m_nowKernel->setText(tr("Kernel: ") + kernelInformation->localKernelName() + " " + tr("Arch: ") + kernelInformation->arch()); connect(kernelInformation, &KernelInformation::loadFinished, this, [this](){ qDebug() << this->kernelInformation->get_listData(); - RefreshKernelListView(kernelInformation); + RefreshKernelListView(kernelInformation, ui->m_showLocalArchOnly->isChecked()); }); kernelInformation->LoadInfo(); } -void MainWindow::RefreshKernelListView(KernelInformation *info) +void MainWindow::RefreshKernelListView(KernelInformation *info, bool showLocalArchOnly) { // 更新列表 int count = info->get_count(); QStandardItemModel *model = new QStandardItemModel(); model->setHorizontalHeaderLabels(QStringList() << tr("ID") << tr("Kernel Name") << tr("Author") << tr("Arch") << tr("Installed")); + int line = 0; for(int i = 0; i < count; i++) { - model->setItem(i, 0, new QStandardItem(QString::number(i))); - model->setItem(i, 1, new QStandardItem(info->get_name(i))); - model->setItem(i, 2, new QStandardItem(info->get_author(i))); - model->setItem(i, 3, new QStandardItem(info->get_arch(i).at(0))); - model->setItem(i, 4, new QStandardItem((QStringList() << "" << "Y").at(info->get_installedAlready(i)))); + // 显示所有架构 + QString kernelArch = ""; + bool isLocalArch = false; + const QString arch = info->arch(); + for(QString i: info->get_arch(i)) { + if(i == arch) { + isLocalArch = true; + } + kernelArch += i + " "; + } + if(showLocalArchOnly && !isLocalArch) { + continue; + } + model->setItem(line, 0, new QStandardItem(QString::number(i))); + model->setItem(line, 1, new QStandardItem(info->get_name(i))); + model->setItem(line, 2, new QStandardItem(info->get_author(i))); + model->setItem(line, 3, new QStandardItem(kernelArch)); + model->setItem(line, 4, new QStandardItem((QStringList() << "" << "Y").at(info->get_installedAlready(i)))); + line++; } ui->m_kernelShow->setModel(model); } @@ -68,6 +83,10 @@ void MainWindow::on_m_installButton_clicked() int id = ui->m_kernelShow->model()->data(index).toUInt(); // 获取选中行 KernelInstaller *installer = new KernelInstaller(KernelInstaller::Option::Install, kernelInformation->get_pkgName(id)); + connect(installer, &KernelInstaller::InstallFinished, this, [this](){ + // 刷新列表 + this->RefreshKernelListView(this->kernelInformation, ui->m_showLocalArchOnly->isChecked()); + }); installer->show(); } @@ -114,3 +133,9 @@ void MainWindow::on_m_removeButton_clicked() installer->show(); } + +void MainWindow::on_m_showLocalArchOnly_stateChanged(int arg1) +{ + RefreshKernelListView(this->kernelInformation, ui->m_showLocalArchOnly->isChecked()); +} + diff --git a/mainwindow.h b/mainwindow.h index c7dd8b1..db0e9ca 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -33,10 +33,12 @@ private slots: void on_m_removeButton_clicked(); + void on_m_showLocalArchOnly_stateChanged(int arg1); + private: Ui::MainWindow *ui; KernelInformation *kernelInformation; void RefreshKernelList(); - void RefreshKernelListView(KernelInformation *info); + void RefreshKernelListView(KernelInformation *info, bool showLocalArchOnly = true); }; #endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui index b09e887..e585956 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -57,6 +57,16 @@ </property> </spacer> </item> + <item> + <widget class="QCheckBox" name="m_showLocalArchOnly"> + <property name="text"> + <string>Show local PC architecture only</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> <item> <widget class="QPushButton" name="m_refreshButton"> <property name="text">