]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - sitara-linux/video-graphics-test.git/blobdiff - content/Clock.qml
video graphics test : new demo application
[sitara-linux/video-graphics-test.git] / content / Clock.qml
diff --git a/content/Clock.qml b/content/Clock.qml
new file mode 100755 (executable)
index 0000000..9e6ed16
--- /dev/null
@@ -0,0 +1,140 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of The Qt Company Ltd nor the names of its
+**     contributors may be used to endorse or promote products derived
+**     from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Item {
+    id : clock
+    width: {
+        if (ListView.view && ListView.view.width >= 200)
+            return ListView.view.width / Math.floor(ListView.view.width / 200.0);
+        else
+            return 200;
+    }
+
+    height: {
+        if (ListView.view && ListView.view.height >= 240)
+            return ListView.view.height;
+        else
+            return 240;
+    }
+
+    property alias city: cityLabel.text
+    property int hours
+    property int minutes
+    property int seconds
+    property real shift
+    property bool night: false
+    property bool internationalTime: true //Unset for local time
+
+    function timeChanged() {
+        var date = new Date;
+        hours = internationalTime ? date.getUTCHours() + Math.floor(clock.shift) : date.getHours()
+        night = ( hours < 7 || hours > 19 )
+        minutes = internationalTime ? date.getUTCMinutes() + ((clock.shift % 1) * 60) : date.getMinutes()
+        seconds = date.getUTCSeconds();
+    }
+
+    Timer {
+        interval: 100; running: true; repeat: true;
+        onTriggered: clock.timeChanged()
+    }
+
+    Item {
+        anchors.centerIn: parent
+        width: 200; height: 240
+
+        Image { id: background; source: "clock.png"; visible: clock.night == false }
+        Image { source: "clock-night.png"; visible: clock.night == true }
+
+
+        Image {
+            x: 92.5; y: 27
+            source: "hour.png"
+            transform: Rotation {
+                id: hourRotation
+                origin.x: 7.5; origin.y: 73;
+                angle: (clock.hours * 30) + (clock.minutes * 0.5)
+                Behavior on angle {
+                    SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+                }
+            }
+        }
+
+        Image {
+            x: 93.5; y: 17
+            source: "minute.png"
+            transform: Rotation {
+                id: minuteRotation
+                origin.x: 6.5; origin.y: 83;
+                angle: clock.minutes * 6
+                Behavior on angle {
+                    SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+                }
+            }
+        }
+
+        Image {
+            x: 97.5; y: 20
+            source: "second.png"
+            transform: Rotation {
+                id: secondRotation
+                origin.x: 2.5; origin.y: 80;
+                angle: clock.seconds * 6
+                Behavior on angle {
+                    SpringAnimation { spring: 2; damping: 0.2; modulus: 360 }
+                }
+            }
+        }
+
+        Image {
+            anchors.centerIn: background; source: "center.png"
+        }
+
+        Text {
+            id: cityLabel
+            y: 210; anchors.horizontalCenter: parent.horizontalCenter
+            color: "white"
+            font.family: "Helvetica"
+            font.bold: true; font.pixelSize: 16
+            style: Text.Raised; styleColor: "black"
+        }
+    }
+}