Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquicklabsplatformfiledialog_p.h
Go to the documentation of this file.
1// Copyright (C) 2017 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QQUICKLABSPLATFORMFILEDIALOG_P_H
6#define QQUICKLABSPLATFORMFILEDIALOG_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
20#include <QtCore/qurl.h>
21#include <QtQml/qqml.h>
22
23#if QT_DEPRECATED_SINCE(6, 9)
24
25QT_BEGIN_NAMESPACE
26
27class QQuickLabsPlatformFileNameFilter;
28
29class QQuickLabsPlatformFileDialog : public QQuickLabsPlatformDialog
30{
31 Q_OBJECT
32 QML_NAMED_ELEMENT(FileDialog)
33 QML_EXTENDED_NAMESPACE(QFileDialogOptions)
34 Q_PROPERTY(FileMode fileMode READ fileMode WRITE setFileMode NOTIFY fileModeChanged FINAL)
35 Q_PROPERTY(QUrl file READ file WRITE setFile NOTIFY fileChanged FINAL)
36 Q_PROPERTY(QList<QUrl> files READ files WRITE setFiles NOTIFY filesChanged FINAL)
37 Q_PROPERTY(QUrl currentFile READ currentFile WRITE setCurrentFile NOTIFY currentFileChanged FINAL)
38 Q_PROPERTY(QList<QUrl> currentFiles READ currentFiles WRITE setCurrentFiles NOTIFY currentFilesChanged FINAL)
39 Q_PROPERTY(QUrl folder READ folder WRITE setFolder NOTIFY folderChanged FINAL)
40 Q_PROPERTY(QFileDialogOptions::FileDialogOptions options READ options WRITE setOptions RESET resetOptions NOTIFY optionsChanged FINAL)
41 Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters RESET resetNameFilters NOTIFY nameFiltersChanged FINAL)
42 Q_PROPERTY(QQuickLabsPlatformFileNameFilter *selectedNameFilter READ selectedNameFilter CONSTANT FINAL)
43 Q_PROPERTY(QString defaultSuffix READ defaultSuffix WRITE setDefaultSuffix RESET resetDefaultSuffix NOTIFY defaultSuffixChanged FINAL)
44 Q_PROPERTY(QString acceptLabel READ acceptLabel WRITE setAcceptLabel RESET resetAcceptLabel NOTIFY acceptLabelChanged FINAL)
45 Q_PROPERTY(QString rejectLabel READ rejectLabel WRITE setRejectLabel RESET resetRejectLabel NOTIFY rejectLabelChanged FINAL)
46
47public:
48 explicit QQuickLabsPlatformFileDialog(QObject *parent = nullptr);
49
50 enum FileMode {
51 OpenFile,
52 OpenFiles,
53 SaveFile
54 };
55 Q_ENUM(FileMode)
56
57 FileMode fileMode() const;
58 void setFileMode(FileMode fileMode);
59
60 QUrl file() const;
61 void setFile(const QUrl &file);
62
63 QList<QUrl> files() const;
64 void setFiles(const QList<QUrl> &files);
65
66 QUrl currentFile() const;
67 void setCurrentFile(const QUrl &file);
68
69 QList<QUrl> currentFiles() const;
70 void setCurrentFiles(const QList<QUrl> &files);
71
72 QUrl folder() const;
73 void setFolder(const QUrl &folder);
74
75 QFileDialogOptions::FileDialogOptions options() const;
76 void setOptions(QFileDialogOptions::FileDialogOptions options);
77 void resetOptions();
78
79 QStringList nameFilters() const;
80 void setNameFilters(const QStringList &filters);
81 void resetNameFilters();
82
83 QQuickLabsPlatformFileNameFilter *selectedNameFilter() const;
84
85 QString defaultSuffix() const;
86 void setDefaultSuffix(const QString &suffix);
87 void resetDefaultSuffix();
88
89 QString acceptLabel() const;
90 void setAcceptLabel(const QString &label);
91 void resetAcceptLabel();
92
93 QString rejectLabel() const;
94 void setRejectLabel(const QString &label);
95 void resetRejectLabel();
96
97Q_SIGNALS:
98 void fileModeChanged();
99 void fileChanged();
100 void filesChanged();
101 void currentFileChanged();
102 void currentFilesChanged();
103 void folderChanged();
104 void optionsChanged();
105 void nameFiltersChanged();
106 void defaultSuffixChanged();
107 void acceptLabelChanged();
108 void rejectLabelChanged();
109
110protected:
111 bool useNativeDialog() const override;
112 void onCreate(QPlatformDialogHelper *dialog) override;
113 void onShow(QPlatformDialogHelper *dialog) override;
114 void onHide(QPlatformDialogHelper *dialog) override;
115 void accept() override;
116
117private:
118 QUrl addDefaultSuffix(const QUrl &file) const;
119 QList<QUrl> addDefaultSuffixes(const QList<QUrl> &files) const;
120
121 FileMode m_fileMode;
122 QList<QUrl> m_files;
123 bool m_firstShow = true;
124 QSharedPointer<QFileDialogOptions> m_options;
125 mutable QQuickLabsPlatformFileNameFilter *m_selectedNameFilter;
126};
127
128class QQuickLabsPlatformFileNameFilter : public QObject
129{
130 Q_OBJECT
131 QML_ANONYMOUS
132 Q_PROPERTY(int index READ index WRITE setIndex NOTIFY indexChanged FINAL)
133 Q_PROPERTY(QString name READ name NOTIFY nameChanged FINAL)
134 Q_PROPERTY(QStringList extensions READ extensions NOTIFY extensionsChanged FINAL)
135
136public:
137 explicit QQuickLabsPlatformFileNameFilter(QObject *parent = nullptr);
138
139 int index() const;
140 void setIndex(int index);
141
142 QString name() const;
143 QStringList extensions() const;
144
145 QSharedPointer<QFileDialogOptions> options() const;
146 void setOptions(const QSharedPointer<QFileDialogOptions> &options);
147
148 void update(const QString &filter);
149
150Q_SIGNALS:
151 void indexChanged(int index);
152 void nameChanged(const QString &name);
153 void extensionsChanged(const QStringList &extensions);
154
155private:
156 QStringList nameFilters() const;
157 QString nameFilter(int index) const;
158
159 int m_index;
160 QString m_name;
161 QStringList m_extensions;
162 QSharedPointer<QFileDialogOptions> m_options;
163};
164
165QT_END_NAMESPACE
166
167#endif // QT_DEPRECATED_SINCE(6, 9)
168
169#endif // QQUICKLABSPLATFORMFILEDIALOG_P_H