Warning, file /frameworks/knewstuff/src/widgets/button.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2004 Aaron J. Seigo <aseigo@kde.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 "button.h" 0009 0010 #include "qtquickdialogwrapper.h" 0011 #include "ui/widgetquestionlistener.h" 0012 #include <KAuthorized> 0013 #include <KLocalizedString> 0014 #include <KMessageBox> 0015 0016 #include <QPointer> 0017 0018 namespace KNSWidgets 0019 { 0020 class ButtonPrivate 0021 { 0022 public: 0023 explicit ButtonPrivate(Button *qq) 0024 : q(qq) 0025 { 0026 } 0027 0028 Button *q; 0029 QString configFile; 0030 QPointer<KNS3::QtQuickDialogWrapper> dialog; 0031 void init() 0032 { 0033 const bool authorized = KAuthorized::authorize(KAuthorized::GHNS); 0034 if (!authorized) { 0035 q->setEnabled(false); 0036 q->setVisible(false); 0037 } 0038 0039 q->setIcon(QIcon::fromTheme(QStringLiteral("get-hot-new-stuff"))); 0040 q->connect(q, &QAbstractButton::clicked, q, &Button::showDialog); 0041 KNS3::WidgetQuestionListener::instance(); 0042 } 0043 }; 0044 0045 Button::Button(const QString &text, const QString &configFile, QWidget *parent) 0046 : QPushButton(parent) 0047 , d(new ButtonPrivate(this)) 0048 { 0049 setText(text); 0050 d->configFile = configFile; 0051 d->init(); 0052 } 0053 0054 Button::Button(QWidget *parent) 0055 : QPushButton(parent) 0056 , d(new ButtonPrivate(this)) 0057 { 0058 setText(i18n("Download New Stuff...")); 0059 d->init(); 0060 } 0061 0062 Button::~Button() = default; 0063 0064 void Button::setConfigFile(const QString &configFile) 0065 { 0066 d->configFile = configFile; 0067 } 0068 QString Button::configFile() 0069 { 0070 return d->configFile; 0071 } 0072 0073 void Button::showDialog() 0074 { 0075 if (!KAuthorized::authorize(KAuthorized::GHNS)) { 0076 KMessageBox::information(this, QStringLiteral("Get Hot New Stuff is disabled by the administrator"), QStringLiteral("Get Hot New Stuff disabled")); 0077 return; 0078 } 0079 Q_ASSERT_X(!d->configFile.isEmpty(), Q_FUNC_INFO, "The configFile for the KNSWidgets::Button must be explicitly set"); 0080 Q_EMIT aboutToShowDialog(); 0081 0082 if (!d->dialog) { 0083 d->dialog = new KNS3::QtQuickDialogWrapper(d->configFile, this); 0084 connect(d->dialog.data(), &KNS3::QtQuickDialogWrapper::closed, this, [this]() { 0085 Q_EMIT dialogFinished(d->dialog->changedEntries()); 0086 }); 0087 } 0088 d->dialog->open(); 0089 } 0090 0091 } 0092 0093 #include "moc_button.cpp"