Warning, /plasma/plasma-workspace/applets/digital-clock/package/contents/ui/Tooltip.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2015 Martin Klapetek <mklapetek@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 import QtQml 0008 import QtQuick 2.0 0009 import QtQuick.Layouts 1.1 0010 import org.kde.plasma.components 3.0 as PlasmaComponents3 0011 import org.kde.plasma.plasmoid 2.0 0012 import org.kde.kirigami 2.20 as Kirigami 0013 0014 Item { 0015 id: tooltipContentItem 0016 0017 property int preferredTextWidth: Kirigami.Units.gridUnit * 20 0018 0019 implicitWidth: mainLayout.implicitWidth + Kirigami.Units.gridUnit 0020 implicitHeight: mainLayout.implicitHeight + Kirigami.Units.gridUnit 0021 0022 LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft 0023 LayoutMirroring.childrenInherit: true 0024 Kirigami.Theme.colorSet: Kirigami.Theme.Window 0025 Kirigami.Theme.inherit: false 0026 0027 /** 0028 * These accessible properties are used in the compact representation, 0029 * not here. 0030 */ 0031 Accessible.name: i18nc("@info:tooltip %1 is a localized long date", "Today is %1", tooltipSubtext.text) 0032 Accessible.description: { 0033 let description = tooltipSubLabelText.visible ? [tooltipSubLabelText.text] : []; 0034 for (let i = 0; i < timezoneRepeater.count; i += 2) { 0035 description.push(`${timezoneRepeater.itemAt(i).text}: ${timezoneRepeater.itemAt(i + 1).text}`); 0036 } 0037 return description.join('; '); 0038 } 0039 0040 ColumnLayout { 0041 id: mainLayout 0042 0043 anchors { 0044 left: parent.left 0045 top: parent.top 0046 margins: Kirigami.Units.largeSpacing 0047 } 0048 0049 spacing: 0 0050 0051 Kirigami.Heading { 0052 id: tooltipMaintext 0053 0054 Layout.minimumWidth: Math.min(implicitWidth, preferredTextWidth) 0055 Layout.maximumWidth: preferredTextWidth 0056 0057 level: 3 0058 elide: Text.ElideRight 0059 // keep this consistent with toolTipMainText in analog-clock 0060 text: clocks.visible ? Qt.formatDate(tzDate, Locale.LongFormat) : Qt.formatDate(tzDate,"dddd") 0061 textFormat: Text.PlainText 0062 } 0063 0064 PlasmaComponents3.Label { 0065 id: tooltipSubtext 0066 0067 Layout.minimumWidth: Math.min(implicitWidth, preferredTextWidth) 0068 Layout.maximumWidth: preferredTextWidth 0069 0070 text: { 0071 if (Plasmoid.configuration.showSeconds === 0) { 0072 return Qt.formatDate(tzDate, dateFormatString); 0073 } else { 0074 return "%1\n%2" 0075 .arg(Qt.formatTime(tzDate, Qt.locale().timeFormat(Locale.LongFormat))) 0076 .arg(Qt.formatDate(tzDate, Qt.formatDate(tzDate, dateFormatString))) 0077 } 0078 } 0079 textFormat: Text.PlainText 0080 opacity: 0.6 0081 visible: !clocks.visible 0082 } 0083 0084 PlasmaComponents3.Label { 0085 id: tooltipSubLabelText 0086 Layout.minimumWidth: Math.min(implicitWidth, preferredTextWidth) 0087 Layout.maximumWidth: preferredTextWidth 0088 text: root.fullRepresentationItem ? root.fullRepresentationItem.monthView.todayAuxilliaryText : "" 0089 textFormat: Text.PlainText 0090 opacity: 0.6 0091 visible: !clocks.visible && text.length > 0 0092 } 0093 0094 GridLayout { 0095 id: clocks 0096 0097 Layout.minimumWidth: Math.min(implicitWidth, preferredTextWidth) 0098 Layout.maximumWidth: preferredTextWidth 0099 Layout.minimumHeight: childrenRect.height 0100 visible: timezoneRepeater.count > 2 0101 columns: 2 0102 rowSpacing: 0 0103 0104 Repeater { 0105 id: timezoneRepeater 0106 0107 model: { 0108 let timezones = []; 0109 for (let i = 0; i < Plasmoid.configuration.selectedTimeZones.length; i++) { 0110 let thisTzData = Plasmoid.configuration.selectedTimeZones[i]; 0111 0112 /* Don't add this item if it's the same as the local time zone, which 0113 * would indicate that the user has deliberately added a dedicated entry 0114 * for the city of their normal time zone. This is not an error condition 0115 * because the user may have done this on purpose so that their normal 0116 * local time zone shows up automatically while they're traveling and 0117 * they've switched the current local time zone to something else. But 0118 * with this use case, when they're back in their normal local time zone, 0119 * the clocks list would show two entries for the same city. To avoid 0120 * this, let's suppress the duplicate. 0121 */ 0122 if (!(thisTzData !== "Local" && nameForZone(thisTzData) === nameForZone("Local"))) { 0123 timezones.push(thisTzData); 0124 timezones.push(thisTzData); 0125 } 0126 } 0127 0128 return timezones; 0129 } 0130 0131 PlasmaComponents3.Label { 0132 // Layout.fillWidth is buggy here 0133 Layout.alignment: index % 2 === 0 ? Qt.AlignRight : Qt.AlignLeft 0134 text: { 0135 if (index % 2 === 0) { 0136 return i18nc("@label %1 is a city or time zone name", "%1:", nameForZone(modelData)); 0137 } else { 0138 return timeForZone(modelData, Plasmoid.configuration.showSeconds > 0); 0139 } 0140 } 0141 textFormat: Text.PlainText 0142 font.weight: modelData === Plasmoid.configuration.lastSelectedTimezone ? Font.Bold : Font.Normal 0143 wrapMode: Text.NoWrap 0144 elide: Text.ElideNone 0145 } 0146 } 0147 } 0148 } 0149 }