File indexing completed on 2024-04-28 05:36:52

0001 /*
0002  * SPDX-FileCopyrightText: 2017 Red Hat Inc
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  *
0006  * SPDX-FileCopyrightText: 2017 Jan Grulich <jgrulich@redhat.com>
0007  * SPDX-FileCopyrightText: 2022 Harald Sitter <sitter@kde.org>
0008  */
0009 
0010 #ifndef XDG_DESKTOP_PORTAL_KDE_REQUEST_H
0011 #define XDG_DESKTOP_PORTAL_KDE_REQUEST_H
0012 
0013 #include <QDBusVirtualObject>
0014 #include <QObject>
0015 
0016 class QDBusObjectPath;
0017 
0018 class Request : public QDBusVirtualObject
0019 {
0020     Q_OBJECT
0021 public:
0022     explicit Request(const QDBusObjectPath &handle, QObject *parent = nullptr, const QString &portalName = QString(), const QVariant &data = QVariant());
0023 
0024     bool handleMessage(const QDBusMessage &message, const QDBusConnection &connection) override;
0025     QString introspect(const QString &path) const override;
0026 
0027     template<class T>
0028     static Request *makeClosableDialogRequest(const QDBusObjectPath &handle, T *dialogAndParent)
0029     {
0030         auto request = new Request(handle, dialogAndParent);
0031         connect(request, &Request::closeRequested, dialogAndParent, &T::reject);
0032         return request;
0033     }
0034 
0035 Q_SIGNALS:
0036     void closeRequested();
0037 
0038 private:
0039     const QVariant m_data;
0040     const QString m_portalName;
0041 };
0042 
0043 #endif // XDG_DESKTOP_PORTAL_KDE_REQUEST_H