2 Situare - A location system for Facebook
3 Copyright (C) 2010 Ixonos Plc. Authors:
5 Jussi Laitinen - jussi.laitinen@ixonos.com
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.
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.
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,
22 #ifndef ROUTINGPANEL_H
23 #define ROUTINGPANEL_H
27 #include "panelbase.h"
29 class ExtendedListItemDelegate;
33 class LocationListView;
35 class RouteWaypointListView;
38 * @brief Class for sliding routing panel
40 * @author Jussi Laitinen - jussi.laitinen (at) ixonos.com
42 class RoutingPanel : public PanelBase
48 * @brief Default constructor
52 RoutingPanel(QWidget *parent = 0);
54 /*******************************************************************************
55 * BASE CLASS INHERITED AND REIMPLEMENTED MEMBER FUNCTIONS
56 ******************************************************************************/
59 * @brief Re-implemented from QWidget::hideEvent()
61 * Calls clearListsSelections()
65 void hideEvent(QHideEvent *event);
67 /*******************************************************************************
68 * MEMBER FUNCTIONS AND SLOTS
69 ******************************************************************************/
72 * @brief Switch to search results view mode
74 void showResultsView();
77 * @brief Switch to routing instructions view mode
79 void showRoutingView();
83 * @brief Clears lists' selections.
85 * Does call setRouteButtonDisabled().
87 void clearListsSelections();
90 * @brief Populates location list view.
92 * @param locations list of Location objects
94 void populateLocationListView(const QList<Location> &locations);
97 * @brief Handler for route button toggling actions
99 void routeButtonToggled(bool checked);
102 * @brief Routes to selected location.
104 * Emits routeToLocation if location is selected from list.
106 void routeToSelectedLocation();
109 * @brief Handler for search button toggling actions
111 void searchLocationButtonToggled(bool checked);
114 * @brief Sets route to the panel.
116 * Appends route waypoint list with route segments.
117 * @param route Route item containing parsed route details
119 void setRoute(Route &route);
122 * @brief Sets route button disabled.
124 * Disabled if there isn't any list item selected.
126 void setRouteButtonDisabled();
128 /*******************************************************************************
130 ******************************************************************************/
133 * @brief Emitted when route is cleared
138 * @brief Signal for location item clicked.
140 * @param swBound south-west bound GeoCoordinate
141 * @param neBound north-east bound GeoCoordinate
143 void locationItemClicked(const GeoCoordinate &swBound, const GeoCoordinate &neBound);
146 * @brief Signal for requesting searching location.
148 void requestSearchLocation();
151 * @brief Signal for routing to location.
153 * @param coordinates location's geo coordinates
155 void routeToLocation(const GeoCoordinate &coordinates);
158 * @brief Signal for route waypoint item clicked.
160 * @param coordinate waypoint item's coordinate
162 void routeWaypointItemClicked(const GeoCoordinate &coordinate);
165 * @brief Signal for requesting a panel to be opened
167 * @param widget Pointer to the widget that emitted the signal
169 void showPanelRequested(QWidget *widget);
171 /*******************************************************************************
173 ******************************************************************************/
175 QLabel *m_resultsLabel; ///< Location list label
177 QStackedLayout *m_views; ///< Views
179 QWidget *m_resultsView; ///< Search results view widget
180 QWidget *m_routingView; ///< Routing instructions view widget
182 ImageButton *m_routeButton; ///< Route to location button
183 ImageButton *m_searchLocationButton; ///< Search location button
184 LocationListView *m_locationListView; ///< Search results list view
185 RouteWaypointListView *m_routeWaypointListView; ///< Route instructions list view
188 #endif // ROUTINGPANEL_H