examples/declarative/toys/clocks/content/Clock.qml
branchGCC_SURGE
changeset 31 5daf16870df6
parent 30 5dc02b23752f
child 33 3e2da88830cd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/declarative/toys/clocks/content/Clock.qml	Thu Jul 22 16:41:55 2010 +0100
@@ -0,0 +1,123 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtDeclarative module 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 Nokia Corporation and its Subsidiary(-ies) 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 Qt 4.7
+
+Item {
+    id: clock
+    width: 200; height: 230
+
+    property alias city: cityLabel.text
+    property variant hours
+    property variant minutes
+    property variant seconds
+    property variant shift : 0
+    property bool night: false
+
+    function timeChanged() {
+        var date = new Date;
+        hours = shift ? date.getUTCHours() + Math.floor(clock.shift) : date.getHours()
+        night = ( hours < 7 || hours > 19 )
+        minutes = shift ? date.getUTCMinutes() + ((clock.shift % 1) * 60) : date.getMinutes()
+        seconds = date.getUTCSeconds();
+    }
+
+    Timer {
+        interval: 100; running: true; repeat: true; triggeredOnStart: true
+        onTriggered: clock.timeChanged()
+    }
+
+    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"
+        smooth: true
+        transform: Rotation {
+            id: hourRotation
+            origin.x: 7.5; origin.y: 73; angle: 0
+            SpringFollow on angle {
+                spring: 2; damping: 0.2; modulus: 360
+                to: (clock.hours * 30) + (clock.minutes * 0.5)
+            }
+        }
+    }
+
+    Image {
+        x: 93.5; y: 17
+        source: "minute.png"
+        smooth: true
+        transform: Rotation {
+            id: minuteRotation
+            origin.x: 6.5; origin.y: 83; angle: 0
+            SpringFollow on angle {
+                spring: 2; damping: 0.2; modulus: 360
+                to: clock.minutes * 6
+            }
+        }
+    }
+
+    Image {
+        x: 97.5; y: 20
+        source: "second.png"
+        smooth: true
+        transform: Rotation {
+            id: secondRotation
+            origin.x: 2.5; origin.y: 80; angle: 0
+            SpringFollow on angle {
+                spring: 5; damping: 0.25; modulus: 360
+                to: clock.seconds * 6
+            }
+        }
+    }
+
+    Image {
+        anchors.centerIn: background; source: "center.png"
+    }
+
+    Text {
+        id: cityLabel
+        y: 200; anchors.horizontalCenter: parent.horizontalCenter
+        color: "white"
+        font.bold: true; font.pixelSize: 14
+        style: Text.Raised; styleColor: "black"
+    }
+}