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 }