1
0
Fork 0
flightgear/src/GUI/qml/HistoryPopup.qml
2018-06-27 16:46:22 +01:00

100 lines
3 KiB
QML

import QtQuick 2.4
import QtQuick.Window 2.0
import FlightGear.Launcher 1.0
import "."
Item {
id: root
property var model: undefined
property string displayRole: "display"
property bool enabled: true
implicitHeight: button.height
implicitWidth: button.width
signal selected(var index);
Rectangle {
id: button
width: icon.width
height: icon.height
radius: Style.roundRadius
color: enabled ? (mouse.containsMouse ? Style.activeColor : Style.themeColor) : Style.disabledThemeColor
Image {
id: icon
source: "qrc:///history-icon"
anchors.centerIn: parent
}
MouseArea {
anchors.fill: parent
id: mouse
hoverEnabled: root.enabled
enabled: root.enabled
onClicked: {
var screenPos = _launcher.mapToGlobal(button, Qt.point(-popupFrame.width, 0))
popupFrame.x = screenPos.x;
popupFrame.y = screenPos.y;
popupFrame.visible = true
tracker.window = popupFrame
}
}
}
PopupWindowTracker {
id: tracker
}
Window {
id: popupFrame
flags: Qt.Popup
height: choicesColumn.childrenRect.height + Style.margin * 2
width: choicesColumn.childrenRect.width + Style.margin * 2
visible: false
color: "white"
Rectangle {
border.width: 1
border.color: Style.minorFrameColor
anchors.fill: parent
}
// text repeater
Column {
id: choicesColumn
spacing: Style.margin
x: Style.margin
y: Style.margin
Repeater {
id: choicesRepeater
model: root.model
delegate:
StyledText {
id: choiceText
// Taken from TableViewItemDelegateLoader.qml to follow QML role conventions
text: model && model.hasOwnProperty(displayRole) ? model[displayRole] // Qml ListModel and QAbstractItemModel
: modelData && modelData.hasOwnProperty(displayRole) ? modelData[displayRole] // QObjectList / QObject
: modelData != undefined ? modelData : "" // Models without role
height: implicitHeight + Style.margin
MouseArea {
width: popupFrame.width // full width of the popup
height: parent.height
onClicked: {
popupFrame.visible = false
root.selected(model.index);
}
}
} // of Text delegate
} // text repeater
} // text column
} // of popup Window
}