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: activityView width: parent.width Layout.fillWidth: true RowLayout { Layout.fillWidth: true PlasmaComponents3.CheckBox { id: activityCheckbox Layout.alignment: Qt.AlignTop onToggled: () => { activityLabel.font.strikeout = (checkState == Qt.Checked) } } ColumnLayout { PlasmaComponents3.Label { id: activityLabel text: `[${course}] ${title}` font.bold: important color: important ? PlasmaCore.Theme.negativeTextColor : PlasmaCore.Theme.textColor elide: Text.ElideRight Layout.fillWidth: true } PlasmaComponents3.Label { id: dueLabel visible: type == "assignment" text: "Due " + (due || "unknown") color: activityLabel.color Layout.fillWidth: true } MouseArea { anchors.fill: parent onClicked: () => { activityCheckbox.toggle() // toggle checkbox activityCheckbox.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" checked: important onClicked: () => { important = !important activityLabel.font.bold = important activityLabel.color = important ? PlasmaCore.Theme.negativeTextColor : PlasmaCore.Theme.textColor let importantActivities = plasmoid.configuration.importantActivities if (important) { if (!importantActivities.includes(activityId)) { importantActivities.push(activityId) } } else { // remove activityId from list importantActivities.splice(importantActivities.indexOf(activityId), 1) } // save config plasmoid.configuration.importantActivities = importantActivities } } } }