aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-08-14 11:58:44 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-08-14 10:09:17 +0000
commit6f5477369d252c0b4a10995830d16e83098c7c8b (patch)
tree0a5a046182f55bae561883e52847e8a094e15182
parent8dd5c0fd0eb3b25a700dd506af77e049e631d79d (diff)
FileDialog: add missing selectedNameFilter-property
Change-Id: If31d657e29a9cc3049af5cd3cf39d68979ff2db0 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
-rw-r--r--examples/quickcontrols2/texteditor/qml/texteditor.qml2
-rw-r--r--src/imports/platform/plugins.qmltypes1
-rw-r--r--src/imports/platform/qquickplatformfiledialog.cpp24
-rw-r--r--src/imports/platform/qquickplatformfiledialog_p.h5
4 files changed, 32 insertions, 0 deletions
diff --git a/examples/quickcontrols2/texteditor/qml/texteditor.qml b/examples/quickcontrols2/texteditor/qml/texteditor.qml
index 7d92bea9..dbe4777e 100644
--- a/examples/quickcontrols2/texteditor/qml/texteditor.qml
+++ b/examples/quickcontrols2/texteditor/qml/texteditor.qml
@@ -161,6 +161,7 @@ ApplicationWindow {
FileDialog {
id: openDialog
fileMode: FileDialog.OpenFile
+ selectedNameFilter: nameFilters[1]
nameFilters: ["Text files (*.txt)", "HTML files (*.html *.htm)"]
onAccepted: document.load(file)
}
@@ -170,6 +171,7 @@ ApplicationWindow {
fileMode: FileDialog.SaveFile
defaultSuffix: document.fileType
nameFilters: openDialog.nameFilters
+ selectedNameFilter: document.fileType === "txt" ? nameFilters[0] : nameFilters[1]
onAccepted: document.saveAs(file)
}
diff --git a/src/imports/platform/plugins.qmltypes b/src/imports/platform/plugins.qmltypes
index 1188697d..a6b80bda 100644
--- a/src/imports/platform/plugins.qmltypes
+++ b/src/imports/platform/plugins.qmltypes
@@ -118,6 +118,7 @@ Module {
Property { name: "folder"; type: "QUrl" }
Property { name: "options"; type: "QFileDialogOptions::FileDialogOptions" }
Property { name: "nameFilters"; type: "QStringList" }
+ Property { name: "selectedNameFilter"; type: "string" }
Property { name: "defaultSuffix"; type: "string" }
Property { name: "acceptLabel"; type: "string" }
Property { name: "rejectLabel"; type: "string" }
diff --git a/src/imports/platform/qquickplatformfiledialog.cpp b/src/imports/platform/qquickplatformfiledialog.cpp
index 99667262..466b33ed 100644
--- a/src/imports/platform/qquickplatformfiledialog.cpp
+++ b/src/imports/platform/qquickplatformfiledialog.cpp
@@ -324,6 +324,8 @@ void QQuickPlatformFileDialog::resetOptions()
example, \c Makefile). In a native Windows file dialog, \b{*.*} will match
such files, while in other types of file dialogs it may not. So it is better
to use \b{*} if you mean to select any file.
+
+ \sa selectedNameFilter
*/
QStringList QQuickPlatformFileDialog::nameFilters() const
{
@@ -345,6 +347,27 @@ void QQuickPlatformFileDialog::resetNameFilters()
}
/*!
+ \qmlproperty string Qt.labs.platform::FileDialog::selectedNameFilter
+
+ This property holds the currently selected name filter.
+
+ \sa nameFilters
+*/
+QString QQuickPlatformFileDialog::selectedNameFilter() const
+{
+ if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle()))
+ return fileDialog->selectedNameFilter();
+ return m_options->initiallySelectedNameFilter();
+}
+
+void QQuickPlatformFileDialog::setSelectedNameFilter(const QString &filter)
+{
+ if (QPlatformFileDialogHelper *fileDialog = qobject_cast<QPlatformFileDialogHelper *>(handle()))
+ fileDialog->selectNameFilter(filter);
+ m_options->setInitiallySelectedNameFilter(filter);
+}
+
+/*!
\qmlproperty string Qt.labs.platform::FileDialog::defaultSuffix
This property holds a suffix that is added to selected files that have
@@ -449,6 +472,7 @@ QPlatformDialogHelper *QQuickPlatformFileDialog::createHelper()
connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickPlatformFileDialog::currentFileChanged);
connect(fileDialog, &QPlatformFileDialogHelper::currentChanged, this, &QQuickPlatformFileDialog::currentFilesChanged);
connect(fileDialog, &QPlatformFileDialogHelper::directoryEntered, this, &QQuickPlatformFileDialog::folderChanged);
+ connect(fileDialog, &QPlatformFileDialogHelper::filterSelected, this, &QQuickPlatformFileDialog::selectedNameFilterChanged);
fileDialog->setOptions(m_options);
}
return dialog;
diff --git a/src/imports/platform/qquickplatformfiledialog_p.h b/src/imports/platform/qquickplatformfiledialog_p.h
index 2d3b82be..5d28c81d 100644
--- a/src/imports/platform/qquickplatformfiledialog_p.h
+++ b/src/imports/platform/qquickplatformfiledialog_p.h
@@ -65,6 +65,7 @@ class QQuickPlatformFileDialog : public QQuickPlatformDialog
Q_PROPERTY(QUrl folder READ folder WRITE setFolder NOTIFY folderChanged FINAL)
Q_PROPERTY(QFileDialogOptions::FileDialogOptions options READ options WRITE setOptions RESET resetOptions NOTIFY optionsChanged FINAL)
Q_PROPERTY(QStringList nameFilters READ nameFilters WRITE setNameFilters RESET resetNameFilters NOTIFY nameFiltersChanged FINAL)
+ Q_PROPERTY(QString selectedNameFilter READ selectedNameFilter WRITE setSelectedNameFilter NOTIFY selectedNameFilterChanged FINAL)
Q_PROPERTY(QString defaultSuffix READ defaultSuffix WRITE setDefaultSuffix RESET resetDefaultSuffix NOTIFY defaultSuffixChanged FINAL)
Q_PROPERTY(QString acceptLabel READ acceptLabel WRITE setAcceptLabel RESET resetAcceptLabel NOTIFY acceptLabelChanged FINAL)
Q_PROPERTY(QString rejectLabel READ rejectLabel WRITE setRejectLabel RESET resetRejectLabel NOTIFY rejectLabelChanged FINAL)
@@ -106,6 +107,9 @@ public:
void setNameFilters(const QStringList &filters);
void resetNameFilters();
+ QString selectedNameFilter() const;
+ void setSelectedNameFilter(const QString &filter);
+
QString defaultSuffix() const;
void setDefaultSuffix(const QString &suffix);
void resetDefaultSuffix();
@@ -127,6 +131,7 @@ Q_SIGNALS:
void folderChanged();
void optionsChanged();
void nameFiltersChanged();
+ void selectedNameFilterChanged();
void defaultSuffixChanged();
void acceptLabelChanged();
void rejectLabelChanged();