Alisa/native/MainPage.qml

175 lines
5.1 KiB
QML
Raw Normal View History

2024-07-11 10:49:13 +02:00
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Layouts 2.15
import QtQuick.Controls 2.15
Rectangle {
2024-07-11 21:54:27 +02:00
visible: true
2024-07-11 10:49:13 +02:00
SystemPalette { id: activeColors; colorGroup: SystemPalette.Active }
SystemPalette { id: inactiveColors; colorGroup: SystemPalette.Inactive }
SystemPalette { id: disabledColors; colorGroup: SystemPalette.Disabled }
function getColors() {
return root.active ? activeColors : inactiveColors;
}
property string authToken: ""
2024-07-11 11:25:08 +02:00
signal logout()
2024-07-11 10:49:13 +02:00
Rectangle {
id: s1
anchors {
top: parent.top
left: parent.left
right: parent.right
}
height: 50
color: getColors().midlight
2024-07-11 21:54:27 +02:00
RowLayout {
anchors.fill: parent
spacing: 10
anchors.margins: 5
2024-07-11 10:49:13 +02:00
2024-07-11 21:54:27 +02:00
TextField {
placeholderText: qsTr("Search")
Layout.alignment: Qt.AlignVCenter
Layout.fillWidth: true
2024-07-11 10:49:13 +02:00
}
2024-07-11 21:54:27 +02:00
Button {
text: qsTr("Add License")
Layout.alignment: Qt.AlignVCenter
onClicked: {
// Create and show a new window
var newWindow = newWindowComponent.createObject(null, { authToken: authToken });
if (newWindow !== null) {
newWindow.show();
} else {
console.log("Failed to create new window");
}
}
2024-07-11 10:49:13 +02:00
}
2024-07-11 18:34:40 +02:00
2024-07-11 21:54:27 +02:00
Button {
id: loginB
text: qsTr("Logout")
Layout.alignment: Qt.AlignVCenter
onClicked: {
logout();
2024-07-11 18:34:40 +02:00
}
}
}
2024-07-11 10:49:13 +02:00
}
2024-07-11 18:34:40 +02:00
Rectangle {
2024-07-11 10:49:13 +02:00
id: s2
anchors {
top: s1.bottom
left: parent.left
right: parent.right
bottom: parent.bottom
}
color: getColors().window
2024-07-11 16:01:37 +02:00
ListModel {
id: apiDataModel
}
ListView {
2024-07-11 21:54:27 +02:00
id: listView
anchors.fill: parent
2024-07-11 10:49:13 +02:00
clip: true
boundsBehavior: Flickable.StopAtBounds
2024-07-11 16:01:37 +02:00
model: apiDataModel
2024-07-11 21:54:27 +02:00
delegate: Rectangle {
width: listView.width
2024-07-11 16:01:37 +02:00
height: 50
2024-07-11 21:54:27 +02:00
color: getColors().button
2024-07-11 16:01:37 +02:00
2024-07-11 21:54:27 +02:00
RowLayout {
anchors.fill: parent
2024-07-11 16:01:37 +02:00
spacing: 10
Text {
text: model.name
color: getColors().text
2024-07-11 21:54:27 +02:00
Layout.alignment: Qt.AlignVCenter
2024-07-11 16:01:37 +02:00
}
Text {
text: model.key
color: getColors().text
2024-07-11 21:54:27 +02:00
Layout.alignment: Qt.AlignVCenter
2024-07-11 16:01:37 +02:00
}
2024-07-11 21:54:27 +02:00
2024-07-11 16:01:37 +02:00
Text {
text: model.amount
color: getColors().text
2024-07-11 21:54:27 +02:00
Layout.alignment: Qt.AlignVCenter
2024-07-11 16:01:37 +02:00
}
2024-07-11 21:54:27 +02:00
2024-07-11 16:01:37 +02:00
Text {
text: model.start
color: getColors().text
2024-07-11 21:54:27 +02:00
Layout.alignment: Qt.AlignVCenter
2024-07-11 16:01:37 +02:00
}
2024-07-11 21:54:27 +02:00
2024-07-11 16:01:37 +02:00
Text {
text: model.end
color: getColors().text
2024-07-11 21:54:27 +02:00
Layout.alignment: Qt.AlignVCenter
2024-07-11 16:01:37 +02:00
}
2024-07-11 21:54:27 +02:00
2024-07-11 16:01:37 +02:00
Text {
text: model.group
color: getColors().text
2024-07-11 21:54:27 +02:00
Layout.alignment: Qt.AlignVCenter
2024-07-11 16:01:37 +02:00
}
2024-07-11 10:49:13 +02:00
}
2024-07-11 16:01:37 +02:00
}
}
}
2024-07-11 18:34:40 +02:00
Component {
id: newWindowComponent
AddData {
id: dataWindow
authToken: authToken
}
}
2024-07-11 16:01:37 +02:00
Component.onCompleted: {
var xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.clan-war.net/api/v1/licenses");
xhr.setRequestHeader("Authorization", "Bearer " + authToken);
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
var jsonResponse = JSON.parse(xhr.responseText);
apiDataModel.clear();
for (var i = 0; i < jsonResponse.length; i++) {
for (var ii = 0; ii < jsonResponse[i].licenses.length; ii++) {
apiDataModel.append({
group: jsonResponse[i].name,
name: jsonResponse[i].licenses[ii].name,
start: jsonResponse[i].licenses[ii].start ?? "Indefinitely",
end: jsonResponse[i].licenses[ii].end ?? "Indefinitely",
amount: jsonResponse[i].licenses[ii].amount ?? "∞",
key: jsonResponse[i].licenses[ii].key
});
}
2024-07-11 10:49:13 +02:00
}
2024-07-11 16:01:37 +02:00
} else {
console.log("Error: " + xhr.status);
2024-07-11 10:49:13 +02:00
}
}
}
2024-07-11 16:01:37 +02:00
xhr.send();
2024-07-11 10:49:13 +02:00
}
}