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() } } }