/*
-@version: 0.2
+@version: 0.5
@author: Sudheer K. <scifi1947 at gmail.com>
@license: GNU General Public License
*/
import "Library" as Library
import "Library/js/ISODate.js" as DateLib
import "Library/js/DBUtility.js" as DBUtility
+import "Library/js/CSVUtility.js" as CSVUtility
import "Library/js/Common.js" as Common
import "Library/js/CoreLogic.js" as CoreLib
signal showConfigInNewWindow
signal showStockDetails(string strSymbol)
signal quoteRefreshStarted
- signal quoteRefreshCompleted
- signal quoteRefreshFailed(string strMessage)
+ signal quoteRefreshCompleted(bool success, string strMessage)
+ signal newsReloadCompleted(bool success, string strMessage)
signal checkNetworkStatus
property int itemHeight: 50
property int autoUpdateInterval: 300000
property bool updateWeekDaysOnly: false
property bool updateOnSavedNetworksOnly: false
+ property bool isDesktopWidget: false
property string rssURL: "http://finance.yahoo.com/rss/topfinstories"
property string lastUpdatedTimeStamp
- property bool isDesktopWidget
//property string selectedSymbol:"YHOO"
property string selectedSymbol:sharedContext.getStockSymbol()
}
else{
DBUtility.initialize();
- CoreLib.initialize();
uiLoader.sourceComponent = stockQuotesUIComponent;
+ CoreLib.initialize();
}
}
id: wrapper; width: mainPage.componentWidth; height: mainPage.itemHeight
Item {
Rectangle { color: "black"; opacity: index % 2 ? 0.2 : 0.4; height: wrapper.height - 2; width: wrapper.width; y: 1
- Image{
- id: informationIcon
- width: 32
- height: 32
- z: 10
- anchors {right: parent.right; rightMargin: 10; verticalCenter: parent.verticalCenter}
- visible: false
- source: "Library/images/information.png"
- MouseArea{
- anchors.fill: parent;
- onPressed: {
- //console.log("Image clicked");
- mainPage.selectedSymbol = symbol;
- uiLoader.sourceComponent = stockDetailsComponent;
- titleBar.buttonType = "Back";
- titleBar.displayMenu = false;
- toolBar.displayIcons = false;
- }
- }
- }
-
MouseArea {
anchors.fill: parent
- onPressed:{
- informationIcon.visible = true;
- //console.log("Rectangle clicked");
+ onDoubleClicked: {
+ mainPage.selectedSymbol = symbol;
+ uiLoader.sourceComponent = stockDetailsComponent;
+ titleBar.buttonType = "Back";
+ titleBar.displayMenu = false;
+ toolBar.displayIcons = false;
}
}
+
}
Row {
Text { text: stockName; width: parent.width * 30/100; font.pixelSize: 18; font.bold: true; elide: Text.ElideRight; color: "white"; style: Text.Raised; styleColor: "black" }
Text { text: lastTradedPrice; width: parent.width * 15/100; font.pixelSize: 18; horizontalAlignment: Text.AlignLeft; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" }
Text { text: change !== ""? (change + " ("+changePercentage+")"):""; width: parent.width * 25/100; font.pixelSize: 18; horizontalAlignment: Text.AlignLeft; elide: Text.ElideRight
- color: if(change >= 0){"green";} else {"red";}
+ color: change >= 0 ? "#00ff00":"#ff0000";
style: Text.Raised; styleColor: "black" }
Text { text: volume; width: parent.width * 15/100; font.pixelSize: 18; horizontalAlignment: Text.AlignLeft; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" }
Text { text: marketCap; width: parent.width * 15/100; font.pixelSize: 18; horizontalAlignment: Text.AlignLeft; elide: Text.ElideLeft; color: "#cccccc"; style: Text.Raised; styleColor: "black" }
}
MouseArea{
anchors.fill: parent
- onClicked: Qt.openUrlExternally(link);
+ onDoubleClicked: Qt.openUrlExternally(link);
}
}
}
id: listViewWrapper
width: parent.width
anchors.top: parent.top
- anchors.bottom: footerText.top
+ anchors.bottom: footerTextArea.top
color: "#343434"
ListView {
}
}
+ Rectangle {
+ id: stockStatusMsgArea
+ height: 100
+ color: "#343434"
+ anchors {left: parent.left; leftMargin: 15; right: parent.right; rightMargin: 15;
+ verticalCenter: parent.verticalCenter}
+ visible: false
+
+ Text {
+ id: stockStatusText
+ anchors.fill: parent
+ text: "Loading quotes.."
+ horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter
+ width: parent.width; font.pixelSize: 16; elide: Text.ElideNone;
+ color: "#cccccc"
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ style: Text.Raised; styleColor: "black"
+
+ Connections {
+ target: mainPage
+ onQuoteRefreshCompleted: {
+ if (success){
+ stockStatusMsgArea.visible = false;
+ listViewWrapper.visible = true;
+ }
+ else{
+ stockStatusText.text = strMessage;
+ listViewWrapper.visible = false;
+ stockStatusMsgArea.visible = true;
+ }
+ }
+ }
+ }
+ }
+
Rectangle{
- id: footerText
+ id: footerTextArea
width: parent.width
height: 25
color: "#343434"
anchors.bottom: parent.bottom
Text {
- id: timeStamp
+ id: footerMessage
anchors.fill: parent
text: mainPage.lastUpdatedTimeStamp
horizontalAlignment: Text.AlignRight; verticalAlignment: Text.AlignVCenter
width: parent.width; font.pixelSize: 12; elide: Text.ElideRight;
color: "#cccccc"
- style: Text.Raised; styleColor: "black"
+ style: Text.Raised; styleColor: "black"
+ }
- Connections {
- target: mainPage
- onQuoteRefreshCompleted:{
- timeStamp.text = mainPage.lastUpdatedTimeStamp;
+ Timer {
+ id: footerMessageTimer
+ interval: 10000
+ repeat: false
+ onTriggered: {
+ footerMessage.text = mainPage.lastUpdatedTimeStamp;
+ }
+ }
+
+ Connections {
+ target: mainPage
+ onQuoteRefreshCompleted:{
+ if (success){
+ footerMessage.text = "Double-tap on a row to display more details.";
+ footerMessageTimer.start();
+ }
+ else{
+ footerMessage.text = mainPage.lastUpdatedTimeStamp;
}
}
}
id: newsComponent
Item {
Rectangle{
+ id: newsViewArea
width: parent.width
anchors.top: parent.top
anchors.bottom: parent.bottom
snapMode: ListView.SnapToItem
}
}
+
+ Rectangle {
+ id: newsStatusMsgArea
+ height: 100
+ color: "#343434"
+ anchors {left: parent.left; leftMargin: 15; right: parent.right; rightMargin: 15;
+ verticalCenter: parent.verticalCenter}
+ visible: false
+
+ Text {
+ id: newsStatusText
+ anchors.fill: parent
+ text: "Loading news.."
+ horizontalAlignment: Text.AlignHCenter; verticalAlignment: Text.AlignVCenter
+ width: parent.width; font.pixelSize: 16; elide: Text.ElideNone;
+ color: "#cccccc"
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ style: Text.Raised; styleColor: "black"
+
+ Connections {
+ target: mainPage
+ onNewsReloadCompleted: {
+ if (success){
+ newsStatusMsgArea.visible = false;
+ newsViewArea.visible = true;
+ }
+ else{
+ newsStatusText.text = strMessage;
+ newsViewArea.visible = false;
+ newsStatusMsgArea.visible = true;
+ }
+ }
+ }
+ }
+ }
}
}