aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/platform/qquickplatformfolderdialog.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/qquickplatformfolderdialog.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/qquickplatformfolderdialog.cpp')
-rw-r--r--src/imports/platform/qquickplatformfolderdialog.cpp43
1 files changed, 23 insertions, 20 deletions
diff --git a/src/imports/platform/qquickplatformfolderdialog.cpp b/src/imports/platform/qquickplatformfolderdialog.cpp
index bf0ba09b..04c39f6f 100644
--- a/src/imports/platform/qquickplatformfolderdialog.cpp
+++ b/src/imports/platform/qquickplatformfolderdialog.cpp
@@ -118,26 +118,6 @@ QQuickPlatformFolderDialog::QQuickPlatformFolderDialog(QObject *parent)
{
m_options->setFileMode(QFileDialogOptions::Directory);
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) << "FolderDialog:" << dialog;
-
- if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
- connect(fileDialog, &QPlatformFileDialogHelper::fileSelected, this, &QQuickPlatformFolderDialog::folderSelected);
- connect(fileDialog, &QPlatformFileDialogHelper::filesSelected, this, &QQuickPlatformFolderDialog::foldersSelected);
- connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, [this](const QUrl &url) {
- if (m_current == url)
- return;
- m_current = url;
- emit currentFolderChanged();
- });
- fileDialog->setOptions(m_options);
- }
- setHandle(dialog);
}
/*!
@@ -259,6 +239,29 @@ void QQuickPlatformFolderDialog::resetRejectLabel()
setRejectLabel(QString());
}
+QPlatformDialogHelper *QQuickPlatformFolderDialog::createHelper()
+{
+ QPlatformDialogHelper *dialog = QGuiApplicationPrivate::platformTheme()->createPlatformDialogHelper(QPlatformTheme::FileDialog);
+#ifdef QT_WIDGETS_LIB
+ if (!dialog)
+ dialog = new QWidgetPlatformFileDialog(this);
+#endif
+ qCDebug(qtLabsPlatformDialogs) << "FolderDialog:" << dialog;
+
+ if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(dialog)) {
+ connect(fileDialog, &QPlatformFileDialogHelper::fileSelected, this, &QQuickPlatformFolderDialog::folderSelected);
+ connect(fileDialog, &QPlatformFileDialogHelper::filesSelected, this, &QQuickPlatformFolderDialog::foldersSelected);
+ connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, [this](const QUrl &url) {
+ if (m_current == url)
+ return;
+ m_current = url;
+ emit currentFolderChanged();
+ });
+ fileDialog->setOptions(m_options);
+ }
+ return dialog;
+}
+
void QQuickPlatformFolderDialog::applyOptions()
{
m_options->setWindowTitle(title());