90a4b8fc53be29fef2bba172518c6b131c77f87f
[marketstoday] / src / cpp / marketstodayqmlview.cpp
1 /*
2 @version: 0.4
3 @author: Sudheer K. <scifi1947 at gmail.com>
4 @license: GNU General Public License
5 */
6
7 #include "marketstodayqmlview.h"
8 #include "configqmlview.h"
9 #include "sharedcontext.h"
10 #include <QDeclarativeEngine>
11 #include <QDeclarativeContext>
12 #include <QDeclarativeProperty>
13 #include <QGraphicsObject>
14 #include "logutility.h"
15 #include <QDebug>
16 #include <QDir>
17
18 MarketsTodayQMLView::MarketsTodayQMLView(QWidget *parent) : QDeclarativeView(parent), logUtility(new LogUtility(this))
19 {            
20     // Setup QDeclarativeView
21     //setAttribute(Qt::WA_OpaquePaintEvent);
22     //setAttribute(Qt::WA_TranslucentBackground);
23     setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
24     setAlignment(Qt::AlignCenter);
25     this->rootContext()->setContextProperty("logUtility",logUtility);
26 }
27
28 QSize MarketsTodayQMLView::sizeHint() const
29 {
30     return QSize(400, 365);
31 }
32
33 void MarketsTodayQMLView::displayConfigWindow() {
34
35     ConfigQMLView *configView = new ConfigQMLView(this->parentWidget(),this);
36
37 #if defined(Q_WS_MAEMO_5) | defined(Q_WS_MAEMO_6)
38     //For maemo use a common path
39     configView->engine()->setOfflineStoragePath("/home/user/.marketstoday/OfflineStorage");
40 #else
41     configView->engine()->setOfflineStoragePath("qml/OfflineStorage");
42 #endif
43     configView->setResizeMode(QDeclarativeView::SizeRootObjectToView);
44     configView->setSource(QUrl("qrc:/qml/Config.qml"));
45     configView->setWindowTitle("Configuration");
46     QObject::connect((QObject*)configView->engine(), SIGNAL(quit()), configView, SLOT(configClosed()));
47     configView->showFullScreen();
48 }
49
50 void MarketsTodayQMLView::displayStockDetails(QString symbol){
51
52     QDeclarativeView *detailsView = new QDeclarativeView(this->parentWidget());
53     SharedContext *sharedContextObj = new SharedContext(detailsView);
54     sharedContextObj->setComponentToDisplay("StockQuoteDetails");
55     sharedContextObj->setStockSymbol(symbol);
56
57     QString strPath;
58 #if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
59     //For maemo fremantle or harmattan use a common path
60     strPath = QDir().homePath() + "/.marketstoday/OfflineStorage";
61     detailsView->engine()->setOfflineStoragePath(strPath);
62 #else
63     detailsView->engine()->setOfflineStoragePath("qml/OfflineStorage");
64 #endif
65
66     detailsView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
67     detailsView->setAlignment(Qt::AlignCenter);
68     detailsView->setResizeMode(QDeclarativeView::SizeRootObjectToView);
69     detailsView->rootContext()->setContextProperty("sharedContext",sharedContextObj);
70     detailsView->rootContext()->setContextProperty("logUtility",logUtility);
71     //This code is only used for widget in Fremantle, so use Legacy QML without components
72     detailsView->setSource(QUrl("qrc:/qml/MarketsTodayLegacyApp.qml"));
73     detailsView->setWindowTitle("Markets Today");
74     QObject::connect((QObject*)detailsView->engine(), SIGNAL(quit()), detailsView, SLOT(close()));
75     detailsView->setFixedSize(800,480);
76     detailsView->showFullScreen();
77
78     logUtility->logMessage("Stock Details window displayed");
79 }
80
81 void MarketsTodayQMLView::initialize(){
82     emit initializeWidget();
83 }
84
85 MarketsTodayQMLView::~MarketsTodayQMLView(){
86     qDebug() << "In destructor for MarketsTodayQMLView object";
87 }
88