File indexing completed on 2024-04-21 15:02:28

0001 /*
0002     knewstuff3/ui/downloaddialog.cpp.
0003     SPDX-FileCopyrightText: 2005 Enrico Ros <eros.kde@email.it>
0004     SPDX-FileCopyrightText: 2005-2007 Josef Spillner <spillner@kde.org>
0005     SPDX-FileCopyrightText: 2007 Dirk Mueller <mueller@kde.org>
0006     SPDX-FileCopyrightText: 2007-2009 Jeremy Whiting <jpwhiting@kde.org>
0007     SPDX-FileCopyrightText: 2009-2010 Frederik Gladhorn <gladhorn@kde.org>
0008 
0009     SPDX-License-Identifier: LGPL-2.1-or-later
0010 */
0011 
0012 #include "downloaddialog.h"
0013 
0014 #if KNEWSTUFF_BUILD_DEPRECATED_SINCE(5, 80)
0015 
0016 #include <KAuthorized>
0017 #include <KLocalizedString>
0018 #include <KMessageBox>
0019 #include <KSharedConfig>
0020 #include <KStandardGuiItem>
0021 #include <KTitleWidget>
0022 #include <QCoreApplication>
0023 #include <kwindowconfig.h>
0024 
0025 #include "downloadwidget.h"
0026 #include "downloadwidget_p.h"
0027 #include "ui/widgetquestionlistener.h"
0028 
0029 namespace KNS3
0030 {
0031 class DownloadDialogPrivate
0032 {
0033 public:
0034     ~DownloadDialogPrivate()
0035     {
0036         delete downloadWidget;
0037     }
0038 
0039     DownloadWidget *downloadWidget = nullptr;
0040 };
0041 }
0042 
0043 using namespace KNS3;
0044 
0045 const char ConfigGroup[] = "DownloadDialog Settings";
0046 
0047 DownloadDialog::DownloadDialog(QWidget *parent)
0048     : QDialog(parent)
0049     , d(new DownloadDialogPrivate)
0050 {
0051     const QString name = QCoreApplication::applicationName();
0052     init(name + QStringLiteral(".knsrc"));
0053 }
0054 
0055 DownloadDialog::DownloadDialog(const QString &configFile, QWidget *parent)
0056     : QDialog(parent)
0057     , d(new DownloadDialogPrivate)
0058 {
0059     init(configFile);
0060 }
0061 
0062 void DownloadDialog::init(const QString &configFile)
0063 {
0064     // load the last size from config
0065     KConfigGroup group(KSharedConfig::openConfig(), ConfigGroup);
0066     KWindowConfig::restoreWindowSize(windowHandle(), group);
0067     setMinimumSize(700, 400);
0068 
0069     setWindowTitle(i18n("Get Hot New Stuff"));
0070 
0071     QVBoxLayout *layout = new QVBoxLayout(this);
0072     d->downloadWidget = new DownloadWidget(configFile, this);
0073     // DownloadWidget already provides margins, which would duplicate the dialog layout margins.
0074     // As the widget theme could use different margin sizes for a dialog/window outer layout,
0075     // so from the duplicated margins we pick the internal margins to remove here.
0076     d->downloadWidget->layout()->setContentsMargins(0, 0, 0, 0);
0077     layout->addWidget(d->downloadWidget);
0078 
0079     if (group.hasKey("Name")) {
0080         d->downloadWidget->setTitle(group.readEntry("Name"));
0081     } else {
0082         QString displayName = QGuiApplication::applicationDisplayName();
0083         if (displayName.isEmpty()) {
0084             displayName = QCoreApplication::applicationName();
0085         }
0086         d->downloadWidget->setTitle(i18nc("Program name followed by 'Add On Installer'", "%1 Add-On Installer", displayName));
0087     }
0088     // d->downloadWidget->d->ui.m_titleWidget->setPixmap(QIcon::fromTheme(KGlobal::activeComponent().aboutData()->programIconName()));
0089     d->downloadWidget->d->ui.m_titleWidget->setVisible(true);
0090     d->downloadWidget->d->ui.closeButton->setVisible(true);
0091     KStandardGuiItem::assign(d->downloadWidget->d->ui.closeButton, KStandardGuiItem::Close);
0092     d->downloadWidget->d->dialogMode = true;
0093     connect(d->downloadWidget->d->ui.closeButton, &QAbstractButton::clicked, this, &QDialog::accept);
0094     WidgetQuestionListener::instance();
0095 }
0096 
0097 DownloadDialog::~DownloadDialog()
0098 {
0099     KConfigGroup group(KSharedConfig::openConfig(), ConfigGroup);
0100     KWindowConfig::saveWindowSize(windowHandle(), group, KConfigBase::Persistent);
0101     delete d;
0102 }
0103 
0104 int DownloadDialog::exec()
0105 {
0106     if (!KAuthorized::authorize(KAuthorized::GHNS)) {
0107         KMessageBox::information(this, QStringLiteral("Get Hot New Stuff is disabled by the administrator"), QStringLiteral("Get Hot New Stuff disabled"));
0108         return QDialog::Rejected;
0109     }
0110     return QDialog::exec();
0111 }
0112 
0113 void DownloadDialog::open()
0114 {
0115     if (!KAuthorized::authorize(KAuthorized::GHNS)) {
0116         KMessageBox::information(this, QStringLiteral("Get Hot New Stuff is disabled by the administrator"), QStringLiteral("Get Hot New Stuff disabled"));
0117         return;
0118     }
0119     QDialog::open();
0120 }
0121 
0122 void DownloadDialog::showEvent(QShowEvent *event)
0123 {
0124     if (!KAuthorized::authorize(KAuthorized::GHNS)) {
0125         KMessageBox::information(this, QStringLiteral("Get Hot New Stuff is disabled by the administrator"), QStringLiteral("Get Hot New Stuff disabled"));
0126         return;
0127     }
0128     QWidget::showEvent(event);
0129 }
0130 
0131 void DownloadDialog::setTitle(const QString &title)
0132 {
0133     d->downloadWidget->setTitle(title);
0134 }
0135 
0136 QString DownloadDialog::title() const
0137 {
0138     return d->downloadWidget->title();
0139 }
0140 
0141 KNSCore::Engine *DownloadDialog::engine()
0142 {
0143     return d->downloadWidget->engine();
0144 }
0145 
0146 Entry::List DownloadDialog::changedEntries()
0147 {
0148     return d->downloadWidget->changedEntries();
0149 }
0150 
0151 Entry::List DownloadDialog::installedEntries()
0152 {
0153     return d->downloadWidget->installedEntries();
0154 }
0155 
0156 #include "moc_downloaddialog.cpp"
0157 
0158 #endif