File indexing completed on 2024-04-21 03:56:27

0001 /*
0002     SPDX-FileCopyrightText: 2021 Oleg Solovyov <mcpain@altlinux.org>
0003     SPDX-FileCopyrightText: 2021 Alexander Lohnau <alexander.lohnau@gmx.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #include "action.h"
0009 
0010 #include "dialog.h"
0011 #include <KAuthorized>
0012 #include <KLocalizedString>
0013 
0014 namespace KNSWidgets
0015 {
0016 class ActionPrivate
0017 {
0018 public:
0019     QString configFile;
0020     std::unique_ptr<Dialog> dialog;
0021 };
0022 
0023 Action::Action(const QString &text, const QString &configFile, QObject *parent)
0024     : QAction(parent)
0025     , d(new ActionPrivate)
0026 {
0027     if (text.isEmpty()) {
0028         setText(i18n("Download New Stuff..."));
0029     } else {
0030         setText(text);
0031     }
0032     d->configFile = configFile;
0033 
0034     const bool authorized = KAuthorized::authorize(KAuthorized::GHNS);
0035     if (!authorized) {
0036         setEnabled(false);
0037         setVisible(false);
0038     }
0039 
0040     setIcon(QIcon::fromTheme(QStringLiteral("get-hot-new-stuff")));
0041     connect(this, &QAction::triggered, this, [this]() {
0042         if (!KAuthorized::authorize(KAuthorized::GHNS)) {
0043             return;
0044         }
0045 
0046         if (!d->dialog) {
0047             d->dialog.reset(new KNSWidgets::Dialog(d->configFile));
0048             d->dialog->setWindowTitle(this->text().remove(QLatin1Char('&')));
0049             connect(d->dialog.get(), &KNSWidgets::Dialog::finished, this, [this]() {
0050                 Q_EMIT dialogFinished(d->dialog->changedEntries());
0051             });
0052         }
0053         d->dialog->open();
0054     });
0055 }
0056 
0057 Action::~Action() = default;
0058 }
0059 
0060 #include "moc_action.cpp"