2022-12-23 11:32:21 +08:00
|
|
|
import QtQuick 2.0
|
2023-01-03 11:00:52 +08:00
|
|
|
import QtQuick.Layouts 1.12
|
2022-12-23 11:32:21 +08:00
|
|
|
|
|
|
|
Item {
|
2023-01-03 11:00:52 +08:00
|
|
|
ColumnLayout {
|
|
|
|
anchors.fill: parent
|
2023-02-09 16:07:51 +08:00
|
|
|
anchors.topMargin: 12
|
|
|
|
|
|
|
|
Row {
|
2023-01-03 11:00:52 +08:00
|
|
|
Layout.fillWidth: true
|
2023-02-09 16:07:51 +08:00
|
|
|
Layout.preferredHeight: 40
|
|
|
|
Layout.rightMargin: 12
|
2023-01-03 11:00:52 +08:00
|
|
|
|
|
|
|
ListView {
|
|
|
|
id: extensionListView
|
2023-02-09 16:07:51 +08:00
|
|
|
width: parent.width - 34
|
|
|
|
height: parent.height
|
2023-01-03 11:00:52 +08:00
|
|
|
orientation: ListView.Horizontal
|
|
|
|
model: extensionManager.extensionModel()
|
|
|
|
delegate: headerDelegate
|
|
|
|
|
|
|
|
function send(data) {
|
|
|
|
if (currentItem !== null) {
|
|
|
|
model.send(currentIndex, data);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
onCurrentIndexChanged: {
|
|
|
|
if (currentItem !== null) {
|
|
|
|
currentItem.select();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-09 16:07:51 +08:00
|
|
|
Item {
|
|
|
|
width: 34
|
|
|
|
height: 34
|
|
|
|
}
|
|
|
|
}
|
2023-01-03 11:00:52 +08:00
|
|
|
Item {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.fillHeight: true
|
|
|
|
|
|
|
|
Loader {
|
|
|
|
id: extensionLoader
|
|
|
|
anchors.fill: parent
|
|
|
|
clip: true
|
|
|
|
focus: true
|
|
|
|
onLoaded: {
|
|
|
|
item.send.connect(extensionListView.send);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2023-02-09 16:07:51 +08:00
|
|
|
|
|
|
|
Row {
|
|
|
|
Layout.fillWidth: true
|
|
|
|
Layout.preferredHeight: 40
|
|
|
|
Layout.rightMargin: 12
|
|
|
|
layoutDirection: Qt.RightToLeft
|
|
|
|
|
|
|
|
Item {
|
|
|
|
width: 32
|
|
|
|
height: 32
|
|
|
|
}
|
|
|
|
}
|
2023-01-03 11:00:52 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
Component {
|
|
|
|
id: headerDelegate
|
2023-02-09 16:07:51 +08:00
|
|
|
|
2023-01-03 11:00:52 +08:00
|
|
|
Item {
|
|
|
|
property var extensionData: model.data
|
|
|
|
width: 100
|
|
|
|
height: ListView.view ? ListView.view.height : 0
|
|
|
|
|
|
|
|
onExtensionDataChanged: {
|
|
|
|
if (extensionLoader.source === model.url) {
|
|
|
|
extensionLoader.item.extensionData = extensionData;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function select() {
|
|
|
|
if (extensionLoader.source !== model.url) {
|
|
|
|
extensionLoader.setSource(model.url, {extensionData: extensionData});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Text {
|
|
|
|
anchors.fill: parent
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
horizontalAlignment: Text.AlignHCenter
|
|
|
|
font.bold: true
|
|
|
|
wrapMode: Text.ElideRight
|
|
|
|
|
|
|
|
color: parent.ListView.isCurrentItem ? "blue" : "black"
|
|
|
|
text: model.name
|
|
|
|
}
|
|
|
|
|
|
|
|
MouseArea {
|
|
|
|
anchors.fill: parent
|
|
|
|
onClicked: {
|
|
|
|
parent.ListView.view.currentIndex = model.index;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
if (extensionListView.count > 0) {
|
|
|
|
extensionListView.currentIndex = 0;
|
|
|
|
}
|
2022-12-23 11:32:21 +08:00
|
|
|
}
|
|
|
|
}
|