1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-14 01:54:07 +02:00
Files
tomahawk/data/qml/tomahawkimports/CoverFlow.qml
2013-08-04 18:13:52 +02:00

85 lines
2.7 KiB
QML

import QtQuick 1.1
import tomahawk 1.0
ListView {
id: coverView
property color backgroundColor: "black"
property int coverSize: height / 2
// emitted when a cover is clicked
signal itemClicked(int index)
// emitted when a cover is clicked
signal itemPlayPauseClicked(int index)
preferredHighlightBegin: (width / 2) - (coverSize / 4)
preferredHighlightEnd: preferredHighlightBegin + coverSize / 2
snapMode: ListView.SnapToItem
highlightRangeMode: ListView.StrictlyEnforceRange
highlightMoveDuration: 200
property bool itemHovered: false
orientation: ListView.Horizontal
delegate: Item {
id: delegateItem
height: parent.height
width: coverView.coverSize / 2
anchors.verticalCenter: ListView.view.verticalCenter
property real distanceFromLeftEdge: -coverView.contentX + index*width
property real distanceFromRightEdge: coverView.contentX + coverView.width - (index+1)*width
property real distanceFromEdge: Math.max(distanceFromLeftEdge, distanceFromRightEdge)
scale: 2 - (distanceFromEdge / (coverView.width))
property double itemBrightness: (1.3 - (distanceFromEdge / (coverView.width))) - ((coverView.itemHovered && !coverDelegate.containsMouse) ? .4 : 0)
property double itemOpacity: coverView.itemHovered && !coverDelegate.containsMouse ? 0.4 : 1
property int _origZ
z: -Math.abs(currentIndex - index)
CoverImage {
id: coverDelegate
height: coverView.coverSize / 2
width: parent.width
anchors {
verticalCenter: parent.verticalCenter
right: parent.right
}
showLabels: true
showMirror: false
artistName: model.artistName
trackName: model.trackName
artworkId: model.coverID
showPlayButton: true
currentlyPlaying: isPlaying
smooth: true
itemBrightness: coverDelegate.containsMouse ? 1 : parent.itemBrightness * (coverView.itemHovered ? .5 : 1)
opacity: parent.itemOpacity
z: coverView.width - x
onPlayClicked: {
console.log("***************")
coverView.itemPlayPauseClicked(index)
}
onClicked: {
coverView.itemClicked(index)
}
onContainsMouseChanged: {
if (containsMouse) {
delegateItem._origZ = delegateItem.z;
coverView.itemHovered = true
} else {
coverView.itemHovered = false
}
}
}
}
}