6#include <QtCore/QDebug>
8#include <QtGui/private/qwasmlocalfileaccess_p.h>
9#include <QtCore/private/qwasmlocalfileengine_p.h>
13QWasmFileDialogHelper::QWasmFileDialogHelper()
14 : m_eventLoop(
nullptr)
19QWasmFileDialogHelper::~QWasmFileDialogHelper()
24bool QWasmFileDialogHelper::defaultNameFilterDisables()
const
29void QWasmFileDialogHelper::setDirectory(
const QUrl &directory)
34QUrl QWasmFileDialogHelper::directory()
const
39void QWasmFileDialogHelper::selectFile(
const QUrl &file)
41 m_selectedFiles.clear();
42 m_selectedFiles.append(file);
45QList<QUrl> QWasmFileDialogHelper::selectedFiles()
const
47 return m_selectedFiles;
50void QWasmFileDialogHelper::setFilter()
55void QWasmFileDialogHelper::selectNameFilter(
const QString &filter)
61QString QWasmFileDialogHelper::selectedNameFilter()
const
66void QWasmFileDialogHelper::exec()
69 m_eventLoop = &eventLoop;
71 m_eventLoop =
nullptr;
74bool QWasmFileDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent)
83void QWasmFileDialogHelper::hide()
88void QWasmFileDialogHelper::showFileDialog()
90 if (options()->acceptMode() == QFileDialogOptions::AcceptOpen) {
92 QString nameFilter = options()->nameFilters().join(
";;");
93 if (nameFilter.isEmpty())
96 QWasmLocalFileAccess::showOpenFileDialog(nameFilter.toStdString(), [
this](
bool accepted, std::vector<qstdweb::File> files) {
97 onOpenDialogClosed(accepted, files);
99 }
else if (options()->acceptMode() == QFileDialogOptions::AcceptSave) {
100 QString suggestion = m_selectedFiles.isEmpty() ? QString() : QUrl(m_selectedFiles.first()).fileName();
101 m_selectedFiles.clear();
103 QWasmLocalFileAccess::showSaveFileDialog(suggestion.toStdString(), [
this](
bool accepted, qstdweb::FileSystemFileHandle file){
104 onSaveDialogClosed(accepted, file);
109void QWasmFileDialogHelper::onOpenDialogClosed(
bool accepted, std::vector<qstdweb::File> files)
111 m_selectedFiles.clear();
119 for (
const auto &file : files) {
120 QString wasmFileName = QWasmFileEngineHandler::addFile(file);
121 QUrl fileUrl(wasmFileName);
122 m_selectedFiles.append(fileUrl);
126 if (m_selectedFiles.size() > 0) {
127 emit fileSelected(m_selectedFiles.first());
128 emit filesSelected(m_selectedFiles);
137void QWasmFileDialogHelper::onSaveDialogClosed(
bool accepted, qstdweb::FileSystemFileHandle file)
145 QString wasmFileName = QWasmFileEngineHandler::addFile(file);
146 QUrl fileUrl(wasmFileName);
147 m_selectedFiles.append(fileUrl);
150 emit fileSelected(m_selectedFiles.first());
Combined button and popup list for selecting options.