Cleanup/simplify tweetsearch example
[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
71         anchors.bottom: parent.bottom
72         width: container.ListView.view ? container.ListView.view.width : 0
73         height: Math.max(72, tweet.y + tweet.height + 10)
74
75         front: Rectangle {
76             width: container.ListView.view ? container.ListView.view.width : 0
77             height: Math.max(72, tweet.y + tweet.height + 10)
78             color: "#2699bf"
79
80             Rectangle { color: "#33ccff"; width: parent.width; height: 1 }
81             Rectangle { color: "#1a6680"; width: parent.width; height: 1; anchors.bottom: parent.bottom }
82
83             Image {
84                 id: placeHolder
85                 source: "resources/anonymous.png"
86                 x: 10; y: 9
87                 visible: avatar.status != Image.Ready
88             }
89
90             Image {
91                 id: avatar
92                 source: model.userImage
93                 anchors.fill: placeHolder
94                 MouseArea {
95                     id: mouseArea
96                     anchors.fill: parent
97                     onClicked: {
98                         flipBar.flipUp()
99                         flipBar.flipped = true
100                     }
101                 }
102             }
103
104             Text {
105                 id: name
106                 text: Helper.realName(model.name)
107                 anchors { left: avatar.right; leftMargin: 10; top: avatar.top; topMargin: -3 }
108                 font.pixelSize: 12
109                 font.bold: true
110                 color: "white"
111                 linkColor: "white"
112             }
113
114             Text {
115                 id: tweet
116                 text: model.statusText
117                 anchors { left: avatar.right; leftMargin: 10; top: name.bottom; topMargin: 0; right: parent.right; rightMargin: 10 }
118                 wrapMode: Text.WordWrap
119                 font.pixelSize: 12
120                 font.bold: false
121                 color: "#adebff"
122                 linkColor: "white"
123                 onLinkActivated: {
124                     var tag = link.split("http://search.twitter.com/search?q=%23")
125                     var user = link.split("https://twitter.com/")
126                     if (tag[1] != undefined) {
127                         mainListView.positionViewAtBeginning()
128                         mainListView.clear()
129                         mainListView.autoSearch('tag', tag[1])
130                         tweetsModel.from = ""
131                         tweetsModel.phrase = "#" + tag[1]
132                     } else if (user[1] != undefined) {
133                         mainListView.positionViewAtBeginning()
134                         mainListView.clear()
135                         mainListView.autoSearch('user', user[1])
136                         tweetsModel.phrase = ""
137                         tweetsModel.from = user[1]
138                     } else
139                         Qt.openUrlExternally(link)
140                 }
141             }
142         }
143
144         back: Rectangle {
145             width: container.ListView.view ? container.ListView.view.width : 0
146             height: Math.max(72, tweet.y + tweet.height + 10)
147             color: "#be4a25"
148
149             Rectangle { color: "#ff6633"; width: parent.width; height: 1 }
150             Rectangle { color: "#80341a"; width: parent.width; height: 1; anchors.bottom: parent.bottom }
151
152             Image {
153                 id: avatar2
154                 source: model.userImage
155                 anchors.right: parent.right
156                 anchors.rightMargin: 10
157                 y: 9
158                 MouseArea {
159                     anchors.fill: parent
160                     onClicked: {
161                         flipBar.flipDown()
162                         flipBar.flipped = false
163                     }
164                 }
165             }
166
167             Text {
168                 id: username
169                 text: Helper.twitterName(model.name)
170                 x: 10; anchors { top: avatar2.top; topMargin: -3 }
171                 font.pixelSize: 12
172                 font.bold: true
173                 color: "white"
174                 linkColor: "white"
175             }
176
177             Text {
178                 text: model.source + "<br>" + Helper.formatDate(model.published) + "<br>" + model.uri
179                 x: 10; anchors { top: username.bottom; topMargin: 0 }
180                 wrapMode: Text.WordWrap
181                 font.pixelSize: 12
182                 font.bold: false
183                 color: "#ffc2ad"
184                 linkColor: "white"
185                 onLinkActivated: Qt.openUrlExternally(link);
186             }
187         }
188     }
189 }