import QtQuick 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 import org.kde.plasma.plasmoid 2.0 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 RowLayout { id: announcementView width: parent.width Layout.fillWidth: true RowLayout { Layout.fillWidth: true PlasmaComponents3.CheckBox { id: announcementCheckbox onToggled: () => { announcementLabel.font.strikeout = (checkState == Qt.Checked) } } PlasmaComponents3.Label { id: announcementLabel text: `[${course}] ${title}` font.bold: important color: important ? PlasmaCore.Theme.negativeTextColor : PlasmaCore.Theme.textColor elide: Text.ElideRight Layout.fillWidth: true MouseArea { anchors.fill: parent onClicked: () => { announcementCheckbox.toggle() // toggle checkbox announcementCheckbox.toggled() // and trigger the onToggled effects } } } } RowLayout { Layout.alignment: Qt.AlignRight PlasmaComponents3.ToolButton { icon.name: "view-visible" onClicked: () => { Qt.openUrlExternally(url) } } PlasmaComponents3.ToolButton { icon.name: "emblem-important-symbolic" onClicked: () => { important = !important announcementLabel.font.bold = important announcementLabel.color = important ? PlasmaCore.Theme.negativeTextColor : PlasmaCore.Theme.textColor let importantAnnouncements = plasmoid.configuration.importantAnnouncements if (important) { if (!importantAnnouncements.includes(announcementId)) { importantAnnouncements.push(announcementId) } } else { // remove announcementId from list importantAnnouncements.splice(importantAnnouncements.indexOf(announcementId), 1) } // save config plasmoid.configuration.importantAnnouncements = importantAnnouncements } } PlasmaComponents3.ToolButton { icon.name: "delete" onClicked: () => { // avoid non-fatal TypeError due to announcementView.parent=null but .width=parent.width announcementView.width = 0 announcementsModel.remove(index) } } } }