Replace twitter demo with new tweetsearch demo
[profile/ivi/qtdeclarative.git] / examples / demos / tweetsearch / content / TweetDelegate.qml
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
5 **
6 ** This file is part of the examples of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
21 **     the names of its contributors may be used to endorse or promote
22 **     products derived from this software without specific prior written
23 **     permission.
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41 import QtQuick 2.0
42 import "tweetsearch.js" as Helper
43
44 Item {
45     id: container
46     property real hm: 1.0
47     property int appear: -1
48     property real startRotation: 1
49
50     onAppearChanged: {
51         container.startRotation = 0.5
52         flipBar.animDuration = appear;
53         delayedAnim.start();
54     }
55
56     SequentialAnimation {
57         id: delayedAnim
58         PauseAnimation { duration: 50 }
59         ScriptAction { script: flipBar.flipDown(startRotation); }
60     }
61
62     width: 320
63     height: flipBar.height * hm
64
65     FlipBar {
66         id: flipBar
67
68         property bool flipped: false
69         delta: startRotation
70 //        wiggleDuration: 120
71 //        wiggleRoom: 2
72
73         anchors.bottom: parent.bottom
74         width: container.ListView.view ? container.ListView.view.width : 0
75         height: Math.max(72, tweet.y + tweet.height + 10)
76
77         front: Rectangle {
78             width: container.ListView.view ? container.ListView.view.width : 0
79             height: Math.max(72, tweet.y + tweet.height + 10)
80             color: "#2699bf"
81
82             Rectangle { color: "#33ccff"; width: parent.width; height: 1 }
83             Rectangle { color: "#1a6680"; width: parent.width; height: 1; anchors.bottom: parent.bottom }
84
85             Image {
86                 id: placeHolder
87                 source: "resources/anonymous.png"
88                 x: 10; y: 9
89                 visible: avatar.status != Image.Ready
90             }
91             Image {
92                 id: avatar
93                 source: model.userImage
94                 anchors.fill: placeHolder
95             }
96
97             Text {
98                 id: name
99                 text: Helper.realName(model.name)
100                 anchors { left: avatar.right; leftMargin: 10; top: avatar.top; topMargin: -3 }
101                 font.pixelSize: 12
102                 font.bold: true
103                 color: "white"
104                 linkColor: "white"
105             }
106
107             Text {
108                 id: tweet
109                 text: model.statusText
110                 anchors { left: avatar.right; leftMargin: 10; top: name.bottom; topMargin: 0; right: parent.right; rightMargin: 10 }
111                 wrapMode: Text.WordWrap
112                 font.pixelSize: 12
113                 font.bold: false
114                 color: "#adebff"
115                 linkColor: "white"
116             }
117
118             MouseArea {
119                 id: mouseArea
120                 anchors.fill: parent
121                 onClicked: {
122                     if (!flipBar.flipped) {
123                         flipBar.flipUp()
124                         flipBar.flipped = true
125                     } else {
126                         flipBar.flipDown()
127                         flipBar.flipped = false
128                     }
129                 }
130             }
131         }
132
133         back: Rectangle {
134             width: container.ListView.view ? container.ListView.view.width : 0
135             height: Math.max(72, tweet.y + tweet.height + 10)
136             color: "#be4a25"
137
138             Rectangle { color: "#ff6633"; width: parent.width; height: 1 }
139             Rectangle { color: "#80341a"; width: parent.width; height: 1; anchors.bottom: parent.bottom }
140
141             Image {
142                 id: avatar2
143                 source: model.userImage
144                 anchors.right: parent.right
145                 anchors.rightMargin: 10
146                 y: 9
147             }
148
149             Text {
150                 id: username
151                 text: Helper.twitterName(model.name)
152                 x: 10; anchors { top: avatar2.top; topMargin: -3 }
153                 font.pixelSize: 12
154                 font.bold: true
155                 color: "white"
156                 linkColor: "white"
157             }
158
159             Text {
160                 text: model.source + "<br>" + Helper.formatDate(model.published) + "<br>" + model.uri
161                 x: 10; anchors { top: username.bottom; topMargin: 0 }
162                 wrapMode: Text.WordWrap
163                 font.pixelSize: 12
164                 font.bold: false
165                 color: "#ffc2ad"
166                 linkColor: "white"
167                 onLinkActivated: Qt.openUrlExternally(link);
168
169             }
170         }
171     }
172 }