File indexing completed on 2024-06-16 05:08:59

0001 /*
0002     SPDX-FileCopyrightText: 2020 Alexander Lohnau <alexander.lohnau@gmx.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include <QDialog>
0008 #include <QDialogButtonBox>
0009 #include <QIcon>
0010 #include <QLabel>
0011 #include <QPushButton>
0012 #include <QVBoxLayout>
0013 
0014 #include <KIO/OpenFileManagerWindowJob>
0015 #include <KLocalizedString>
0016 
0017 class PackageKitConfirmationDialog : public QDialog
0018 {
0019 public:
0020     PackageKitConfirmationDialog(const QString &packagePath, QWidget *parent = nullptr)
0021         : QDialog(parent)
0022     {
0023         setWindowTitle(i18nc("@title:window", "Confirm Installation"));
0024         setWindowIcon(QIcon::fromTheme(QStringLiteral("dialog-information")));
0025         QVBoxLayout *layout = new QVBoxLayout(this);
0026         QString msg = xi18nc("@info", "You are about to install a binary package. You should only install these from a trusted author/packager.");
0027         QLabel *msgLabel = new QLabel(msg, this);
0028         msgLabel->setWordWrap(true);
0029         layout->addWidget(msgLabel);
0030 
0031         auto *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
0032         buttonBox->button(QDialogButtonBox::Ok)->setIcon(QIcon::fromTheme("emblem-warning"));
0033         buttonBox->button(QDialogButtonBox::Ok)->setText(i18nc("@action:button", "Accept Risk And Continue"));
0034         connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
0035         connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
0036 
0037         QPushButton *highlightFileButton = new QPushButton(QIcon::fromTheme("document-open-folder"), i18nc("@action:button", "View File"), this);
0038         connect(highlightFileButton, &QPushButton::clicked, this, [packagePath]() {
0039             KIO::highlightInFileManager({QUrl::fromLocalFile(packagePath)});
0040         });
0041         buttonBox->addButton(highlightFileButton, QDialogButtonBox::HelpRole);
0042         buttonBox->button(QDialogButtonBox::Cancel)->setFocus();
0043         layout->addWidget(buttonBox);
0044     }
0045 };