Added routing feature to friend and location list.
[situare] / src / ui / routingpanel.cpp
index fa7c09c..b3f9926 100644 (file)
@@ -24,6 +24,8 @@ RoutingPanel::RoutingPanel(QWidget *parent)
     QVBoxLayout *listViewLayout = new QVBoxLayout;
     listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, 0, PANEL_MARGIN_RIGHT, 0);
 
+    m_routeButton = new QPushButton("Route to location");
+
     m_locationListHeaderWidget = new QWidget();
     m_locationListHeaderWidget->setLayout(headerLayout);
     m_locationListHeaderWidget->setAutoFillBackground(true);
@@ -41,6 +43,7 @@ RoutingPanel::RoutingPanel(QWidget *parent)
 
     listViewLayout->addWidget(m_locationListView);
 
+    routingLayout->addWidget(m_routeButton);
     routingLayout->addWidget(m_locationListHeaderWidget);
     routingLayout->addLayout(listViewLayout);
 
@@ -48,6 +51,9 @@ RoutingPanel::RoutingPanel(QWidget *parent)
             SIGNAL(locationItemClicked(const GeoCoordinate&, const GeoCoordinate&)),
             this,
             SIGNAL(locationItemClicked(const GeoCoordinate&, const GeoCoordinate&)));
+
+    connect(m_routeButton, SIGNAL(clicked()),
+            this, SLOT(routeToSelectedLocation()));
 }
 
 void RoutingPanel::populateLocationListView(const QList<Location> &locations)
@@ -74,6 +80,17 @@ void RoutingPanel::populateLocationListView(const QList<Location> &locations)
         ListItem *item = m_locationListView->listItemAt(FIRST_LOCATION_ITEM_INDEX);
 
         if (item)
-            m_locationListView->listItemClicked(item);
+            m_locationListView->setSelectedItem(item);
     }
 }
+
+void RoutingPanel::routeToSelectedLocation()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    LocationListItem *item = dynamic_cast<LocationListItem *>
+                             (m_locationListView->selectedItem());
+
+    if (item)
+        emit routeToLocation(item->coordinates());
+}