aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/qquickplatformfiledialog.cpp
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-08-14 11:01:38 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-08-14 09:25:42 +0000
commit2e09e597ab3df5a13f89e945a0a90724d5c5a3f0 (patch)
treef671841761cc372ddb1499574172564dd1378505 /src/imports/platform/qquickplatformfiledialog.cpp
parentdeb0921b8240a0240e595896debb973a6104935a (diff)
Platform: create platform dialog instances lazily on demand
Change-Id: Ie963cb5c082b49205f7b7244ace3b88254ec37c7 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'src/imports/platform/qquickplatformfiledialog.cpp')
-rw-r--r--src/imports/platform/qquickplatformfiledialog.cpp51
1 files changed, 27 insertions, 24 deletions
diff --git a/src/imports/platform/qquickplatformfiledialog.cpp b/src/imports/platform/qquickplatformfiledialog.cpp
index 8ff5c4ac..1900952c 100644
--- a/src/imports/platform/qquickplatformfiledialog.cpp
+++ b/src/imports/platform/qquickplatformfiledialog.cpp
@@ -118,30 +118,6 @@ QQuickPlatformFileDialog::QQuickPlatformFileDialog(QObject *parent)
{
m_options->setFileMode(QFileDialogOptions::ExistingFile);
m_options->setAcceptMode(QFileDialogOptions::AcceptOpen);
-
- QPlatformDialogHelper *dialog = QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(QPlatformTheme::FileDialog);
-#ifdef QT_WIDGETS_LIB
- if (!dialog)
- dialog = new QWidgetPlatformFileDialog(this);
-#endif
- qCDebug(qtLabsPlatformDialogs) << "FileDialog:" << dialog;
-
- if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
- connect(fileDialog, &QPlatformFileDialogHelper::fileSelected, [this](const QUrl &file) {
- emit fileSelected(addDefaultSuffix(file));
- });
- connect(fileDialog, &QPlatformFileDialogHelper::filesSelected, [this](const QList<QUrl> &files) {
- emit filesSelected(addDefaultSuffixes(files));
- });
- connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, [this](const QUrl &url) {
- if (m_current == url)
- return;
- m_current = url;
- emit currentFileChanged();
- });
- fileDialog->setOptions(m_options);
- }
- setHandle(dialog);
}
/*!
@@ -366,6 +342,33 @@ void QQuickPlatformFileDialog::resetRejectLabel()
setRejectLabel(QString());
}
+QPlatformDialogHelper *QQuickPlatformFileDialog::createHelper()
+{
+ QPlatformDialogHelper *dialog = QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(QPlatformTheme::FileDialog);
+#ifdef QT_WIDGETS_LIB
+ if (!dialog)
+ dialog = new QWidgetPlatformFileDialog(this);
+#endif
+ qCDebug(qtLabsPlatformDialogs) << "FileDialog:" << dialog;
+
+ if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
+ connect(fileDialog, &QPlatformFileDialogHelper::fileSelected, [this](const QUrl &file) {
+ emit fileSelected(addDefaultSuffix(file));
+ });
+ connect(fileDialog, &QPlatformFileDialogHelper::filesSelected, [this](const QList<QUrl> &files) {
+ emit filesSelected(addDefaultSuffixes(files));
+ });
+ connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, [this](const QUrl &url) {
+ if (m_current == url)
+ return;
+ m_current = url;
+ emit currentFileChanged();
+ });
+ fileDialog->setOptions(m_options);
+ }
+ return dialog;
+}
+
void QQuickPlatformFileDialog::applyOptions()
{
m_options->setWindowTitle(title());