3793db95ad02df445d47375bdfe727545510e54b
[situare] / src / ui / mapviewscreen.h
1  /*
2     Situare - A location system for Facebook
3     Copyright (C) 2010  Ixonos Plc. Authors:
4
5        Kaj Wallin - kaj.wallin@ixonos.com
6
7     Situare is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     version 2 as published by the Free Software Foundation.
10
11     Situare is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with Situare; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
19     USA.
20  */
21
22
23 #ifndef MAPVIEWTAB_H
24 #define MAPVIEWTAB_H
25
26 #include <QtGui>
27
28 #include "map/mapengine.h"
29 #include "friendlistpanel.h"
30 #include "userpanel.h"
31 #include "zoombuttonpanel.h"
32
33 /**
34 * @brief Map View class. Used to display Map
35 *
36 * @class MapViewScreen mainwindow.h "src/ui/mainwindow.h"
37 */
38 class MapViewScreen : public QWidget
39 {
40     Q_OBJECT
41
42 public:
43     /**
44     * @brief Constructor
45     *
46     * @param parent Parent
47     */
48     MapViewScreen(QWidget *parent = 0);
49
50 /*******************************************************************************
51  * MEMBER FUNCTIONS AND SLOTS
52  ******************************************************************************/
53 private slots:
54
55     /**
56     * @brief Slot for enabling auto centering.
57     *
58     * @param enabled true if map should center to GPS position, false otherwise
59     */
60     void enableAutoCentering(bool enabled);
61
62     /**
63     * @brief Slot for drawing the Open Street Map license text
64     *
65     * @param width Width of the viewport
66     * @param height Height of the viewport
67     */
68     void drawOsmLicense(int width, int height);
69
70     /**
71     * @brief Slot for map location change.
72     */
73     void locationChanged();
74
75     /**
76     * @brief Slot for GPS position.
77     *
78     * @param position latitude and longitude values
79     * @param accuracy coordinate accuracy in metres
80     */
81     void positionReceived(QPointF position, qreal accuracy);
82
83 /*******************************************************************************
84  * SIGNALS
85  ******************************************************************************/
86 signals:
87     /**
88     * @brief Signal when friend list locations are fetched
89     *
90     * Forwarded to map engine and friends list panel
91     *
92     * @param friendsList Friends list data
93     */
94     void friendsLocationsReady(QList<User *> &friendsList);
95
96         /**
97     * @brief Signal for map location change.
98     */
99     void mapLocationChanged();  
100
101     /**
102     * @brief Signal when user location is fetched
103     *
104     * @param user User data
105     */
106     void userLocationReady(User *user);  
107
108     /**
109       * @brief Signal for HW increase button
110       */
111     void zoomInKeyPressed();
112
113     /**
114       * @brief Signal for HW decrease button
115       */
116     void zoomOutKeyPressed();
117
118 /*******************************************************************************
119  * DATA MEMBERS
120  ******************************************************************************/
121 private:
122     MapEngine *m_mapEngine;                 ///< MapEngine
123     UserInfoPanel *m_userPanel;             ///< Instance of the user information panel
124     FriendListPanel *m_friendsListPanel;    ///< Instance of friends list panel
125     ZoomButtonPanel *m_zoomButtonPanel;     ///< Instance of zoom button panel
126     QLabel *m_osmLicense;                   ///< Label for Open Street Map license
127     bool m_autoCenteringEnabled;            ///< Enable
128 };
129
130 #endif // MAPVIEWTAB_H