Warning, /multimedia/elisa/src/qml/SimplePlayListView.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-3.0-or-later 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Controls 2.2 0009 import QtQml.Models 2.1 0010 0011 import org.kde.kirigami 2.5 as Kirigami 0012 0013 import org.kde.elisa 1.0 0014 0015 ScrollView { 0016 id: topItem 0017 0018 property alias model: playListView.model 0019 0020 // HACK: workaround for https://bugreports.qt.io/browse/QTBUG-83890 0021 ScrollBar.horizontal.policy: ScrollBar.AlwaysOff 0022 0023 contentItem: ListView { 0024 id: playListView 0025 0026 readonly property int nextIndex: { 0027 var playingIndex = ElisaApplication.mediaPlayListProxyModel.currentTrackRow 0028 if (playingIndex > 0 && playingIndex < playListView.count - 1) { 0029 return playingIndex + 1 0030 } else { 0031 return playingIndex 0032 } 0033 } 0034 0035 property bool draggingEntry: false 0036 0037 reuseItems: true 0038 clip: true 0039 focus: true 0040 activeFocusOnTab: true 0041 keyNavigationEnabled: true 0042 0043 // position the view at the playing index 0044 Component.onCompleted: currentIndex = nextIndex 0045 Connections { 0046 target: ElisaApplication.mediaPlayListProxyModel 0047 function onCurrentTrackRowChanged() { 0048 playListView.currentIndex = playListView.nextIndex 0049 } 0050 } 0051 0052 highlightMoveDuration: Kirigami.Units.veryLongDuration 0053 highlightMoveVelocity: -1 0054 highlight: Item {} 0055 0056 section.property: 'albumSection' 0057 section.criteria: ViewSection.FullString 0058 0059 delegate: Column { 0060 id: playListDelegate 0061 width: playListView.width 0062 0063 // album seperator 0064 Item { 0065 width: playListView.width 0066 height: Kirigami.Units.smallSpacing 0067 visible: entry.previousAlbum && entry.previousAlbum !== entry.currentAlbum 0068 } 0069 0070 Loader { 0071 id: albumSection 0072 active: entry.sectionVisible 0073 visible: active 0074 sourceComponent: BasicPlayListAlbumHeader { 0075 headerData: JSON.parse(playListDelegate.ListView.section) 0076 width: playListView.width 0077 simpleMode: true 0078 Kirigami.Theme.textColor: "#eff0f1" 0079 } 0080 } 0081 0082 PlayListEntry { 0083 id: entry 0084 0085 focus: true 0086 width: playListView.width 0087 0088 index: model.index 0089 simpleMode: true 0090 listView: playListView 0091 listDelegate: playListDelegate 0092 0093 databaseId: model.databaseId ? model.databaseId : 0 0094 entryType: model.entryType ? model.entryType : ElisaUtils.Unknown 0095 title: model.title ? model.title : '' 0096 artist: model.artist ? model.artist : '' 0097 album: model.album ? model.album : '' 0098 albumArtist: model.albumArtist ? model.albumArtist : '' 0099 duration: model.duration ? model.duration : '' 0100 fileName: model.trackResource ? model.trackResource : '' 0101 imageUrl: model.imageUrl ? model.imageUrl : '' 0102 trackNumber: model.trackNumber ? model.trackNumber : -1 0103 discNumber: model.discNumber ? model.discNumber : -1 0104 rating: model.rating ? model.rating : 0 0105 isSingleDiscAlbum: model.isSingleDiscAlbum !== undefined ? model.isSingleDiscAlbum : true 0106 isValid: model.isValid 0107 isPlaying: model.isPlaying 0108 metadataModifiableRole: model.metadataModifiableRole ? model.metadataModifiableRole : false 0109 } 0110 } 0111 0112 add: Transition { 0113 NumberAnimation { 0114 property: "opacity"; 0115 from: 0; 0116 to: 1; 0117 duration: Kirigami.Units.shortDuration } 0118 } 0119 0120 populate: Transition { 0121 NumberAnimation { 0122 property: "opacity"; 0123 from: 0; 0124 to: 1; 0125 duration: Kirigami.Units.shortDuration } 0126 } 0127 0128 remove: Transition { 0129 NumberAnimation { 0130 property: "opacity"; 0131 from: 1.0; 0132 to: 0; 0133 duration: Kirigami.Units.shortDuration } 0134 } 0135 0136 displaced: Transition { 0137 NumberAnimation { 0138 properties: "x,y"; 0139 duration: Kirigami.Units.shortDuration 0140 easing.type: Easing.InOutQuad} 0141 } 0142 } 0143 }