diff options
Diffstat (limited to 'examples/qml/canvas/twitterfriends')
-rw-r--r-- | examples/qml/canvas/twitterfriends/TwitterUser.qml | 294 | ||||
-rw-r--r-- | examples/qml/canvas/twitterfriends/cache.js | 42 | ||||
-rw-r--r-- | examples/qml/canvas/twitterfriends/twitter.qml | 141 |
3 files changed, 0 insertions, 477 deletions
diff --git a/examples/qml/canvas/twitterfriends/TwitterUser.qml b/examples/qml/canvas/twitterfriends/TwitterUser.qml deleted file mode 100644 index 8b906216ef..0000000000 --- a/examples/qml/canvas/twitterfriends/TwitterUser.qml +++ /dev/null @@ -1,294 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** 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 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 QtQuick 2.0 - -Item { - id:twitterUser - property variant friends : []; - property string name : ""; - property string twitterId : ""; - property string image : ""; - property string url : ""; - property string desc : ""; - width : 0; - height : 0; - property int posX:0; - property int posY:0; - property bool hasFocus : false; - property variant canvas; - property variant manager; - property variant linkColor; - property bool selected : false; - - Rectangle { - id:twitterStatus - x:twitterUser.width - y:twitterUser.height - width:250 - height:60 - opacity: 0 - border.color:"steelblue" - border.width:3 - Column { - spacing:2 - Text {color:"steelblue"; font.pointSize:15; width:250; height:30; text:twitterUser.name; wrapMode: Text.WrapAnywhere} - Text {color:"steelblue"; font.pointSize:8; width:250; height:30; text:twitterUser.url; wrapMode: Text.WrapAnywhere} - } - } - - function moved() { - twitterUser.posX = twitterUser.x; - twitterUser.posY = twitterUser.y; - twitterUser.canvas.requestPaint(); - } - - onXChanged: moved(); - onYChanged: moved(); - - MouseArea { - anchors.fill:parent - drag.target : twitterUser - drag.axis : Drag.XandYAxis - - onClicked: { - if (!twitterUser.selected) { - twitterUser.selected = true; - twitterStatus.opacity = 1; - twitterStatus.visible = true; - } else { - twitterUser.selected = false; - twitterStatus.opacity = 0; - } - } - - onDoubleClicked : { - twitterStatus.opacity = 0; - twitterUser.selected = false; - twitterUser.hasFocus = true; - twitterUser.canvas.twitterName = twitterUser.name; - twitterUser.canvas.twitterId = twitterUser.twitterId; - twitterUser.canvas.loading = true; - twitterUser.createFriends(); - } - } - - function show(ctx, layoutChanged) { - var w = canvas.width; - var h = canvas.height; - if (twitterUser.hasFocus) { - twitterUser.width = 60 - twitterUser.height = 60 - twitterUser.posX = w/2; - twitterUser.posY = h/2; - } else { - twitterUser.width = 40 - twitterUser.height = 40 - } - - - if (twitterUser.hasFocus) { - if (layoutChanged) - twitterUser.layoutFriends(); - twitterUser.linkFriends(ctx); - twitterUser.showFriends(ctx); - ctx.shadowOffsetX = 5; - ctx.shadowOffsetY = 5; - ctx.shadowBlur = 7; - ctx.shadowColor = "blue"; - ctx.globalAlpha = 1; - } else { - ctx.shadowOffsetX = 5; - ctx.shadowOffsetY = 5; - ctx.shadowBlur = 7; - ctx.shadowColor = twitterUser.linkColor; - ctx.globalAlpha = 0.6; - } - - if (twitterUser.canvas.isImageLoaded(twitterUser.image)) { - ctx.drawImage(twitterUser.image, twitterUser.posX, twitterUser.posY, twitterUser.width, twitterUser.height); - } -// ctx.font = "15px"; -// var nameSize = ctx.measureText(twitterUser.name).width; -// ctx.fillText(twitterUser.name, twitterUser.posX + nameSize/2 - twitterUser.width/2, twitterUser.posY + twitterUser.height/2 + 10); - } - function dump() { - console.log("name:" + twitterUser.name - + " x:" + twitterUser.posX - + " y:" + twitterUser.posY - + " width:" + twitterUser.width - + " height:" + twitterUser.height - + " id:" + twitterUser.twitterId - + " image:" + twitterUser.image - + " url:" + twitterUser.url + "\n" + twitterUser.desc); - } - - function layoutFriends() { - var w = canvas.width; - var h = canvas.height; - for (var i=0; i < twitterUser.friends.length; i++) { - var friend = manager.getById(twitterUser.friends[i]); - if (friend) { - friend.x = Math.random() *w; - friend.y = Math.random() *h; - } - } - } - - function showFriends(ctx) { - var w = canvas.width; - var h = canvas.height; - for (var i=0; i < twitterUser.friends.length && i < 15; i++) { - var friend = manager.getById(twitterUser.friends[i]); - if (friend && twitterUser.canvas.isImageLoaded(friend.image)) { - friend.hasFocus = false; - friend.show(ctx, false); - } - } - } - - function linkFriends(ctx) { - var w = canvas.width; - var h = canvas.height; - for (var i=0; i < twitterUser.friends.length && i < 15; i++) { - var friend = manager.getById(twitterUser.friends[i]); - if (friend && twitterUser.canvas.isImageLoaded(friend.image)) { - if (!friend.linkColor) - friend.linkColor = Qt.rgba( ((Math.random() * 200) +55)/255 - , ((Math.random() * 200) +55)/255 - , ((Math.random() * 200) +55)/255, 0.8); - ctx.strokeStyle = friend.linkColor; - ctx.lineWidth = 8; - ctx.beginPath(); - ctx.moveTo(twitterUser.posX + twitterUser.width/2, twitterUser.posY + twitterUser.height/2); - ctx.lineTo(friend.x + friend.width/2, friend.y + friend.height/2); - ctx.stroke(); - } - } - } - - - function create(url) { - var x = new XMLHttpRequest; - x.open("GET", url); - - x.onreadystatechange = function() { - if (x.readyState == XMLHttpRequest.DONE) { - var user = eval('(' + x.responseText +')')[0]; - twitterUser.name = user.name; - twitterUser.twitterId = user.id; - twitterUser.image = user.profile_image_url; - twitterUser.canvas.loadImage(twitterUser.image); - twitterUser.url = user.url; - twitterUser.desc = user.description; - twitterUser.createFriends(); - } - } - x.send(); - } - - function createByName(name) { - if (twitterUser.name === "" && twitterUser.twitterId === "") { - twitterUser.name = name; - var userUrl = "http://api.twitter.com/1/users/lookup.json?stringify_ids=true&screen_name=" + name; - twitterUser.create(userUrl); - } - } - - function createById(id) { - if (twitterUser.name === "" && twitterUser.twitterId === "") { - twitterUser.twitterId = id; - var userUrl = "http://api.twitter.com/1/users/lookup.json?stringify_ids=true&user_id=" + id; - twitterUser.create(userUrl); - } - } - - function createFriends() { - if (twitterUser.friends.length === 0) { - var x = new XMLHttpRequest; - var friendsUrl = "https://api.twitter.com/1/friends/ids.json?cursor=-1&stringify_ids=true&user_id=" + twitterUser.twitterId; - x.open("GET", friendsUrl); - - x.onreadystatechange = function() { - if (x.readyState == XMLHttpRequest.DONE) { - twitterUser.friends = eval('(' + x.responseText +')').ids; - var doRequest = false; - var userUrl = "http://api.twitter.com/1/users/lookup.json?stringify_ids=true&user_id="; - - for (var i=0; i<twitterUser.friends.length && i < 100; i++) { - var friend = manager.getById(twitterUser.friends[i]); - if (!friend) { - userUrl += "," + twitterUser.friends[i]; - doRequest = true; - } - } - - if (!doRequest) return; - - var xx = new XMLHttpRequest; - xx.open("GET", userUrl); - xx.onreadystatechange = function() { - if (xx.readyState == XMLHttpRequest.DONE) { - var friendUsers = eval('(' + xx.responseText +')'); - for(var i=0; i<friendUsers.length; i++) { - var friend = manager.createTwitterUser(twitterUser.canvas); - friend.name = friendUsers[i].name; - friend.twitterId = friendUsers[i].id; - friend.image = friendUsers[i].profile_image_url ? friendUsers[i].profile_image_url : ""; - friend.url = friendUsers[i].url ? friendUsers[i].url : ""; - friend.desc = friendUsers[i].description ? friendUsers[i].description : ""; - friend.manager = twitterUser.manager; - twitterUser.canvas.loadImage(friend.image); - } - - if (twitterUser.hasFocus && twitterUser.canvas) { - twitterUser.canvas.layoutChanged = true; - twitterUser.canvas.loading = false; - twitterUser.canvas.requestPaint(); - } - } - } - xx.send(); - } - } - x.send(); - } - } -}
\ No newline at end of file diff --git a/examples/qml/canvas/twitterfriends/cache.js b/examples/qml/canvas/twitterfriends/cache.js deleted file mode 100644 index 6c8a1cd71a..0000000000 --- a/examples/qml/canvas/twitterfriends/cache.js +++ /dev/null @@ -1,42 +0,0 @@ -var UserCache = function() { - this._users = []; -} - - -UserCache.prototype.getById = function(id){ - for (var i=0; i < this._users.length; i++){ - var user = this._users[i]; - if (user.twitterId == id) { - return user; - } - } -} -UserCache.prototype.getByName = function(name){ - for (var i=0; i < this._users.length; i++){ - var user = this._users[i]; - if (user.name == name) - return user; - } -} - -UserCache.prototype.add = function(user){ - this._users[this._users.length] = user; -} - - -var cache = new UserCache; - -function getById(id) { - return cache.getById(id); -} - -function getByName(name) { - return cache.getByName(name); -} - -function createTwitterUser(canvas) { - var user = Qt.createQmlObject("import QtQuick 2.0; TwitterUser{}", canvas); - user.canvas = canvas; - cache.add(user); - return user; -} diff --git a/examples/qml/canvas/twitterfriends/twitter.qml b/examples/qml/canvas/twitterfriends/twitter.qml deleted file mode 100644 index 9dc2bcc939..0000000000 --- a/examples/qml/canvas/twitterfriends/twitter.qml +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/ -** -** 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 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 QtQuick 2.0 -import "../contents" -import "cache.js" as TwitterUserCache -Rectangle { - width:360 - height:600 - color:"black" - QtObject { - id:twitterManager - function getById(id) { - return TwitterUserCache.cache.getById(id); - } - - function getByName(name) { - return TwitterUserCache.cache.getByName(name); - } - - function createTwitterUser(canvas) { - return TwitterUserCache.createTwitterUser(canvas); - } - } - Rectangle { - id:inputContainer - width:parent.width-4 - height:40 - anchors.top:parent.top - anchors.topMargin:4 - anchors.horizontalCenter:parent.horizontalCenter - radius:8 - border.color:"steelblue" - Text { - text:inputName.text == "" ? "Enter your twitter name..." : "" - id:inputLabel - anchors.centerIn:parent - font.pointSize:12 - opacity:.5 - color:"steelblue" - } - TextInput { - id:inputName - anchors.centerIn:parent - font.pointSize : 20 - opacity:1 - color:"steelblue" - width:parent.width-6 - height:parent.height-6 - text:"" - autoScroll:true - focus:true - selectByMouse:true - onAccepted : {canvas.twitterName = text; canvas.requestPaint();} - } - } - Canvas { - id:canvas - width:parent.width - anchors.top :inputContainer.bottom - anchors.bottom : parent.bottom - smooth:true - renderTarget:Canvas.Image - renderStrategy: Canvas.Immediate - - property bool layoutChanged:true - property string twitterName:"" - property string twitterId:"" - property bool loading:false - - onLoadingChanged: requestPaint(); - onWidthChanged: { layoutChanged = true; requestPaint();} - onHeightChanged: { layoutChanged = true; requestPaint();} - onTwitterNameChanged: inputName.text = twitterName; - onImageLoaded:requestPaint(); - onPaint: { - var ctx = canvas.getContext('2d'); - ctx.save(); - ctx.fillStyle="black"; - ctx.fillRect(0, 0, canvas.width, canvas.height); - - if (canvas.twitterName != "" || canvas.twitterId != "") { - var user = canvas.twitterId ? TwitterUserCache.getById(canvas.twitterId) : TwitterUserCache.getByName(canvas.twitterName); - if (!user) { - user = TwitterUserCache.createTwitterUser(canvas); - user.hasFocus = true; - user.manager = twitterManager; - user.createByName(canvas.twitterName); - canvas.loading = true; - } - - if (canvas.loading) { - ctx.font = "40px"; - ctx.fillStyle = "steelblue"; - ctx.fillText("Loading...", canvas.width/2 - 80, canvas.height/2); - } else { - user.show(ctx, layoutChanged); - } - layoutChanged = false; - } - ctx.restore(); - } - } -} |