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
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].nodeValue;
64 case 'ChangeinPercent':
65 changePercentage = quoteElements[j].childNodes[0].nodeValue;
70 stockQuoteDataModel.append({"symbol":symbol,"stockName":stockName,"lastTradedPrice":lastTradedPrice,"change":change,"changePercentage":changePercentage});
71 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);
76 var queryNode = xmlDoc;
79 var queryAttributes = queryNode.attributes;
80 for (i = 0; i < queryAttributes.length; i++) {
81 if (queryAttributes[i].name == 'created') {
82 screen.lastUpdatedTimeStamp = "Updated: "+DateLib.ISODate.format(queryAttributes[i].value);
83 logUtility.logMessage(screen.lastUpdatedTimeStamp);
91 function reloadQuotes(){
92 var query = getQuery();
94 screen.quoteRefreshStarted();
95 logUtility.logMessage("Reloading Data..");
97 //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';
98 var queryURL = 'http://query.yahooapis.com/v1/public/yql?q=select Symbol,Name,LastTradePriceOnly,Change,ChangeinPercent from yahoo.finance.quotes where symbol in ('+query+')&env=store://datatables.org/alltableswithkeys';
99 logUtility.logMessage(queryURL);
101 var response = new XMLHttpRequest();
102 response.onreadystatechange = function() {
103 if (response.readyState == XMLHttpRequest.DONE) {
104 refreshDataModel(response.responseXML);
105 logUtility.logMessage("Data Reload Completed..");
106 screen.quoteRefreshCompleted();
110 response.open("GET", queryURL);
114 logUtility.logMessage("No stock symbols found in configuration.");
118 function loadSettings(){
120 value = DBUtility.getSetting("UpdateFreqency");
121 if (!value || value == "0.0" || value === ""){
122 autoUpdateInterval = 0;
125 autoUpdateInterval = parseInt(value)*60*1000; //Convert minutes to milliseconds
127 value = DBUtility.getSetting("UpdateWeekdaysOnly");
128 if (!value || value == "0.0" || value === ""){
129 updateWeekDaysOnly = false;
132 updateWeekDaysOnly = true;
135 value = DBUtility.getSetting("UpdateOnSavedNetworksOnly");
136 if (!value || value == "0.0" || value === ""){
137 updateOnSavedNetworksOnly = false;
140 updateOnSavedNetworksOnly = true;
145 function initialize(){
146 if (autoUpdateTimer.running) autoUpdateTimer.stop();
150 if (autoUpdateInterval !== 0) {
151 logUtility.logMessage("Starting Timer..");
152 autoUpdateTimer.start();