QmlMaterial 0.1.0
Loading...
Searching...
No Matches
file_dialog_p.hpp
1#pragma once
2
3#include <QObject>
4#include <QList>
5#include <QString>
6#include <QStringList>
7#include <QUrl>
8#include <QWindow>
9#include <QPointer>
10
11namespace qml_material
12{
13
14struct PortalFilter {
15 QString name;
16 QStringList globs;
17};
18
19struct PortalRequest {
20 QString title;
21 QString accept_label;
22 bool save { false };
23 bool multiple { false };
24 bool directory { false };
25 QList<PortalFilter> filters;
26 int current_filter_index { -1 };
27 QUrl current_folder;
28 QString current_name;
29 QPointer<QWindow> parent_window;
30};
31
32class FileDialogBackend : public QObject {
33 Q_OBJECT
34public:
35 using QObject::QObject;
36 ~FileDialogBackend() override = default;
37
38 virtual void open(const PortalRequest& req) = 0;
39 virtual void close() = 0;
40
41Q_SIGNALS:
42 void accepted(QList<QUrl> urls);
43 void rejected();
44};
45
46FileDialogBackend* makeFileDialogBackend(QObject* parent);
47
48} // namespace qml_material