Added RouteWaypointList- and RouteWaypointListView classes.
[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 class Route;
32 class RouteWaypointListView;
33
34 /**
35  * @brief Class for sliding routing panel
36  *
37  * @author Jussi Laitinen - jussi.laitinen (at) ixonos.com
38  */
39 class RoutingPanel : public QWidget
40 {
41     Q_OBJECT
42
43 public:
44     /**
45      * @brief Default constructor
46      *
47      * @param parent
48      */
49     RoutingPanel(QWidget *parent = 0);
50
51 /*******************************************************************************
52  * MEMBER FUNCTIONS AND SLOTS
53  ******************************************************************************/
54 private slots:
55     /**
56     * @brief Populates location list view.
57     *
58     * @param locations list of Location objects
59     */
60     void populateLocationListView(const QList<Location> &locations);
61
62     /**
63     * @brief Routes to selected location.
64     *
65     * Emits routeToLocation if location is selected from list.
66     */
67     void routeToSelectedLocation();
68
69     /**
70     * @brief Sets route to the panel.
71     *
72     * Appends route waypoint list with route segments.
73     * @param route Route item containing parsed route details
74     */
75     void setRoute(Route &route);
76
77 /*******************************************************************************
78  * SIGNALS
79  ******************************************************************************/
80 signals:
81     /**
82     * @brief Signal for location item clicked.
83     *
84     * @param swBound south-west bound GeoCoordinate
85     * @param neBound north-east bound GeoCoordinate
86     */
87     void locationItemClicked(const GeoCoordinate &swBound, const GeoCoordinate &neBound);
88
89     /**
90     * @brief Signal for routing to location.
91     *
92     * @param coordinates location's geo coordinates
93     */
94     void routeToLocation(const GeoCoordinate &coordinates);
95
96     void routeWaypointItemClicked(const GeoCoordinate &coordinate);
97
98 /*******************************************************************************
99  * DATA MEMBERS
100  ******************************************************************************/
101 private:
102     QLabel *m_locationListLabel;            ///< Location list label
103
104     QPushButton *m_routeButton;             ///< Route to location button
105
106     QWidget *m_locationListHeaderWidget;    ///< Location list header widget
107
108     LocationListView *m_locationListView;   ///< Location list view
109     RouteWaypointListView *m_routeWaypointListView; ///< Route waypoint list view
110 };
111
112 #endif // ROUTINGPANEL_H