Warning, /maui/era/src/controls/AnalogClock.qml is written in an unsupported language. File is not indexed.
0001 import QtQuick 2.0
0002 import QtQuick.Controls 2.15
0003 import QtQuick.Layouts 1.12
0004
0005 import org.mauikit.controls 1.3 as Maui
0006 import QtGraphicalEffects 1.0
0007
0008 Control
0009 {
0010 id : clock
0011 implicitHeight: _layout.implicitHeight + topPadding + bottomPadding
0012 implicitWidth: _layout.implicitWidth + leftPadding + rightPadding
0013 spacing: Maui.Style.space.big
0014 font.bold: true
0015 font.weight: Font.Black
0016 font.pointSize: 24
0017 font.family: "Open 24 Display St"
0018 font.letterSpacing: Maui.Style.space.big
0019 padding: Maui.Style.space.big
0020
0021 property string city: i18n("Local")
0022 property int hours
0023 property int minutes
0024 property int seconds
0025 property real shift
0026 property bool night: false
0027 property bool internationalTime: false //Unset for local time
0028
0029 function timeChanged() {
0030 var date = new Date;
0031 hours = internationalTime ? date.getUTCHours() + Math.floor(clock.shift) : date.getHours()
0032 night = ( hours < 7 || hours > 17 )
0033 minutes = internationalTime ? date.getUTCMinutes() + ((clock.shift % 1) * 60) : date.getMinutes()
0034 seconds = date.getUTCSeconds();
0035 }
0036
0037 Timer {
0038 interval: 100; running: true; repeat: true;
0039 onTriggered: clock.timeChanged()
0040 }
0041
0042 contentItem: ColumnLayout
0043 {
0044 id: _layout
0045 spacing: clock.spacing
0046
0047 Column
0048 {
0049 Layout.fillWidth: true
0050 Label
0051 {
0052 width: parent.width
0053 // font.pointSize: Maui.Style.fontSizes.small
0054 font.weight: Font.Bold
0055 font.bold: true
0056 opacity : 0.7
0057 horizontalAlignment: Qt.AlignHCenter
0058 text: clock.city + " +" + clock.shift + " HRS"
0059 }
0060
0061
0062 Label
0063 {
0064 font: clock.font
0065 width: parent.width
0066 horizontalAlignment: Qt.AlignHCenter
0067 text: clock.hours + ":" + clock.minutes
0068 }
0069 }
0070
0071 Item
0072 {
0073 Layout.preferredHeight: 200
0074 Layout.preferredWidth: 200
0075
0076 Layout.alignment: Qt.AlignCenter
0077 Rectangle
0078 {
0079 id: _clockBg
0080 height: 200
0081 width: 200
0082 radius: height
0083 color: clock.night ? "#333" : "#fafafa"
0084 layer.enabled: true
0085 layer.effect: DropShadow
0086 {
0087 horizontalOffset: 0
0088 verticalOffset: 0
0089 radius: 8
0090 samples: 16
0091 color: "#80000000"
0092 transparentBorder: true
0093 }
0094
0095 }
0096
0097
0098
0099 Rectangle
0100 {
0101 id: _hourHandle
0102 x: 100; y: Math.floor(_clockBg.height/2 - height)
0103 height:50
0104 width: 5
0105 radius: width
0106 color: clock.night? "#fafafa" : "#333"
0107 transform: Rotation {
0108 id: hourRotation
0109 origin.x: _hourHandle.width/2; origin.y: _hourHandle.height;
0110 angle: (clock.hours * 30) + (clock.minutes * 0.5)
0111 Behavior on angle {
0112 SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
0113 }
0114 }
0115 }
0116
0117 Rectangle
0118 {
0119 id: _minuteHandle
0120 opacity: 0.5
0121 x: 100; y: Math.floor(_clockBg.height/2 - height)
0122 height: 60
0123 width: 5
0124 radius: width
0125 color: clock.night? "#fafafa" : "#333"
0126
0127 transform: Rotation {
0128 id: minuteRotation
0129 origin.x: _minuteHandle.width/2; origin.y: _minuteHandle.height;
0130 angle: clock.minutes * 6
0131 Behavior on angle {
0132 SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
0133 }
0134 }
0135 }
0136
0137 Rectangle
0138 {
0139 id: _secondHandle
0140 x: 100; y: Math.floor(_clockBg.height/2 - height)
0141 height: 80
0142 width: 2
0143 radius: width
0144 color: Maui.Theme.highlightColor
0145 transform: Rotation {
0146 id: secondRotation
0147 origin.x: _secondHandle.width/2; origin.y: _secondHandle.height;
0148 angle: clock.seconds * 6
0149 Behavior on angle {
0150 SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
0151 }
0152 }
0153 }
0154
0155 Rectangle
0156 {
0157 anchors.centerIn: _clockBg
0158 height: 16
0159 width: 16
0160 radius: width
0161 color: Qt.darker(_clockBg.color, 1.2)
0162
0163 Rectangle
0164 {
0165 anchors.fill: parent
0166 anchors.margins: 4
0167 color: _clockBg.color
0168 radius: width
0169 }
0170 }
0171 }
0172 }
0173 }