Version 0.2
[marketstoday] / src / cpp / main.cpp
1 /*
2 @version: 0.1
3 @author: Sudheer K. <scifi1947 at gmail.com>
4 @license: GNU General Public License
5 */
6
7 #include "qmaemo5homescreenadaptor.h"
8 #include "marketstodayqmlview.h"
9
10 #include <QtGui>
11 #include <QDeclarativeEngine>
12 #include <QDeclarativeContext>
13 #include <QDebug>
14 #include <QNetworkConfigurationManager>
15 #include <QGraphicsObject>
16 #include "logutility.h"
17 #include "connectionutility.h"
18
19 int main(int argc, char *argv[])
20 {
21
22     bool isDesktopWidget = false;
23
24     if (argc > 2 && QString(argv[1]).contains("-plugin-id")) {
25         isDesktopWidget = true;
26     }
27
28     QApplication app(argc, argv);
29
30     QNetworkConfigurationManager manager;
31     ConnectionUtility connectionUtility;
32
33     //Signal to check available networks when auto-update is triggered
34     QObject::connect(&manager,SIGNAL(updateCompleted()),&connectionUtility,SLOT(connectionListUpdated()));
35
36
37     MarketsTodayQMLView qmlView;
38
39 #if defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
40     //For maemo fremantle or harmattan use a common path
41     qmlView.engine()->setOfflineStoragePath("/home/user/.marketstoday/OfflineStorage");
42 #else
43     qmlView.engine()->setOfflineStoragePath("qml/OfflineStorage");
44 #endif
45     qmlView.setResizeMode(QDeclarativeView::SizeRootObjectToView);    
46     qmlView.setWindowTitle("Markets Today");
47     qmlView.setFixedSize(400,325);    
48
49     LogUtility logUtility;
50     logUtility.logMessage(qmlView.engine()->offlineStoragePath());
51
52     if (isDesktopWidget) {
53         QMaemo5HomescreenAdaptor *adaptor = new QMaemo5HomescreenAdaptor(&qmlView);
54         adaptor->setSettingsAvailable(true); //Use the standard widget settings button for home screen widget
55         QObject::connect(adaptor, SIGNAL(settingsRequested()), &qmlView, SLOT(displayConfigWindow()));        
56
57         qmlView.setSource(QUrl("qrc:/qml/MarketsTodayWidget.qml"));
58         qmlView.show();
59     }
60     else{
61         qmlView.setSource(QUrl("qrc:/qml/MarketsTodayApp.qml"));
62         qmlView.showFullScreen();
63     }
64
65     QObject *rootObject = qmlView.rootObject();
66     //Signal to display config window when user clicks config icon
67     //QObject::connect(rootObject, SIGNAL(showConfigInNewWindow()), &qmlView, SLOT(displayConfigWindow()));
68     //Signal to reload configuration and update quotes after config window is clicked
69     QObject::connect(&qmlView, SIGNAL(initializeWidget()), rootObject, SLOT(initialize()));
70
71     QObject::connect(rootObject, SIGNAL(checkNetworkStatus()), &connectionUtility, SLOT(checkConnectionStatus()));
72     QObject::connect(&connectionUtility, SIGNAL(connectionsAvailable()), rootObject, SLOT(reloadQuotes()));
73     QObject::connect((QObject*)qmlView.engine(), SIGNAL(quit()), &app, SLOT(quit()));
74
75     app.exec();
76 }