1
0
Fork 0
flightgear/src/GUI/qml/AircraftCompactDelegate.qml
2020-04-01 10:47:29 +01:00

154 lines
3.7 KiB
QML

import QtQuick 2.4
import FlightGear.Launcher 1.0
import FlightGear 1.0
import "."
Item {
id: root
signal select(var uri);
signal showDetails(var uri)
implicitHeight: Math.max(contentBox.childrenRect.height, thumbnailBox.height) +
footer.height
implicitWidth: ListView.view.width
readonly property bool __isSelected: (_launcher.selectedAircraft === model.uri)
property bool __showAlternateText: false
function cycleTextDisplay()
{
__showAlternateText = !__showAlternateText;
}
function alternateText()
{
return qsTr("URI: %1\nLocal path: %2").arg(model.uri).arg(titleBox.pathOnDisk);
}
MouseArea {
anchors.fill: parent
onClicked: {
if (mouse.modifiers & Qt.ShiftModifier ) {
root.cycleTextDisplay();
return;
}
if (__isSelected) {
root.showDetails(model.uri)
} else {
root.select(model.uri)
}
}
}
Item {
id: thumbnailBox
width: 172
height: 128
Rectangle {
anchors.centerIn: parent
border.width: 1
border.color: "#7f7f7f"
width: thumbnail.width
height: thumbnail.height
ThumbnailImage {
id: thumbnail
aircraftUri: model.uri
maximumSize.width: 172
maximumSize.height: 128
}
}
}
Column {
id: contentBox
anchors {
left: thumbnailBox.right
right: parent.right
leftMargin: Style.margin
rightMargin: Style.margin
top: parent.top
}
spacing: Style.margin
Item {
height: titleBox.height
width: parent.width
FavouriteToggleButton {
id: favourite
checked: model.favourite
anchors.verticalCenter: parent.verticalCenter
onToggle: {
model.favourite = on;
}
}
AircraftVariantChoice {
id: titleBox
anchors {
left: favourite.right
leftMargin: Style.margin
right: parent.right
}
aircraft: model.uri;
currentIndex: model.activeVariant
onSelected: {
model.activeVariant = index
root.select(model.uri)
}
}
}
StyledText {
id: description
width: parent.width
text: root.__showAlternateText ? root.alternateText()
: model.description
maximumLineCount: 3
wrapMode: Text.WordWrap
elide: Text.ElideRight
height: implicitHeight
visible: (model.description !== "") || root.__showAlternateText
}
AircraftDownloadPanel
{
id: downloadPanel
visible: (model.package !== undefined)
packageSize: model.packageSizeBytes
installStatus: model.packageStatus
downloadedBytes: model.downloadedBytes
uri: model.uri
width: parent.width
compact: true
}
} // of content column
Item {
id: footer
height: Style.margin
width: parent.width
anchors.bottom: parent.bottom
Rectangle {
color: Style.frameColor
height: 1
width: parent.width - Style.strutSize
anchors.centerIn: parent
}
}
} // of root item