69QQuickFolderDialog::QQuickFolderDialog(QObject *parent)
70 : QQuickAbstractDialog(QQuickDialogType::FolderDialog, parent),
71 m_options(QFileDialogOptions::create())
73 m_options->setFileMode(QFileDialogOptions::Directory);
74 m_options->setAcceptMode(QFileDialogOptions::AcceptOpen);
75 m_options->setInitialDirectory(QUrl::fromLocalFile(QDir::currentPath()));
122void QQuickFolderDialog::setSelectedFolder(
const QUrl &folder)
124 if (folder == selectedFolder())
127 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle())) {
128 fileDialog->selectFile(folder);
129 emit selectedFolderChanged();
185void QQuickFolderDialog::setAcceptLabel(
const QString &label)
187 if (label == m_options->labelText(QFileDialogOptions::Accept))
190 m_options->setLabelText(QFileDialogOptions::Accept, label);
191 emit acceptLabelChanged();
216void QQuickFolderDialog::setRejectLabel(
const QString &label)
218 if (label == m_options->labelText(QFileDialogOptions::Reject))
221 m_options->setLabelText(QFileDialogOptions::Reject, label);
222 emit rejectLabelChanged();
243void QQuickFolderDialog::onCreate(QPlatformDialogHelper *dialog)
245 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
246 connect(fileDialog, &QPlatformFileDialogHelper::directoryEntered,
this, &QQuickFolderDialog::currentFolderChanged);
247 connect(fileDialog, &QPlatformFileDialogHelper::currentChanged,
this, &QQuickFolderDialog::selectedFolderChanged);
248 fileDialog->setOptions(m_options);
252void QQuickFolderDialog::onShow(QPlatformDialogHelper *dialog)
254 m_options->setWindowTitle(title());
255 if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
256 fileDialog->setOptions(m_options);
258 const QUrl initialDir = m_options->initialDirectory();
260 if (m_firstShow && initialDir.isValid() && QDir(QQmlFile::urlToLocalFileOrQrc(initialDir)).exists())
261 fileDialog->setDirectory(m_options->initialDirectory());
263#if QT_CONFIG(quick_listview) && QT_CONFIG(quick_draganddrop)
264 if (QQuickPlatformFolderDialog *folderDialog = qobject_cast<QQuickPlatformFolderDialog *>(dialog))
265 folderDialog->dialog()->setPopupType(m_popupType);
268 QQuickAbstractDialog::onShow(dialog);