Warning, /pim/itinerary/src/app/LocationInfoDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org>
0003
0004 SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Layouts
0009 import QtQuick.Controls as QQC2
0010 import org.kde.kirigami as Kirigami
0011 import org.kde.i18n.localeData
0012 import org.kde.kitinerary as KItinerary
0013 import org.kde.kirigamiaddons.formcard as FormCard
0014 import org.kde.itinerary
0015
0016 FormCard.FormCard {
0017 id: root
0018 width: parent.width
0019
0020 property var locationInfo
0021
0022 FormCard.AbstractFormDelegate {
0023 background: Rectangle {
0024 id: headerBackground
0025 color: Kirigami.Theme.neutralBackgroundColor
0026 Kirigami.Theme.colorSet: Kirigami.Theme.Header
0027 Kirigami.Theme.inherit: false
0028 }
0029
0030 contentItem: RowLayout {
0031 id: headerLayout
0032 anchors.fill: parent
0033 anchors.margins: Kirigami.Units.largeSpacing
0034
0035 Kirigami.Icon {
0036 source: "documentinfo"
0037 Layout.preferredWidth: Kirigami.Units.iconSizes.smallMedium
0038 Layout.preferredHeight: Layout.preferredWidth
0039 isMask: true
0040 }
0041 QQC2.Label {
0042 id: headerLabel
0043 text: i18n("Entering %1", Country.fromAlpha2(locationInfo.isoCode).name)
0044 Layout.fillWidth: true
0045 Accessible.ignored: true
0046 }
0047 }
0048 }
0049
0050 FormCard.AbstractFormDelegate {
0051 background: Item {}
0052 contentItem: Column {
0053 id: topLayout
0054 spacing: Kirigami.Units.smallSpacing
0055
0056 QQC2.Label {
0057 width: topLayout.width
0058 text: locationInfo.drivingSideLabel
0059 visible: locationInfo.drivingSideDiffers
0060 wrapMode: Text.WordWrap
0061 Accessible.ignored: !visible
0062 }
0063
0064 QQC2.Label {
0065 width: topLayout.width
0066 text: visible ? i18n("No compatible power sockets: %1", locationInfo.powerSocketTypes) : ""
0067 color: Kirigami.Theme.negativeTextColor
0068 visible: locationInfo.powerPlugCompatibility == LocationInformation.Incompatible
0069 wrapMode: Text.WordWrap
0070 Accessible.ignored: !visible
0071 }
0072 QQC2.Label {
0073 width: topLayout.width
0074 text: visible ? i18n("Some incompatible power sockets: %1", locationInfo.powerSocketTypes) : ""
0075 visible: locationInfo.powerPlugCompatibility == LocationInformation.PartiallyCompatible && locationInfo.powerSocketTypes != ""
0076 wrapMode: Text.WordWrap
0077 Accessible.ignored: !visible
0078 }
0079 QQC2.Label {
0080 width: topLayout.width
0081 text: visible ? i18n("Some incompatible power plugs: %1", locationInfo.powerPlugTypes) : ""
0082 visible: locationInfo.powerPlugCompatibility == LocationInformation.PartiallyCompatible && locationInfo.powerPlugTypes != ""
0083 wrapMode: Text.WordWrap
0084 Accessible.ignored: !visible
0085 }
0086
0087 QQC2.Label {
0088 width: topLayout.width
0089 text: visible ? i18n("Timezone change: %1 (%2)", locationInfo.timeZoneName,
0090 (locationInfo.timeZoneOffsetDelta >= 0 ? "+" : "")
0091 + Localizer.formatDuration(locationInfo.timeZoneOffsetDelta)) : ""
0092 visible: locationInfo.timeZoneDiffers
0093 wrapMode: Text.WordWrap
0094 Accessible.ignored: !visible
0095 }
0096
0097 QQC2.Label {
0098 width: topLayout.width
0099 text: {
0100 if (!visible)
0101 return "";
0102 let rate = NaN;
0103 let sourceValue = 1.0;
0104 const homeCurrency = Country.fromAlpha2(Settings.homeCountryIsoCode).currencyCode;
0105 if (Settings.performCurrencyConversion)
0106 rate = UnitConversion.convertCurrency(sourceValue, homeCurrency, locationInfo.currencyCode);
0107 while (rate < 1 && rate > 0) { // scale to a useful order of magnitude
0108 rate *= 10;
0109 sourceValue *= 10;
0110 }
0111 if (!isNaN(rate))
0112 return i18nc("currency conversion rate", "Currency: %1 = %2",
0113 Localizer.formatCurrency(sourceValue, homeCurrency), Localizer.formatCurrency(rate, locationInfo.currencyCode));
0114 return i18n("Currency: %1", locationInfo.currencyCode);
0115 }
0116 visible: locationInfo.currencyDiffers
0117 wrapMode: Text.WordWrap
0118 Accessible.ignored: !visible
0119 }
0120 }
0121 }
0122 Accessible.name: headerLabel.text
0123 }