#include "kernelinformationdialog.h"
#include "ui_kernelinformationdialog.h"

#include "kernelinstaller.h"

#include <QJsonArray>

KernelInformationDialog::KernelInformationDialog(QJsonObject data, QWidget *parent) :
    QDialog(parent),
    ui(new Ui::KernelInformationDialog)
{
    ui->setupUi(this);
    // 解析数据
    ui->m_kernelName->setText(tr("Kernel Name:") + " " + data.value("Name").toString());
    ui->m_kernelVersion->setText(tr("Kernel Version:") + " " + data.value("Ver").toString());
    ui->m_kernelAuthor->setText(tr("Author:") + " " + data.value("Author").toString());
    QJsonArray array = data.value("PkgName").toArray();
    QString kernelText = "";
    for(QJsonValue i: array) {
        kernelText += i.toString() + " ";
        pkgList.append(i.toString());
    }
    ui->m_PkgName->setText(tr("Package Name:") + " " + kernelText);
    ui->m_kernelArch->setText(tr("Kernel Architecture:") + " " + data.value("Arch").toArray().at(0).toString());
    ui->m_des->setText(data.value("Des").toString());
}

KernelInformationDialog::~KernelInformationDialog()
{
    delete ui;
}

void KernelInformationDialog::on_m_refreshButton_clicked()
{

}


void KernelInformationDialog::on_m_reconfigureButton_clicked()
{
    KernelInstaller *installer = new KernelInstaller(KernelInstaller::Option::Reconfigure, pkgList);
    installer->show();
}


void KernelInformationDialog::on_m_installButton_clicked()
{
    KernelInstaller *installer = new KernelInstaller(KernelInstaller::Option::Install, pkgList);
    connect(installer, &KernelInstaller::InstallFinished, this, [this](int status){
        emit InstallFinished(status);
    });
    installer->show();
}


void KernelInformationDialog::on_m_removeButton_clicked()
{
    KernelInstaller *installer = new KernelInstaller(KernelInstaller::Option::Remove, pkgList);
    connect(installer, &KernelInstaller::InstallFinished, this, [this](int status){
        emit RemoveFinished(status);
    });
    installer->show();
}