154 lines
3.7 KiB
QML
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
|