summaryrefslogtreecommitdiff
path: root/contents/ui/main.qml
diff options
context:
space:
mode:
authorFrederick Yin <fkfd@fkfd.me>2022-04-05 11:25:57 +0800
committerFrederick Yin <fkfd@fkfd.me>2022-04-05 11:25:57 +0800
commitdc920a81f58d745be895817d136b144c1665481b (patch)
treecf55d9afb3a986803dc32f2f5f22d777d76a5b2e /contents/ui/main.qml
Initial commit
Diffstat (limited to 'contents/ui/main.qml')
-rw-r--r--contents/ui/main.qml67
1 files changed, 67 insertions, 0 deletions
diff --git a/contents/ui/main.qml b/contents/ui/main.qml
new file mode 100644
index 0000000..c78ba5e
--- /dev/null
+++ b/contents/ui/main.qml
@@ -0,0 +1,67 @@
+import QtQuick 2.15
+import QtQuick.Layouts 1.15
+import QtQuick.Controls 2.15
+
+import org.kde.plasma.core 2.0 as PlasmaCore
+import org.kde.plasma.components 2.0 as PlasmaComponents
+import org.kde.plasma.components 3.0 as PlasmaComponents3
+import org.kde.plasma.extras 2.0 as PlasmaExtras
+
+Item {
+ width: PlasmaCore.Units.gridUnit * 20
+ height: PlasmaCore.Units.gridUnit * 40
+
+ function syncCanvas() {
+ // TODO: networking
+ for (let i = 0; i < 8; i++) {
+ announcementsModel.append({course: `VZ${i}01`, title: "Something"})
+ }
+ }
+
+ Timer {
+ interval: 60 * 1000
+ running: true;
+ repeat: true;
+ onTriggered: syncCanvas();
+ }
+
+ ColumnLayout {
+ id: main
+ anchors.fill: parent
+
+ PlasmaExtras.Heading {
+ level: 1
+ text: "Kanvas"
+ }
+
+ PlasmaExtras.Heading {
+ level: 2
+ text: "Announcements"
+ }
+
+ ListModel {
+ id: announcementsModel
+ }
+
+ ScrollView {
+ implicitHeight: PlasmaCore.Units.gridUnit * 20
+ Layout.margins: PlasmaCore.Units.smallSpacing
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ ListView {
+ Layout.fillWidth: true
+ delegate: Text {
+ text: `[${course}] ${title}`
+ color: PlasmaCore.Theme.textColor
+ }
+ model: announcementsModel
+ }
+ }
+
+ PlasmaComponents3.Button {
+ icon.name: "view-refresh"
+ text: i18n("Refresh")
+ onClicked: syncCanvas()
+ }
+ }
+}