summaryrefslogtreecommitdiff
path: root/contents/ui/ActivityView.qml
diff options
context:
space:
mode:
Diffstat (limited to 'contents/ui/ActivityView.qml')
-rw-r--r--contents/ui/ActivityView.qml201
1 files changed, 109 insertions, 92 deletions
diff --git a/contents/ui/ActivityView.qml b/contents/ui/ActivityView.qml
index 0e74a99..4b32cf4 100644
--- a/contents/ui/ActivityView.qml
+++ b/contents/ui/ActivityView.qml
@@ -10,121 +10,138 @@ import org.kde.plasma.extras 2.0 as PlasmaExtras
import "activity.js" as Activity
+// container for one single activity
+// TODO: port to PlasmaComponents3 before release of KF6
PlasmaComponents.ListItem {
id: activityItem
separatorVisible: false
enabled: true // enable mouse event handling
- RowLayout {
- id: activityView
- width: (type == "announcement" ? announcementsListView : assignmentsListView).width
- Layout.fillWidth: true
+ property bool expanded: false
+ ColumnLayout {
+ width:
+ (type == "announcement"
+ ? announcementsListView : assignmentsListView).width
+ - PlasmaCore.Units.gridUnit // HACK: clearance for scrollbar
+ Layout.fillWidth: true
RowLayout {
- Layout.fillWidth: true
- PlasmaComponents3.CheckBox {
- id: activityCheckbox
- checkState: finished ? Qt.Checked : Qt.Unchecked
- onToggled: () => {
- finished = (checkState == Qt.Checked)
- activityLabel.font.strikeout = (checkState == Qt.Checked)
-
- const configKeys = {
- announcement: "finishedAnnouncements",
- assignment: "finishedAssignments",
- }
+ // "finished" checkbox and activity title
+ RowLayout {
+ PlasmaComponents3.CheckBox {
+ id: activityCheckbox
+ checkState: finished ? Qt.Checked : Qt.Unchecked
+ onToggled: () => {
+ finished = (checkState == Qt.Checked)
+ activityLabel.font.strikeout = (checkState == Qt.Checked)
+
+ const configKeys = {
+ announcement: "finishedAnnouncements",
+ assignment: "finishedAssignments",
+ }
- let finishedActivities = plasmoid.configuration[configKeys[type]]
- if (finished) {
- if (!finishedActivities.includes(activityId)) {
- finishedActivities.push(activityId)
+ let finishedActivities = plasmoid.configuration[configKeys[type]]
+ if (finished) {
+ if (!finishedActivities.includes(activityId)) {
+ finishedActivities.push(activityId)
+ }
+ } else {
+ // remove activityId from list
+ finishedActivities.splice(
+ finishedActivities.indexOf(activityId), 1
+ )
}
- } else {
- // remove activityId from list
- finishedActivities.splice(
- finishedActivities.indexOf(activityId), 1
- )
+ // save config
+ plasmoid.configuration[configKeys[type]] = finishedActivities
}
- // save config
- plasmoid.configuration[configKeys[type]] = finishedActivities
}
- }
- ColumnLayout {
- PlasmaComponents3.Label {
- id: activityLabel
- text: `[${course}] ${title}`
- font.bold: important
- font.strikeout: finished
- color: important
- ? PlasmaCore.Theme.negativeTextColor
- : PlasmaCore.Theme.textColor
- wrapMode: Text.WordWrap
- Layout.fillWidth: true
- }
+ ColumnLayout {
+ PlasmaComponents3.Label {
+ id: activityLabel
+ text: `[${course}] ${title}`
+ font.bold: important
+ font.strikeout: finished
+ color: important
+ ? PlasmaCore.Theme.negativeTextColor
+ : PlasmaCore.Theme.textColor
+ wrapMode: Text.WordWrap
+ Layout.fillWidth: true
+ }
- PlasmaComponents3.Label {
- id: dueLabel
- visible: type == "assignment"
- text: Activity.dueLabelText()
- color: activityLabel.color
- Layout.fillWidth: true
- }
+ PlasmaComponents3.Label {
+ id: dueLabel
+ visible: type == "assignment"
+ text: Activity.dueLabelText()
+ color: activityLabel.color
+ Layout.fillWidth: true
+ }
- MouseArea {
- width: parent.width
- height: parent.height
- onClicked: () => {
- activityCheckbox.toggle() // toggle checkbox
- activityCheckbox.toggled() // and trigger the onToggled effects
+ MouseArea {
+ width: parent.width
+ height: parent.height
+ cursorShape: Qt.PointingHandCursor
+ onClicked: () => {
+ if (type == "announcement") {
+ expanded = !expanded
+ } else {
+ Qt.openUrlExternally(url)
+ }
+ }
}
}
}
- }
+ // buttons
+ RowLayout {
+ Layout.alignment: Qt.AlignRight
+ PlasmaComponents3.ToolButton {
+ icon.name: "emblem-important-symbolic"
+ checked: important
+ opacity: activityItem.containsMouse ? 1 : 0
- RowLayout {
- Layout.alignment: Qt.AlignRight
+ onClicked: () => {
+ important = !important
+ activityLabel.font.bold = important
+ activityLabel.color = important
+ ? PlasmaCore.Theme.negativeTextColor
+ : PlasmaCore.Theme.textColor
+
+ const configKeys = {
+ announcement: "importantAnnouncements",
+ assignment: "importantAssignments",
+ }
- PlasmaComponents3.ToolButton {
- icon.name: "view-visible"
- // only show when mouse is hovering above this activity
- opacity: activityItem.containsMouse ? 1 : 0
- onClicked: () => {
- Qt.openUrlExternally(url)
+ let importantActivities = plasmoid.configuration[configKeys[type]]
+ if (important) {
+ if (!importantActivities.includes(activityId)) {
+ importantActivities.push(activityId)
+ }
+ } else {
+ // remove activityId from list
+ importantActivities.splice(
+ importantActivities.indexOf(activityId), 1
+ )
+ }
+ // save config
+ plasmoid.configuration[configKeys[type]] = importantActivities
+ }
}
}
+ }
- PlasmaComponents3.ToolButton {
- icon.name: "emblem-important-symbolic"
- checked: important
- opacity: activityItem.containsMouse ? 1 : 0
-
- onClicked: () => {
- important = !important
- activityLabel.font.bold = important
- activityLabel.color = important
- ? PlasmaCore.Theme.negativeTextColor
- : PlasmaCore.Theme.textColor
-
- const configKeys = {
- announcement: "importantAnnouncements",
- assignment: "importantAssignments",
- }
+ // announcement message
+ PlasmaExtras.Paragraph {
+ Layout.fillWidth: true
+ visible: expanded
+ text: message
+ }
- let importantActivities = plasmoid.configuration[configKeys[type]]
- if (important) {
- if (!importantActivities.includes(activityId)) {
- importantActivities.push(activityId)
- }
- } else {
- // remove activityId from list
- importantActivities.splice(
- importantActivities.indexOf(activityId), 1
- )
- }
- // save config
- plasmoid.configuration[configKeys[type]] = importantActivities
- }
+ PlasmaComponents3.Button {
+ icon.name: "internet-web-browser"
+ visible: expanded
+ text: i18n("Open in browser")
+ onClicked: () => {
+ Qt.openUrlExternally(url)
}
}
}