Warning, /sdk/rust-qt-binding-generator/demo/qml/FileTreeView2.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * Copyright 2017 Jos van den Oever <jos@vandenoever.info>
0003 *
0004 * This program is free software; you can redistribute it and/or
0005 * modify it under the terms of the GNU General Public License as
0006 * published by the Free Software Foundation; either version 2 of
0007 * the License or (at your option) version 3 or any later version
0008 * accepted by the membership of KDE e.V. (or its successor approved
0009 * by the membership of KDE e.V.), which shall act as a proxy
0010 * defined in Section 14 of version 3 of the license.
0011 *
0012 * This program is distributed in the hope that it will be useful,
0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0015 * GNU General Public License for more details.
0016 *
0017 * You should have received a copy of the GNU General Public License
0018 * along with this program. If not, see <http://www.gnu.org/licenses/>.
0019 */
0020
0021 import QtQuick 2.6
0022 import QtQml.Models 2.2
0023 import QtQuick.Controls 2.2
0024 import QtQuick.Layouts 1.3
0025
0026 ListView {
0027 id: view
0028 property string title
0029 header: Column {
0030 width: parent.width
0031 ToolBar {
0032 width: parent.width
0033 RowLayout {
0034 anchors.fill: parent
0035 ToolButton {
0036 text: qsTr("‹")
0037 enabled: dirModel.rootIndex.valid
0038 onClicked: {
0039 dirModel.rootIndex = dirModel.rootIndex.parent
0040 }
0041 }
0042 Label {
0043 text: view.title
0044 elide: Label.ElideMiddle
0045 horizontalAlignment: Qt.AlignHCenter
0046 verticalAlignment: Qt.AlignVCenter
0047 Layout.fillWidth: true
0048 }
0049 }
0050 }
0051 Row {
0052 Text {
0053 width: 200
0054 text: qsTr("Name")
0055 }
0056 Text {
0057 text: qsTr("Size")
0058 }
0059 }
0060 }
0061 model: DelegateModel {
0062 id: dirModel
0063 model: sortedFileSystem
0064 onRootIndexChanged: {
0065 var index = sortedFileSystem.mapToSource(rootIndex);
0066 view.title = demo.fileSystemTree.filePath(index) || "";
0067 }
0068 delegate: Item {
0069 width: parent.width
0070 height: row.height
0071 Row {
0072 id: row
0073 Connections {
0074 target: sortedFileSystem
0075 onRowsInserted: {
0076 // enable the button if children were found when 'model'
0077 // was created or if they were just inserted
0078 button.enabled = model.hasModelChildren
0079 || dirModel.modelIndex(index) === parent
0080 }
0081 }
0082 Button {
0083 id: button
0084 width: 200
0085 text: fileName
0086 enabled: model.hasModelChildren
0087 onClicked: {
0088 view.model.rootIndex = view.model.modelIndex(index)
0089 }
0090 }
0091 Label {
0092 text: fileSize
0093 padding: button.padding
0094 }
0095 }
0096 }
0097 }
0098 }