Warning, /multimedia/kid3/src/qml/app/FileList.qml is written in an unsupported language. File is not indexed.

0001 /**
0002  * \file FileList.qml
0003  * List of files in current directory.
0004  *
0005  * \b Project: Kid3
0006  * \author Urs Fleisch
0007  * \date 16 Feb 2015
0008  *
0009  * Copyright (C) 2015-2018  Urs Fleisch
0010  *
0011  * This program is free software; you can redistribute it and/or modify
0012  * it under the terms of the GNU Lesser General Public License as published by
0013  * the Free Software Foundation; version 3.
0014  *
0015  * This program is distributed in the hope that it will be useful,
0016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0018  * GNU Lesser General Public License for more details.
0019  *
0020  * You should have received a copy of the GNU Lesser General Public License
0021  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
0022  */
0023 
0024 import QtQuick 2.11
0025 import QtQuick.Controls 2.4
0026 import Kid3 1.1 as Kid3
0027 
0028 Rectangle {
0029   id: fileList
0030   property alias actionButtons: fileButtonRow.control
0031 
0032   signal fileActivated
0033 
0034   function currentFilePath() {
0035     return fileModel.getDataValue(fileModel.currentRow,
0036                                   "filePath")
0037   }
0038 
0039   function parentFilePath() {
0040     return script.getIndexRoleData(fileModel.parentModelIndex(),
0041                                    "filePath")
0042   }
0043 
0044   Item {
0045     id: fileButtonRow
0046     property Item control
0047     width: control ? control.width : undefined
0048     height: control ? control.height : undefined
0049     anchors.left: parent.left
0050     anchors.top: parent.top
0051     anchors.topMargin: constants.margins
0052     anchors.leftMargin: constants.margins
0053     onControlChanged: {
0054       if (control) control.parent = fileButtonRow
0055     }
0056   }
0057 
0058   ListView {
0059     id: fileListView
0060 
0061     anchors.left: parent.left
0062     anchors.top: fileButtonRow.control ? fileButtonRow.bottom : parent.top
0063     anchors.bottom: parent.bottom
0064     anchors.right: parent.right
0065     anchors.margins: constants.margins
0066     clip: true
0067 
0068     model: Kid3.CheckableListModel {
0069       id: fileModel
0070       sourceModel: app.fileProxyModel
0071       selectionModel: app.fileSelectionModel
0072       rootIndex: app.fileRootIndex
0073       onCurrentRowChanged: {
0074         fileListView.currentIndex = row
0075       }
0076     }
0077 
0078     delegate: Standard {
0079       id: fileDelegate
0080       progression: isDir
0081       onClicked: {
0082         if (!isDir) {
0083           ListView.view.currentIndex = index
0084           fileModel.currentRow = index
0085           fileList.fileActivated()
0086         } else {
0087           confirmedOpenDirectory(filePath)
0088         }
0089       }
0090       highlighted: ListView.isCurrentItem
0091       background: Rectangle {
0092         color: highlighted ? constants.highlightColor : "transparent"
0093       }
0094 
0095       Row {
0096         anchors.fill: parent
0097 
0098         CheckBox {
0099           id: checkField
0100           anchors.verticalCenter: parent.verticalCenter
0101           onClicked: {
0102             // QTBUG-7932, assigning is not possible
0103             fileModel.setDataValue(index, "checkState",
0104                                    checked ? Qt.Checked : Qt.Unchecked)
0105           }
0106         }
0107         Binding {
0108           // workaround for QTBUG-31627
0109           // should work with "checked: checkState === Qt.Checked"
0110           target: checkField
0111           property: "checked"
0112           value: checkState === Qt.Checked
0113         }
0114         Rectangle {
0115           id: fileImage
0116           anchors.verticalCenter: parent.verticalCenter
0117           color: truncated ? constants.errorColor : "transparent"
0118           width: constants.gu(2)
0119           height: constants.gu(2)
0120           Image {
0121             source: "image://kid3/fileicon/" +
0122                     (iconId && iconId != "modified" ? iconId : "null")
0123             sourceSize.width: parent.width
0124             sourceSize.height: parent.height
0125             visible: iconId != "modified"
0126           }
0127           Text {
0128             anchors.fill: parent
0129             font.family: materialFont.name
0130             font.pixelSize: 16
0131             text: "M"
0132             color: fileText.color
0133             visible: iconId == "modified"
0134           }
0135         }
0136         Label {
0137           id: fileText
0138           anchors.verticalCenter: parent.verticalCenter
0139           text: fileName
0140           color: fileDelegate.highlighted
0141             ? constants.highlightedTextColor : constants.textColor
0142         }
0143       }
0144     }
0145   }
0146 }