Commit description:Changed list and map views to pointers for easy
[situare] / src / ui / mainwindow.cpp
1 /*
2    Situare - A location system for Facebook
3    Copyright (C) 2010  Ixonos Plc. Authors:
4
5       Henri Lampela - henri.lampela@ixonos.com
6       Kaj Wallin - kaj.wallin@ixonos.com
7
8    Situare is free software; you can redistribute it and/or
9    modify it under the terms of the GNU General Public License
10    version 2 as published by the Free Software Foundation.
11
12    Situare is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with Situare; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
20    USA.
21 */
22
23 #include <QtGui>
24 #include "mainwindow.h"
25 #include "listviewscreen.h"
26 #include "mapviewscreen.h"
27 #include "facebookservice/facebookauthentication.h"
28 #include "situareservice/situareservice.h"
29 #include "engine/engine.h"
30
31 MainWindow::MainWindow(QWidget *parent)
32     : QMainWindow(parent)
33 {
34     qDebug() << __PRETTY_FUNCTION__;
35
36     createViews();
37     setCentralWidget(m_situareViews);
38     createMenus();
39     setWindowTitle(tr("List view"));
40     this->hide();
41
42     m_situareEngine = new SituareEngine(this);
43     connect(m_situareEngine, SIGNAL(engine_showMainWindow()), this, SLOT(show()));
44     connect(m_situareEngine, SIGNAL(engine_closeMainWindow()), this, SLOT(close()));
45
46 //    connect(m_listViewScreen->m_personalInfo,
47 //            SIGNAL(launchUpdateFriendsStatus()),
48 //            m_situareEngine,
49 //            SLOT(updateFriendsList()));
50
51     m_situareEngine->start();
52 }
53
54 MainWindow::~MainWindow()
55 {
56     qDebug() << __PRETTY_FUNCTION__;
57     delete m_toListViewAct;
58     delete m_toMapViewAct;
59     delete m_situareViews;
60 }
61
62 void MainWindow::createMenus()
63 {
64     qDebug() << __PRETTY_FUNCTION__;
65     m_toListViewAct = new QAction(tr("List"), this);
66     m_toListViewAct->setObjectName(tr("List"));
67     connect(m_toListViewAct, SIGNAL(triggered()), this, SLOT(toListView()));
68     m_toMapViewAct = new QAction(tr("Map"), this);
69     m_toMapViewAct->setObjectName(tr("Map"));
70     connect(m_toMapViewAct, SIGNAL(triggered()), this, SLOT(toMapView()));
71     m_viewMenu = menuBar()->addMenu(tr("View"));
72     m_viewMenu->addAction(m_toListViewAct);
73     m_viewMenu->addAction(m_toMapViewAct);
74     m_viewMenu->setObjectName(tr("View Menu"));
75 }
76
77 void MainWindow::createViews()
78 {
79     qDebug() << __PRETTY_FUNCTION__;
80     m_listViewScreen = new ListViewScreen(this);
81     m_mapViewScreen = new MapViewScreen(this);
82
83     m_situareViews = new QStackedWidget;
84     m_situareViews->addWidget(m_listViewScreen);
85     m_situareViews->addWidget(m_mapViewScreen);
86 }
87
88 void MainWindow::toListView()
89 {
90     qDebug() << __PRETTY_FUNCTION__;
91     switchView(0);
92 }
93
94 void MainWindow::toMapView()
95 {
96     qDebug() << __PRETTY_FUNCTION__;
97     switchView(1);
98 }
99
100 void MainWindow::switchView(int nextIndex)
101 {
102     qDebug() << __PRETTY_FUNCTION__ << ":" << nextIndex;
103     if (nextIndex < 0 || nextIndex > 1) {
104         qDebug() << "Illegal parameter value in MainWindow::switchView";
105         return;
106     }
107     m_situareViews->setCurrentIndex(nextIndex);
108     switch (m_situareViews->currentIndex()) {
109         case 0:
110             setWindowTitle(tr("List view"));
111             break;
112         case 1:
113             setWindowTitle(tr("Map view"));
114             break;
115         default:
116             qDebug() << "Illegal switch value in MainWindow::switchView";
117             break;
118     }
119 }