Warning, /education/marble/src/plasma/applets/worldclock/package/contents/ui/main.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2016 Friedrich W. H. Kossebau <kossebau@kde.org>
0003     SPDX-License-Identifier: LGPL-2.1-or-later
0004 */
0005 
0006 import QtQuick 2.1
0007 import QtQuick.Layouts 1.1
0008 
0009 import org.kde.plasma.plasmoid 2.0
0010 import org.kde.plasma.core 2.0 as PlasmaCore
0011 import org.kde.plasma.components 2.0 as PlasmaComponents
0012 import org.kde.plasma.extras 2.0 as PlasmaExtras
0013 
0014 import org.kde.marble.private.plasma 0.20
0015 
0016 Item {
0017     id: root
0018 
0019     readonly property date currentDateTime: timeDataSource.data.Local ? timeDataSource.data.Local.DateTime : new Date()
0020 
0021     PlasmaCore.DataSource {
0022         id: timeDataSource
0023         engine: "time"
0024         connectedSources: ["Local"]
0025         interval: 60000
0026         intervalAlignment: PlasmaCore.Types.AlignToMinute
0027     }
0028     PlasmaCore.DataSource {
0029         id: geolocationDataSource
0030         engine: "geolocation"
0031         connectedSources: (marbleItem.centerMode === 2) ? ["location"] : []
0032         interval: 10 * 60 * 1000 // every 30 minutes, might be still too large for users on the ISS :P
0033     }
0034 
0035     Plasmoid.preferredRepresentation: Plasmoid.fullRepresentation
0036 
0037     Plasmoid.fullRepresentation: MarbleItem {
0038         id: marbleItem
0039 
0040         readonly property int centerMode: plasmoid.configuration.centerMode
0041         readonly property double fixedLongitude: plasmoid.configuration.fixedLongitude
0042         readonly property double locationLongitude: geolocationDataSource.data.longitude || 0
0043 
0044         enabled: false // do not handle input
0045         Layout.minimumWidth: units.gridUnit * 20
0046         Layout.minimumHeight: units.gridUnit * 10
0047 
0048         radius: {
0049             var ratio = width/height;
0050             if (projection === MarbleItem.Equirectangular) {
0051                 if (ratio > 2) {
0052                     return height / 2;
0053                 }
0054                 return width / 4;
0055             } else {
0056                 if (ratio > 1) {
0057                     return height / 4;
0058                 }
0059                 return width / 4
0060             }
0061         }
0062 
0063         // Theme settings.
0064         projection: (plasmoid.configuration.projection === 0) ? MarbleItem.Equirectangular : MarbleItem.Mercator
0065         mapThemeId: "earth/bluemarble/bluemarble.dgml"
0066 
0067         // Visibility of layers/plugins.
0068         showAtmosphere: false
0069         showClouds: false
0070         showBackground: false
0071 
0072         showGrid: false
0073         showCrosshairs: false
0074         showCompass: false
0075         showOverviewMap: false
0076         showScaleBar: false
0077         // TODO: showCredit: false
0078 
0079         onCenterModeChanged: handleCenterModeChange()
0080         function handleCenterModeChange() {
0081             if (centerMode === 0) {
0082                 marbleMap.setLockToSubSolarPoint(true);
0083             } else if (centerMode === 1) {
0084                 marbleMap.setLockToSubSolarPoint(false);
0085                 marbleMap.centerOn(fixedLongitude, 0.0);
0086             } else {
0087                 marbleMap.setLockToSubSolarPoint(false);
0088                 marbleMap.centerOn(locationLongitude, 0.0);
0089             }
0090         }
0091 
0092         onFixedLongitudeChanged: {
0093             if (centerMode === 1) {
0094                 marbleMap.centerOn(fixedLongitude, 0.0);
0095             }
0096         }
0097 
0098         onLocationLongitudeChanged: {
0099             if (centerMode === 2) {
0100                 marbleMap.centerOn(locationLongitude, 0.0);
0101             }
0102         }
0103 
0104         Component.onCompleted: {
0105             marbleMap.setShowSunShading(true);
0106             marbleMap.setShowCityLights(true);
0107 
0108             marbleMap.setShowPlaces(false);
0109             marbleMap.setShowOtherPlaces(false);
0110             marbleMap.setShowCities(false);
0111             marbleMap.setShowTerrain(false);
0112 
0113             handleCenterModeChange();
0114         }
0115 
0116         ColumnLayout {
0117             anchors.centerIn: parent
0118 
0119             PlasmaExtras.Heading  {
0120                 id: timeLabel
0121 
0122                 Layout.alignment: Qt.AlignHCenter
0123 
0124                 level: 1
0125                 text: plasmoid.configuration.showDate ? Qt.formatDateTime(currentDateTime) : Qt.formatTime(currentDateTime)
0126 
0127                 verticalAlignment: Text.AlignVCenter
0128                 horizontalAlignment: Text.AlignHCenter
0129             }
0130             /*
0131             PlasmaExtras.Heading {
0132                 id: timezoneLabel
0133 
0134                 Layout.alignment: Qt.AlignHCenter
0135 
0136                 level: 3
0137                 text: "Internet"
0138 
0139                 visible: text.length > 0
0140                 horizontalAlignment: Text.AlignHCenter
0141             }
0142             */
0143         }
0144     }
0145 }