Warning, /plasma/plasma-workspace/applets/calendar/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2013 Heena Mahour <heena393@gmail.com>
0003     SPDX-FileCopyrightText: 2013 Sebastian Kügler <sebas@kde.org>
0004     SPDX-FileCopyrightText: 2016 Kai Uwe Broulik <kde@privat.broulik.de>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 import QtQuick 2.12
0009 import QtQuick.Layouts 1.12
0010 
0011 import org.kde.plasma.plasmoid 2.0
0012 import org.kde.plasma.plasma5support 2.0 as P5Support
0013 import org.kde.plasma.components 3.0 as PlasmaComponents3
0014 import org.kde.kirigami 2.20 as Kirigami
0015 
0016 import org.kde.plasma.workspace.calendar 2.0
0017 
0018 PlasmoidItem {
0019     id: root
0020     switchWidth: Kirigami.Units.gridUnit * 12
0021     switchHeight: Kirigami.Units.gridUnit * 12
0022 
0023     toolTipMainText: Qt.formatDate(dataSource.data.Local.DateTime, "dddd")
0024     toolTipSubText: {
0025         // this logic is taken from digital-clock:
0026         // remove "dddd" from the locale format string
0027         // /all/ locales in LongFormat have "dddd" either
0028         // at the beginning or at the end. so we just
0029         // remove it + the delimiter and space
0030         var format = Qt.locale().dateFormat(Locale.LongFormat);
0031         format = format.replace(/(^dddd.?\s)|(,?\sdddd$)/, "");
0032         return Qt.formatDate(dataSource.data.Local.DateTime, format)
0033     }
0034 
0035     Layout.minimumWidth: Kirigami.Units.iconSizes.large
0036     Layout.minimumHeight: Kirigami.Units.iconSizes.large
0037 
0038     P5Support.DataSource {
0039         id: dataSource
0040         engine: "time"
0041         connectedSources: ["Local"]
0042         interval: 60000
0043         intervalAlignment: P5Support.Types.AlignToMinute
0044     }
0045 
0046     // Only exists because the default CompactRepresentation doesn't expose a
0047     // generic way to overlay something on top of the icon.
0048     // TODO remove once it gains that feature.
0049     compactRepresentation: MouseArea {
0050         onClicked: root.expanded = !root.expanded
0051 
0052         Kirigami.Icon {
0053             anchors.fill: parent
0054 
0055             source: Qt.resolvedUrl("../images/mini-calendar.svgz")
0056 
0057             PlasmaComponents3.Label {
0058                 id: monthLabel
0059                 y: parent.y + parent.height * 0.05;
0060                 x: 0
0061                 width: parent.width
0062                 height: parent.height * 0.2
0063 
0064                 horizontalAlignment: Text.AlignHCenter
0065                 verticalAlignment: Text.AlignBottom
0066                 fontSizeMode: Text.Fit
0067                 minimumPointSize: 1
0068 
0069                 /* color must be black because it's set on top of a white icon */
0070                 color: "black"
0071 
0072                 text: {
0073                     var d = new Date(dataSource.data.Local.DateTime);
0074                     return Qt.formatDate(d, "MMM");
0075                 }
0076                 textFormat: Text.PlainText
0077                 visible: parent.width > Kirigami.Units.gridUnit * 3
0078             }
0079 
0080             PlasmaComponents3.Label {
0081                 anchors.top: monthLabel.bottom
0082                 x: 0
0083                 width: parent.width
0084                 height: parent.height * 0.6
0085                 horizontalAlignment: Text.AlignHCenter
0086                 verticalAlignment: Text.AlignTop
0087                 minimumPointSize: 1
0088                 font.pixelSize: 1000
0089 
0090                 fontSizeMode: Text.Fit
0091 
0092                 /* color must be black because it's set on top of a white icon */
0093                 color: "black"
0094                 text: {
0095                     var d = new Date(dataSource.data.Local.DateTime)
0096                     var format = Plasmoid.configuration.compactDisplay
0097 
0098                     if (format === "w") {
0099                         return Plasmoid.weekNumber(d)
0100                     }
0101 
0102                     return Qt.formatDate(d, format)
0103                 }
0104                 textFormat: Text.PlainText
0105             }
0106         }
0107     }
0108 
0109     fullRepresentation: Item {
0110 
0111         // sizing taken from digital clock
0112         readonly property int _minimumWidth: calendar.showWeekNumbers ? Math.round(_minimumHeight * 1.75) : Math.round(_minimumHeight * 1.5)
0113         readonly property int _minimumHeight: Kirigami.Units.gridUnit * 14
0114         readonly property var appletInterface: root
0115 
0116         Layout.minimumWidth: _minimumWidth
0117         Layout.maximumWidth: Kirigami.Units.gridUnit * 80
0118         Layout.minimumHeight: _minimumHeight
0119         Layout.maximumHeight: Kirigami.Units.gridUnit * 40
0120 
0121         MonthView {
0122             id: calendar
0123             today: dataSource.data["Local"]["DateTime"]
0124             showWeekNumbers: Plasmoid.configuration.showWeekNumbers
0125 
0126             anchors.fill: parent
0127         }
0128     }
0129 }