Warning, /sdk/rust-qt-binding-generator/demo/qml/FileTreeViewKirigami.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 import org.kde.kirigami 2.0 as Kirigami 0026 0027 ListView { 0028 id: view 0029 property string title 0030 header: Column { 0031 width: parent.width 0032 ToolBar { 0033 width: parent.width 0034 RowLayout { 0035 anchors.fill: parent 0036 ToolButton { 0037 text: qsTr("‹") 0038 enabled: dirModel.rootIndex.valid 0039 onClicked: { 0040 dirModel.rootIndex = dirModel.rootIndex.parent 0041 } 0042 } 0043 Kirigami.Heading { 0044 text: view.title 0045 elide: Label.ElideMiddle 0046 horizontalAlignment: Qt.AlignHCenter 0047 verticalAlignment: Qt.AlignVCenter 0048 Layout.fillWidth: true 0049 } 0050 } 0051 } 0052 Row { 0053 Text { 0054 width: 200 0055 text: qsTr("Name") 0056 } 0057 Text { 0058 text: qsTr("Size") 0059 } 0060 } 0061 } 0062 model: DelegateModel { 0063 id: dirModel 0064 model: sortedFileSystem 0065 onRootIndexChanged: { 0066 var index = sortedFileSystem.mapToSource(rootIndex); 0067 view.title = demo.fileSystemTree.filePath(index) || ""; 0068 } 0069 delegate: Item { 0070 width: parent.width 0071 height: row.height 0072 Row { 0073 id: row 0074 Connections { 0075 target: sortedFileSystem 0076 onRowsInserted: { 0077 // enable the button if children were found when 'model' 0078 // was created or if they were just inserted 0079 button.enabled = model.hasModelChildren 0080 || dirModel.modelIndex(index) === parent 0081 } 0082 } 0083 Button { 0084 id: button 0085 width: 200 0086 text: fileName 0087 enabled: model.hasModelChildren 0088 onClicked: { 0089 view.model.rootIndex = view.model.modelIndex(index) 0090 } 0091 } 0092 Label { 0093 text: fileSize 0094 padding: button.padding 0095 } 0096 } 0097 } 0098 } 0099 }