Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquickfolderdialog.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 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
5
6#include <QtCore/qloggingcategory.h>
7#include <QtQml/qqmlfile.h>
8
10
15
72
81{
82 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle()))
83 return fileDialog->directory();
84 return m_options->initialDirectory();
85}
86
88{
89 if (folder == m_options->initialDirectory())
90 return;
91
92 m_options->setInitialDirectory(folder);
94}
95
108{
109 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) {
110 const QList<QUrl> selectedFiles = fileDialog->selectedFiles();
111 if (!selectedFiles.isEmpty())
112 return selectedFiles.first();
113 }
114 return QUrl();
115}
116
118{
119 if (folder == selectedFolder())
120 return;
121
122 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) {
123 fileDialog->selectFile(folder);
125 }
126}
127
144QFileDialogOptions::FileDialogOptions QQuickFolderDialog::options() const
145{
146 return m_options->options();
147}
148
149void QQuickFolderDialog::setOptions(QFileDialogOptions::FileDialogOptions options)
150{
151 if (options == m_options->options())
152 return;
153
154 m_options->setOptions(options);
156}
157
162
179
188
193
210
219
224
226{
228 return false;
229
231 qCDebug(lcDialogs) << " - the FolderDialog was told not to use a native dialog; not using native dialog";
232 return false;
233 }
234
235 return true;
236}
237
239{
240 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
243 fileDialog->setOptions(m_options);
244 }
245}
246
248{
249 m_options->setWindowTitle(title());
250 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
251 fileDialog->setOptions(m_options);
252
253 const QUrl initialDir = m_options->initialDirectory();
254 // If it's not valid, we shouldn't set it.
255 if (m_firstShow && initialDir.isValid() && QDir(QQmlFile::urlToLocalFileOrQrc(initialDir)).exists())
256 fileDialog->setDirectory(m_options->initialDirectory());
257 }
259}
260
262
263#include "moc_qquickfolderdialog_p.cpp"
\inmodule QtCore
Definition qdir.h:20
static QString currentPath()
Returns the absolute path of the application's current directory.
Definition qdir.cpp:2054
void setWindowTitle(const QString &)
QString labelText(DialogLabel label) const
void setOptions(FileDialogOptions options)
FileDialogOptions options() const
void setLabelText(DialogLabel label, const QString &text)
void setFileMode(FileMode mode)
void setAcceptMode(AcceptMode mode)
void setInitialDirectory(const QUrl &)
bool testOption(FileDialogOption option) const
\inmodule QtCore
Definition qobject.h:103
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2960
The QPlatformDialogHelper class allows for platform-specific customization of dialogs.
The QPlatformFileDialogHelper class allows for platform-specific customization of file dialogs.
void currentChanged(const QUrl &path)
void directoryEntered(const QUrl &directory)
static QString urlToLocalFileOrQrc(const QString &)
If url is a local file returns a path suitable for passing to \l{QFile}.
Definition qqmlfile.cpp:742
QPlatformDialogHelper * handle() const
virtual bool useNativeDialog() const
virtual void onShow(QPlatformDialogHelper *dialog)
void setSelectedFolder(const QUrl &folder)
void onCreate(QPlatformDialogHelper *dialog) override
void selectedFolderChanged()
QFileDialogOptions::FileDialogOptions options
void currentFolderChanged()
bool useNativeDialog() const override
void setOptions(QFileDialogOptions::FileDialogOptions options)
void setCurrentFolder(const QUrl &folder)
void setRejectLabel(const QString &label)
void setAcceptLabel(const QString &label)
void onShow(QPlatformDialogHelper *dialog) override
QQuickFolderDialog(QObject *parent=nullptr)
A native folder dialog.
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qurl.h:94
static QUrl fromLocalFile(const QString &localfile)
Returns a QUrl representation of localFile, interpreted as a local file.
Definition qurl.cpp:3368
Combined button and popup list for selecting options.
SharedPointerFileDialogOptions m_options
#define qCDebug(category,...)
GLuint GLsizei const GLchar * label
[43]
QQuickDialogType
#define emit
QFileDialog dialog(this)
[1]
view create()