File indexing completed on 2025-03-23 05:08:26
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