Changed routing panel to use PanelBase as a base class, removed old search location...
[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 #include "panelbase.h"
28
29 class ExtendedListItemDelegate;
30 class GeoCoordinate;
31 class LocationListView;
32 class Location;
33 class Route;
34 class RouteWaypointListView;
35
36 /**
37  * @brief Class for sliding routing panel
38  *
39  * @author Jussi Laitinen - jussi.laitinen (at) ixonos.com
40  */
41 class RoutingPanel : public PanelBase
42 {
43     Q_OBJECT
44
45 public:
46     /**
47      * @brief Default constructor
48      *
49      * @param parent
50      */
51     RoutingPanel(QWidget *parent = 0);
52
53 /*******************************************************************************
54  * MEMBER FUNCTIONS AND SLOTS
55  ******************************************************************************/
56 private slots:
57     /**
58     * @brief Populates location list view.
59     *
60     * @param locations list of Location objects
61     */
62     void populateLocationListView(const QList<Location> &locations);
63
64     /**
65     * @brief Routes to selected location.
66     *
67     * Emits routeToLocation if location is selected from list.
68     */
69     void routeToSelectedLocation();
70
71     /**
72     * @brief Sets route to the panel.
73     *
74     * Appends route waypoint list with route segments.
75     * @param route Route item containing parsed route details
76     */
77     void setRoute(Route &route);
78
79 /*******************************************************************************
80  * SIGNALS
81  ******************************************************************************/
82 signals:
83     /**
84     * @brief Signal for location item clicked.
85     *
86     * @param swBound south-west bound GeoCoordinate
87     * @param neBound north-east bound GeoCoordinate
88     */
89     void locationItemClicked(const GeoCoordinate &swBound, const GeoCoordinate &neBound);
90
91     /**
92     * @brief Signal for requesting searching location.
93     */
94     void requestSearchLocation();
95
96     /**
97     * @brief Signal for routing to location.
98     *
99     * @param coordinates location's geo coordinates
100     */
101     void routeToLocation(const GeoCoordinate &coordinates);
102
103     /**
104     * @brief Signal for route waypoint item clicked.
105     *
106     * @param coordinate waypoint item's coordinate
107     */
108     void routeWaypointItemClicked(const GeoCoordinate &coordinate);
109
110     /**
111      * @brief Signal for requesting a panel to be opened
112      *
113      * @param widget Pointer to the widget that emitted the signal
114      */
115     void showPanelRequested(QWidget *widget);
116
117 /*******************************************************************************
118  * DATA MEMBERS
119  ******************************************************************************/
120 private:
121     QLabel *m_locationListLabel;            ///< Location list label
122
123     QPushButton *m_routeButton;             ///< Route to location button
124     QPushButton *m_searchLocationButton;    ///< Search location button
125
126     QWidget *m_locationListHeaderWidget;    ///< Location list header widget
127
128     LocationListView *m_locationListView;   ///< Location list view
129     RouteWaypointListView *m_routeWaypointListView; ///< Route waypoint list view
130 };
131
132 #endif // ROUTINGPANEL_H