7#include <QtCore/QDebug>
9#include <QtGui/private/qwasmlocalfileaccess_p.h>
10#include <QtCore/private/qwasmlocalfileengine_p.h>
14QWasmFileDialogHelper::QWasmFileDialogHelper()
15 : m_eventLoop(
nullptr)
20QWasmFileDialogHelper::~QWasmFileDialogHelper()
25bool QWasmFileDialogHelper::defaultNameFilterDisables()
const
30void QWasmFileDialogHelper::setDirectory(
const QUrl &directory)
35QUrl QWasmFileDialogHelper::directory()
const
40void QWasmFileDialogHelper::selectFile(
const QUrl &file)
42 m_selectedFiles.clear();
43 m_selectedFiles.append(file);
46QList<QUrl> QWasmFileDialogHelper::selectedFiles()
const
48 return m_selectedFiles;
51void QWasmFileDialogHelper::setFilter()
56void QWasmFileDialogHelper::selectNameFilter(
const QString &filter)
62QString QWasmFileDialogHelper::selectedNameFilter()
const
67void QWasmFileDialogHelper::exec()
70 m_eventLoop = &eventLoop;
72 m_eventLoop =
nullptr;
75bool QWasmFileDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent)
84void QWasmFileDialogHelper::hide()
89void QWasmFileDialogHelper::showFileDialog()
91 if (options()->acceptMode() == QFileDialogOptions::AcceptOpen) {
93 QString nameFilter = options()->nameFilters().join(
";;");
94 if (nameFilter.isEmpty())
97 QWasmLocalFileAccess::showOpenFileDialog(nameFilter.toStdString(), [
this](
bool accepted, std::vector<qstdweb::File> files) {
98 onOpenDialogClosed(accepted, files);
100 }
else if (options()->acceptMode() == QFileDialogOptions::AcceptSave) {
101 QString suggestion = m_selectedFiles.isEmpty() ? QString() : QUrl(m_selectedFiles.first()).fileName();
102 m_selectedFiles.clear();
104 QWasmLocalFileAccess::showSaveFileDialog(suggestion.toStdString(), [
this](
bool accepted, qstdweb::FileSystemFileHandle file){
105 onSaveDialogClosed(accepted, file);
110void QWasmFileDialogHelper::onOpenDialogClosed(
bool accepted, std::vector<qstdweb::File> files)
112 m_selectedFiles.clear();
120 for (
const auto &file : files) {
121 QString wasmFileName = QWasmFileEngineHandler::addFile(file);
122 QUrl fileUrl(wasmFileName);
123 m_selectedFiles.append(fileUrl);
127 if (m_selectedFiles.size() > 0) {
128 emit fileSelected(m_selectedFiles.first());
129 emit filesSelected(m_selectedFiles);
138void QWasmFileDialogHelper::onSaveDialogClosed(
bool accepted, qstdweb::FileSystemFileHandle file)
146 QString wasmFileName = QWasmFileEngineHandler::addFile(file);
147 QUrl fileUrl(wasmFileName);
148 m_selectedFiles.append(fileUrl);
151 emit fileSelected(m_selectedFiles.first());
Combined button and popup list for selecting options.