File indexing completed on 2024-12-01 06:45:41

0001 /*
0002     This file is part of the KDE libraries
0003     SPDX-FileCopyrightText: 2020 David Faure <faure@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006 */
0007 
0008 #ifndef WIDGETSUNTRUSTEDPROGRAMHANDLER_H
0009 #define WIDGETSUNTRUSTEDPROGRAMHANDLER_H
0010 
0011 #include "untrustedprogramhandlerinterface.h"
0012 
0013 #include <memory>
0014 
0015 class QDialog;
0016 class QWidget;
0017 
0018 namespace KIO
0019 {
0020 // TODO KF6: Make KIO::JobUiDelegate inherit from WidgetsUntrustedProgramHandler
0021 // (or even merge the two classes)
0022 // so that setDelegate(new KIO::JobUiDelegate) provides both dialog boxes on error
0023 // and the messagebox for handling untrusted programs.
0024 // Then port those users of ApplicationLauncherJob which were setting a KDialogJobUiDelegate
0025 // to set a KIO::JobUiDelegate instead.
0026 class WidgetsUntrustedProgramHandlerPrivate;
0027 
0028 class WidgetsUntrustedProgramHandler : public UntrustedProgramHandlerInterface
0029 {
0030     Q_OBJECT
0031 public:
0032     explicit WidgetsUntrustedProgramHandler(QObject *parent = nullptr);
0033     ~WidgetsUntrustedProgramHandler() override;
0034 
0035     void showUntrustedProgramWarning(KJob *job, const QString &programName) override;
0036 
0037     // Compat code for KRun::runUrl. Will disappear before KF6
0038     bool execUntrustedProgramWarning(QWidget *window, const QString &programName);
0039 
0040     void setWindow(QWidget *window);
0041 
0042 private:
0043     QDialog *createDialog(QWidget *parentWidget, const QString &programName);
0044 
0045     std::unique_ptr<WidgetsUntrustedProgramHandlerPrivate> d;
0046 };
0047 
0048 }
0049 
0050 #endif // WIDGETSUNTRUSTEDPROGRAMHANDLER_H