1
0
Fork 0
flightgear/src/GUI/qml/CatalogDelegate.qml
2018-07-05 00:17:05 +01:00

122 lines
3.3 KiB
QML

import QtQuick 2.4
import FlightGear.Launcher 1.0
import "."
Item {
id: delegateRoot
// don't show the delegate for newly added catalogs, until the
// adding process is complete
visible: !model.isNewlyAdded
implicitWidth: 300
height: childrenRect.height
Item {
id: divider
visible: model.index > 0 // divider before each item except the first
height: Style.margin
width: parent.width
Rectangle {
color: Style.frameColor
height: 1
width: parent.width - Style.strutSize
anchors.centerIn: parent
}
}
Item
{
anchors.top: divider.bottom
height: catalogTextColumn.childrenRect.height + Style.margin * 2
width: parent.width
Column {
id: catalogTextColumn
y: Style.margin
anchors.left: parent.left
anchors.leftMargin: Style.margin
anchors.right: catalogDeleteButton.left
anchors.rightMargin: Style.margin
spacing: Style.margin
StyledText {
font.pixelSize: Style.subHeadingFontPixelSize
font.bold: true
width: parent.width
text: model.name
}
StyledText {
visible: model.status === CatalogListModel.Ok
width: parent.width
text: model.description
wrapMode: Text.WordWrap
}
ClickableText {
visible: model.status !== CatalogListModel.Ok
width: parent.width
wrapMode: Text.WordWrap
text: qsTr("This hangar is currently disabled due to a problem. " +
"Click here to try updating the hangar information from the server. "
+ "(An Internet connection is required for this)");
onClicked: {
_addOns.catalogs.refreshCatalog(model.index)
}
}
StyledText {
width: parent.width
text: model.url
}
}
DeleteButton {
id: catalogDeleteButton
anchors.right: parent.right
anchors.rightMargin: Style.margin
anchors.verticalCenter: parent.verticalCenter
visible: delegateHover.containsMouse
onClicked: {
confirmDeleteHangar.visible = true;
}
}
MouseArea {
id: delegateHover
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.NoButton
}
YesNoPanel {
id: confirmDeleteHangar
visible: false
anchors.fill: parent
anchors.margins: 1 // don't cover the border
yesText: qsTr("Remove")
noText: qsTr("Cancel")
yesIsDestructive: true
promptText: qsTr("Remove this hangar? (Downloaded aircraft will be deleted from your computer)");
onAccepted: {
_addOns.catalogs.removeCatalog(model.index);
}
onRejected: {
confirmDeleteHangar.visible = false
}
Rectangle {
anchors.fill: parent
z: -1
}
}
}
}