diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dialogs/DefaultFileDialog.qml | 39 | ||||
| -rw-r--r-- | src/dialogs/qquickabstractfiledialog.cpp | 10 |
2 files changed, 32 insertions, 17 deletions
diff --git a/src/dialogs/DefaultFileDialog.qml b/src/dialogs/DefaultFileDialog.qml index 4521859d0..900168607 100644 --- a/src/dialogs/DefaultFileDialog.qml +++ b/src/dialogs/DefaultFileDialog.qml @@ -56,18 +56,12 @@ AbstractFileDialog { view.selection.clear() } } - onFolderChanged: { - var str = new String(folder) - if (str.indexOf("qrc:") === 0) - folder = "file:" + str.slice(4) - if (view.model.folder != folder) - view.model.folder = folder - } Component.onCompleted: { view.model.nameFilters = root.selectedNameFilterExtensions filterField.currentIndex = root.selectedNameFilterIndex root.favoriteFolders = settings.favoriteFolders + root.folder = view.model.folder } Component.onDestruction: { @@ -88,12 +82,13 @@ AbstractFileDialog { property var favoriteFolders: [] function dirDown(path) { - view.model.folder = "file://" + path view.selection.clear() + root.folder = path } function dirUp() { - view.model.folder = view.model.parentFolder view.selection.clear() + if (view.model.parentFolder != "") + root.folder = view.model.parentFolder } function acceptSelection() { // transfer the view's selections to QQuickFileDialog @@ -118,7 +113,7 @@ AbstractFileDialog { text: "&Up" shortcut: "Ctrl+U" iconSource: "images/up.png" - onTriggered: if (view.model.parentFolder != "") dirUp() + onTriggered: dirUp() tooltip: "Go up to the folder containing this one" } @@ -129,6 +124,22 @@ AbstractFileDialog { id: window color: root.palette.window + Binding { + target: root + property: "folder" + value: view.model.folder + } + Binding { + target: view.model + property: "folder" + value: root.folder + } + Binding { + target: currentPathField + property: "text" + value: root.urlToPath(root.folder) + } + SplitView { id: splitter x: 0 @@ -230,7 +241,7 @@ AbstractFileDialog { hoverEnabled: true onClicked: { if (mouse.button == Qt.LeftButton) - view.model.folder = root.favoriteFolders[index] + root.folder = root.favoriteFolders[index] else if (mouse.button == Qt.RightButton) favoriteCtxMenu.popup() } @@ -256,7 +267,7 @@ AbstractFileDialog { text: "+" width: height onClicked: { - root.favoriteFolders.push(view.model.folder) + root.favoriteFolders.push(root.folder) favorites.model = root.favoriteFolders } } @@ -279,7 +290,6 @@ AbstractFileDialog { model: FolderListModel { showFiles: !root.selectFolder nameFilters: root.selectedNameFilterExtensions - onFolderChanged: root.folder = folder sortField: (view.sortIndicatorColumn === 0 ? FolderListModel.Name : (view.sortIndicatorColumn === 1 ? FolderListModel.Type : (view.sortIndicatorColumn === 2 ? FolderListModel.Size : FolderListModel.LastModified))) @@ -368,14 +378,13 @@ AbstractFileDialog { } TextField { id: currentPathField - text: root.urlToPath(view.model.folder) Layout.fillWidth: true onAccepted: { root.clearSelection() if (root.addSelection(root.pathToUrl(text))) root.accept() else - view.model.folder = root.pathFolder(text) + root.folder = root.pathFolder(text) } } } diff --git a/src/dialogs/qquickabstractfiledialog.cpp b/src/dialogs/qquickabstractfiledialog.cpp index e193ca37a..4b8592d42 100644 --- a/src/dialogs/qquickabstractfiledialog.cpp +++ b/src/dialogs/qquickabstractfiledialog.cpp @@ -116,9 +116,15 @@ QUrl QQuickAbstractFileDialog::folder() const void QQuickAbstractFileDialog::setFolder(const QUrl &f) { + QString lf = f.toLocalFile(); + while (lf.startsWith("//")) + lf.remove(0, 1); + if (lf.isEmpty()) + lf = QDir::currentPath(); + QUrl u = QUrl::fromLocalFile(lf); if (m_dlgHelper) - m_dlgHelper->setDirectory(f); - m_options->setInitialDirectory(f); + m_dlgHelper->setDirectory(u); + m_options->setInitialDirectory(u); emit folderChanged(); } |
