summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@theqtcompany.com>2015-03-03 14:06:39 +0100
committerRichard Moe Gustavsen <richard.gustavsen@theqtcompany.com>2015-03-18 09:20:40 +0000
commitbb95b8e3eb464d26ab3e78b49c8276277c929470 (patch)
treead9f5343e35089a2ad7fdb7e4f693a41958ccbb7
parentcbd066616b0b24fb8003323b467a3269b7edb602 (diff)
downloadqtquickcontrols-bb95b8e3eb464d26ab3e78b49c8276277c929470.tar.gz
Dialogs: override selectedUrls in QQPlatformfiledialog
Rather than checking if a dialog helper is in use in QAbstractFileDialog, we override selectedUrls in QQuickPlatformFileDialog. Otherwise the version in QQuickFileDialog will be called first, which tries to return selectedUrls from the QML version (which might not be in use). Change-Id: If61647078ed2dd535384dcea67767bfc729edfe0 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
-rw-r--r--src/dialogs/qquickabstractfiledialog.cpp7
-rw-r--r--src/dialogs/qquickabstractfiledialog_p.h2
-rw-r--r--src/dialogs/qquickplatformfiledialog.cpp7
-rw-r--r--src/dialogs/qquickplatformfiledialog_p.h1
-rw-r--r--src/widgets/qquickqfiledialog.cpp7
-rw-r--r--src/widgets/qquickqfiledialog_p.h2
6 files changed, 18 insertions, 8 deletions
diff --git a/src/dialogs/qquickabstractfiledialog.cpp b/src/dialogs/qquickabstractfiledialog.cpp
index 9e1e605e..233a2db7 100644
--- a/src/dialogs/qquickabstractfiledialog.cpp
+++ b/src/dialogs/qquickabstractfiledialog.cpp
@@ -194,13 +194,6 @@ QUrl QQuickAbstractFileDialog::fileUrl() const
return (urls.count() == 1) ? urls[0] : QUrl();
}
-QList<QUrl> QQuickAbstractFileDialog::fileUrls() const
-{
- if (m_dlgHelper)
- return m_dlgHelper->selectedFiles();
- return QList<QUrl>();
-}
-
void QQuickAbstractFileDialog::updateModes()
{
// The 4 possible modes are AnyFile, ExistingFile, Directory, ExistingFiles
diff --git a/src/dialogs/qquickabstractfiledialog_p.h b/src/dialogs/qquickabstractfiledialog_p.h
index 054afbfe..c7320fd1 100644
--- a/src/dialogs/qquickabstractfiledialog_p.h
+++ b/src/dialogs/qquickabstractfiledialog_p.h
@@ -84,7 +84,7 @@ public:
QStringList selectedNameFilterExtensions() const;
int selectedNameFilterIndex() const;
QUrl fileUrl() const;
- virtual QList<QUrl> fileUrls() const;
+ virtual QList<QUrl> fileUrls() const = 0;
bool sidebarVisible() const { return m_sidebarVisible; }
public Q_SLOTS:
diff --git a/src/dialogs/qquickplatformfiledialog.cpp b/src/dialogs/qquickplatformfiledialog.cpp
index dcdeeadd..aacccc72 100644
--- a/src/dialogs/qquickplatformfiledialog.cpp
+++ b/src/dialogs/qquickplatformfiledialog.cpp
@@ -175,6 +175,13 @@ QQuickPlatformFileDialog::~QQuickPlatformFileDialog()
delete m_dlgHelper;
}
+QList<QUrl> QQuickPlatformFileDialog::fileUrls() const
+{
+ if (m_dialogHelperInUse)
+ return m_dlgHelper->selectedFiles();
+ return QQuickFileDialog::fileUrls();
+}
+
void QQuickPlatformFileDialog::setModality(Qt::WindowModality m)
{
#ifdef Q_OS_WIN
diff --git a/src/dialogs/qquickplatformfiledialog_p.h b/src/dialogs/qquickplatformfiledialog_p.h
index 0053a248..5a5cc75f 100644
--- a/src/dialogs/qquickplatformfiledialog_p.h
+++ b/src/dialogs/qquickplatformfiledialog_p.h
@@ -60,6 +60,7 @@ public:
QQuickPlatformFileDialog(QObject *parent = 0);
virtual ~QQuickPlatformFileDialog();
virtual void setModality(Qt::WindowModality m) Q_DECL_OVERRIDE;
+ virtual QList<QUrl> fileUrls() const Q_DECL_OVERRIDE;
protected:
QPlatformFileDialogHelper *helper();
diff --git a/src/widgets/qquickqfiledialog.cpp b/src/widgets/qquickqfiledialog.cpp
index c922e78f..90d1ef9e 100644
--- a/src/widgets/qquickqfiledialog.cpp
+++ b/src/widgets/qquickqfiledialog.cpp
@@ -136,6 +136,13 @@ QPlatformFileDialogHelper *QQuickQFileDialog::helper()
return m_dlgHelper;
}
+QList<QUrl> QQuickQFileDialog::fileUrls() const
+{
+ if (m_dialogHelperInUse)
+ return m_dlgHelper->selectedFiles();
+ return QList<QUrl>();
+}
+
QFileDialogHelper::QFileDialogHelper() :
QPlatformFileDialogHelper()
{
diff --git a/src/widgets/qquickqfiledialog_p.h b/src/widgets/qquickqfiledialog_p.h
index d6214285..2747749e 100644
--- a/src/widgets/qquickqfiledialog_p.h
+++ b/src/widgets/qquickqfiledialog_p.h
@@ -61,6 +61,8 @@ public:
QQuickQFileDialog(QObject *parent = 0);
virtual ~QQuickQFileDialog();
+ virtual QList<QUrl> fileUrls() const Q_DECL_OVERRIDE;
+
protected:
QPlatformFileDialogHelper *helper();