QmlMaterial 0.1.0
Loading...
Searching...
No Matches
file_dialog_xdp.hpp
1#pragma once
2
3#include <QPointer>
4#include <QtDBus/QDBusArgument>
5
6#include "dialog/file_dialog_p.hpp"
7
8namespace qml_material
9{
10
11struct XdpFilterPattern {
12 quint32 type { 0 };
13 QString glob;
14};
15
16struct XdpFilter {
17 QString name;
18 QList<XdpFilterPattern> patterns;
19};
20
21QDBusArgument& operator<<(QDBusArgument&, const XdpFilterPattern&);
22const QDBusArgument& operator>>(const QDBusArgument&, XdpFilterPattern&);
23QDBusArgument& operator<<(QDBusArgument&, const XdpFilter&);
24const QDBusArgument& operator>>(const QDBusArgument&, XdpFilter&);
25
26class XdpDialogCall;
27
28class XdpFileDialogBackend : public FileDialogBackend {
29 Q_OBJECT
30public:
31 explicit XdpFileDialogBackend(QObject* parent = nullptr);
32 ~XdpFileDialogBackend() override;
33
34 void open(const PortalRequest& req) override;
35 void close() override;
36
37private:
38 QPointer<XdpDialogCall> m_current;
39};
40
41} // namespace qml_material
42
43Q_DECLARE_METATYPE(qml_material::XdpFilterPattern)
44Q_DECLARE_METATYPE(qml_material::XdpFilter)
45Q_DECLARE_METATYPE(QList<qml_material::XdpFilter>)