summaryrefslogtreecommitdiff
path: root/src/dialogs/DefaultFileDialog.qml
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-02-16 07:02:56 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-02-16 07:02:56 +0100
commit1d61e0052b6a94546f264c3a37a19db09003d7c8 (patch)
tree9311e07960d5b08e9948b615f992c36e7bce1cf9 /src/dialogs/DefaultFileDialog.qml
parent571a44a4dde8f047773f4e91a4a6941cb4cdf212 (diff)
parent67041bbc667a10ae14a15ed8755b2b1bbf91b686 (diff)
downloadqtquickcontrols-1d61e0052b6a94546f264c3a37a19db09003d7c8.tar.gz
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts: .qmake.conf src/dialogs/qquickabstractfiledialog.cpp src/dialogs/qquickfiledialog.cpp Change-Id: I60aab7c7e819f82f82fc30f473b36a7a57d9a91a
Diffstat (limited to 'src/dialogs/DefaultFileDialog.qml')
-rw-r--r--src/dialogs/DefaultFileDialog.qml44
1 files changed, 33 insertions, 11 deletions
diff --git a/src/dialogs/DefaultFileDialog.qml b/src/dialogs/DefaultFileDialog.qml
index 05232268..cc663ccb 100644
--- a/src/dialogs/DefaultFileDialog.qml
+++ b/src/dialogs/DefaultFileDialog.qml
@@ -51,10 +51,39 @@ import "qml"
AbstractFileDialog {
id: root
- folder: view.model.folder
+ Component {
+ id: modelComponent
+ FolderListModel {
+ showFiles: !root.selectFolder
+ nameFilters: root.selectedNameFilterExtensions
+ sortField: (view.sortIndicatorColumn === 0 ? FolderListModel.Name :
+ (view.sortIndicatorColumn === 1 ? FolderListModel.Type :
+ (view.sortIndicatorColumn === 2 ? FolderListModel.Size : FolderListModel.LastModified)))
+ sortReversed: view.sortIndicatorOrder === Qt.DescendingOrder
+ }
+ }
onVisibleChanged: {
if (visible) {
+ // If the TableView doesn't have a model yet, create it asynchronously to avoid a UI freeze
+ if (!view.model) {
+ var incubator = modelComponent.incubateObject(null, { })
+ function init(model) {
+ view.model = model
+ model.nameFilters = root.selectedNameFilterExtensions
+ root.folder = model.folder
+ }
+
+ if (incubator.status === Component.Ready) {
+ init(incubator.object)
+ } else {
+ incubator.onStatusChanged = function(status) {
+ if (status === Component.Ready)
+ init(incubator.object)
+ }
+ }
+ }
+
view.needsWidthAdjustment = true
view.selection.clear()
view.focus = true
@@ -62,7 +91,6 @@ AbstractFileDialog {
}
Component.onCompleted: {
- view.model.nameFilters = root.selectedNameFilterExtensions
filterField.currentIndex = root.selectedNameFilterIndex
root.favoriteFolders = settings.favoriteFolders
}
@@ -303,14 +331,7 @@ AbstractFileDialog {
resizeColumnsToContents()
needsWidthAdjustment = false
}
- model: FolderListModel {
- showFiles: !root.selectFolder
- nameFilters: root.selectedNameFilterExtensions
- sortField: (view.sortIndicatorColumn === 0 ? FolderListModel.Name :
- (view.sortIndicatorColumn === 1 ? FolderListModel.Type :
- (view.sortIndicatorColumn === 2 ? FolderListModel.Size : FolderListModel.LastModified)))
- sortReversed: view.sortIndicatorOrder === Qt.DescendingOrder
- }
+ model: null
onActivated: if (view.focus) {
if (view.selection.count > 0 && view.model.isFolder(row)) {
@@ -438,7 +459,8 @@ AbstractFileDialog {
anchors.verticalCenter: parent.verticalCenter
onCurrentTextChanged: {
root.selectNameFilter(currentText)
- view.model.nameFilters = root.selectedNameFilterExtensions
+ if (view.model)
+ view.model.nameFilters = root.selectedNameFilterExtensions
}
}
Button {