3 @author: Sudheer K. <scifi1947 at gmail.com>
4 @license: GNU General Public License
9 var symbolsArray = DBUtility.getAllSymbols();
10 if (symbolsArray && symbolsArray.length > 0){
12 for (i = 0; i< symbolsArray.length; i++) {
13 logUtility.logMessage("Appending "+symbolsArray[i]+ " to Query");
16 query = '"'+symbolsArray[i]+'"';
19 query = query + ',"' + symbolsArray[i]+'"';
27 function refreshDataModel(responseXML){
28 if (!(responseXML && stockQuoteDataModel)) return;
30 var xmlDoc = responseXML.documentElement;
31 var results = xmlDoc.firstChild;
33 //Not the best code I ever wrote, but got no choice
34 //Refer to Memory leak issue with XMLListModel --> http://bugreports.qt.nokia.com/browse/QTBUG-15191
37 var quoteNodes = results.childNodes;
39 logUtility.logMessage("Clearing Data Model");
40 stockQuoteDataModel.clear();
43 for (i = 0; i < quoteNodes.length; i++) {
45 var quoteElements = quoteNodes[i].childNodes;
47 var symbol,stockName,lastTradedPrice,change,changePercentage,volume,marketCap
49 for (j = 0; j < quoteElements.length; j++){
51 switch (quoteElements[j].nodeName){
53 symbol = quoteElements[j].childNodes[0].nodeValue;
56 stockName = quoteElements[j].childNodes[0].nodeValue;
58 case 'LastTradePriceOnly':
59 lastTradedPrice = quoteElements[j].childNodes[0].nodeValue;
62 change = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
64 case 'ChangeinPercent':
65 changePercentage = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
68 volume = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
70 case 'MarketCapitalization':
71 marketCap = (quoteElements[j].childNodes[0])? quoteElements[j].childNodes[0].nodeValue:"";
76 stockQuoteDataModel.append({"symbol":symbol,"stockName":stockName,"lastTradedPrice":lastTradedPrice,"change":change,"changePercentage":changePercentage,"volume":volume,"marketCap":marketCap});
77 //logUtility.logMessage("Symbol: "+stockQuoteDataModel.get(i).symbol+", Name: "+ stockQuoteDataModel.get(i).stockName+", LastTraded: "+stockQuoteDataModel.get(i).lastTradedPrice+", Change: "+stockQuoteDataModel.get(i).change+", ChangePercent: "+stockQuoteDataModel.get(i).changePercentage+", Volume: "+stockQuoteDataModel.get(i).volume+", MarketCap: "+stockQuoteDataModel.get(i).marketCap);
78 logUtility.logMessage(stockQuoteDataModel.get(i).symbol+", "+stockQuoteDataModel.get(i).lastTradedPrice+", "+stockQuoteDataModel.get(i).change+", "+stockQuoteDataModel.get(i).changePercentage+", "+stockQuoteDataModel.get(i).volume+", "+stockQuoteDataModel.get(i).marketCap);
83 var queryNode = xmlDoc;
86 var queryAttributes = queryNode.attributes;
87 for (i = 0; i < queryAttributes.length; i++) {
88 if (queryAttributes[i].name == 'created') {
89 screen.lastUpdatedTimeStamp = "Updated: "+DateLib.ISODate.format(queryAttributes[i].value);
90 logUtility.logMessage(screen.lastUpdatedTimeStamp);
97 function refreshNewsModel(responseXML){
98 if (!(responseXML && newsDataModel)) return;
100 var xmlDoc = responseXML.documentElement;
101 var channel = xmlDoc.firstChild;
103 //Not the best code I ever wrote, but got no choice
104 //Refer to Memory leak issue with XMLListModel --> http://bugreports.qt.nokia.com/browse/QTBUG-15191
107 var itemNodes = channel.childNodes;
110 logUtility.logMessage("Clearing News Model");
111 newsDataModel.clear();
114 for (i = 0; i < itemNodes.length; i++) {
116 if (itemNodes[i].nodeName === 'item'){
117 var newsElements = itemNodes[i].childNodes;
119 var newsTitle,newsLink
120 for (j = 0; j < newsElements.length; j++){
122 switch (newsElements[j].nodeName){
124 newsTitle = newsElements[j].childNodes[0].nodeValue;
127 newsLink = newsElements[j].childNodes[0].nodeValue;
132 newsDataModel.append({"title":newsTitle,"link":newsLink});
133 //logUtility.logMessage("Title: "+newsDataModel.get(i).title+", Link: "+ newsDataModel.get(i).link);
134 //logUtility.logMessage("Title: "+newsTitle+", Link: "+ newsLink);
141 function reloadQuotes(){
142 var query = getQuery();
144 screen.quoteRefreshStarted();
145 logUtility.logMessage("Reloading Data..");
147 //var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol in ("INDU","^IXIC","^GSPC","CLJ11.NYM","YHOO","AAPL","GOOG","MSFT")&env=store://datatables.org/alltableswithkeys';
148 var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select Symbol,Name,LastTradePriceOnly,Change,ChangeinPercent,Volume,MarketCapitalization from yahoo.finance.quotes where symbol in ('+query+')&env=store://datatables.org/alltableswithkeys';
149 logUtility.logMessage(queryURL);
151 var response = new XMLHttpRequest();
152 response.onreadystatechange = function() {
153 if (response.readyState == XMLHttpRequest.DONE) {
154 refreshDataModel(response.responseXML);
155 logUtility.logMessage("Data Reload Completed..");
156 screen.quoteRefreshCompleted();
160 response.open("GET", queryURL);
164 logUtility.logMessage("No stock symbols found in configuration.");
168 function reloadNews(){
169 if (!rssURL || rssURL == "Unknown") {
170 logUtility.logMessage("Invalid RSS URL: "+rssURL);
173 logUtility.logMessage("Reloading news from "+rssURL);
174 //var queryURL = "http://finance.yahoo.com/rss/topstories";
175 logUtility.logMessage(rssURL);
176 var response = new XMLHttpRequest();
177 response.onreadystatechange = function() {
178 if (response.readyState == XMLHttpRequest.DONE) {
179 refreshNewsModel(response.responseXML);
180 logUtility.logMessage("News Reload Completed..");
184 response.open("GET", rssURL);
190 function loadSettings(){
192 value = DBUtility.getSetting("UpdateFreqency");
193 if (!value || value == "0.0" || value === "" || isNaN(value)){
194 autoUpdateInterval = 0;
197 autoUpdateInterval = parseInt(value)*60*1000; //Convert minutes to milliseconds
199 value = DBUtility.getSetting("UpdateWeekdaysOnly");
200 if (!value || value == "0.0" || value === ""){
201 updateWeekDaysOnly = false;
204 updateWeekDaysOnly = true;
208 value = DBUtility.getSetting("UpdateOnSavedNetworksOnly");
209 if (!value || value == "0.0" || value === ""){
210 updateOnSavedNetworksOnly = false;
213 updateOnSavedNetworksOnly = true;
217 value = DBUtility.getSetting("RSSURL");
218 if (!value || value == "Unknown" || value === ""){
226 function initialize(){
227 if (autoUpdateTimer.running) autoUpdateTimer.stop();
232 if (autoUpdateInterval !== 0) {
233 logUtility.logMessage("Starting Timer..");
234 autoUpdateTimer.start();