Added routing feature to friend and location list.
[situare] / src / ui / routingpanel.h
1 /*
2     Situare - A location system for Facebook
3     Copyright (C) 2010  Ixonos Plc. Authors:
4
5         Jussi Laitinen - jussi.laitinen@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 #ifndef ROUTINGPANEL_H
23 #define ROUTINGPANEL_H
24
25 #include <QtGui>
26
27 class ExtendedListItemDelegate;
28 class GeoCoordinate;
29 class LocationListView;
30 class Location;
31
32 /**
33  * @brief Class for sliding routing panel
34  *
35  * @author Jussi Laitinen - jussi.laitinen (at) ixonos.com
36  */
37 class RoutingPanel : public QWidget
38 {
39     Q_OBJECT
40
41 public:
42     /**
43      * @brief Default constructor
44      *
45      * @param parent
46      */
47     RoutingPanel(QWidget *parent = 0);
48
49 /*******************************************************************************
50  * MEMBER FUNCTIONS AND SLOTS
51  ******************************************************************************/
52 private slots:
53     /**
54     * @brief Populates location list view.
55     *
56     * @param locations list of Location objects
57     */
58     void populateLocationListView(const QList<Location> &locations);
59
60     /**
61     * @brief Routes to selected location.
62     *
63     * Emits routeToLocation if location is selected from list.
64     */
65     void routeToSelectedLocation();
66
67 /*******************************************************************************
68  * SIGNALS
69  ******************************************************************************/
70 signals:
71     /**
72     * @brief Signal for location item clicked.
73     *
74     * @param swBound south-west bound GeoCoordinate
75     * @param neBound north-east bound GeoCoordinate
76     */
77     void locationItemClicked(const GeoCoordinate &swBound, const GeoCoordinate &neBound);
78
79     /**
80     * @brief Signal for routing to location.
81     *
82     * @param coordinates location's geo coordinates
83     */
84     void routeToLocation(const GeoCoordinate &coordinates);
85
86 /*******************************************************************************
87  * DATA MEMBERS
88  ******************************************************************************/
89 private:
90     QLabel *m_locationListLabel;            ///< Location list label
91
92     QPushButton *m_routeButton;             ///< Route to location button
93
94     QWidget *m_locationListHeaderWidget;    ///< Location list header widget
95
96     LocationListView *m_locationListView;   ///< Location list view
97 };
98
99 #endif // ROUTINGPANEL_H