Added return values to ListItem::itemClicked and added routing panel
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Thu, 19 Aug 2010 07:24:28 +0000 (10:24 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Thu, 19 Aug 2010 07:24:28 +0000 (10:24 +0300)
route button disabling.

13 files changed:
src/ui/extendedlistitem.cpp
src/ui/friendlistpanel.cpp
src/ui/friendlistview.cpp
src/ui/friendlistview.h
src/ui/listview.cpp
src/ui/listview.h
src/ui/locationlistview.cpp
src/ui/locationlistview.h
src/ui/mainwindow.cpp
src/ui/routewaypointlistview.cpp
src/ui/routewaypointlistview.h
src/ui/routingpanel.cpp
src/ui/routingpanel.h

index 7e0b859..e215a74 100644 (file)
@@ -130,7 +130,7 @@ bool ExtendedListItem::toggleSelection()
 
 void ExtendedListItem::setSelected(bool selected)
 {
-    qDebug() << __PRETTY_FUNCTION__;
+    qDebug() << __PRETTY_FUNCTION__ << selected;
 
     QListWidgetItem::setSelected(selected);
     m_selected = selected;
index bc9d87c..efa5a0b 100644 (file)
@@ -140,6 +140,9 @@ void FriendListPanel::anyPanelClosed()
     updateKeyboardGrabbing();
 
     clearFiltering();
+
+    m_friendListView->clearItemSelection();
+    setRouteButtonDisabled();
 }
 
 void FriendListPanel::anyPanelOpened()
@@ -225,7 +228,8 @@ void FriendListPanel::hideEvent(QHideEvent *event)
     updateKeyboardGrabbing();
     clearFiltering();
 
-    m_friendListView->clearSelection();
+    m_friendListView->clearItemSelection();
+    setRouteButtonDisabled();
 }
 
 void FriendListPanel::routeToSelectedFriend()
index c91d172..cebff3b 100644 (file)
@@ -39,4 +39,6 @@ bool FriendListView::listItemClicked(ListItem *item)
 
     if (friendListItem && selected)
         emit friendItemClicked(friendListItem->coordinates());
+
+    return selected;
 }
index 3fa7ac3..efcd072 100644 (file)
@@ -50,6 +50,7 @@ public slots:
     * @brief Slot for list item clicked.
     *
     * @param item ListItem
+    * @return true if item was selected, false otherwise
     */
     bool listItemClicked(ListItem *item);
 
index b1d93fd..bf01d5c 100644 (file)
@@ -56,6 +56,14 @@ void ListView::addListItemToView(ListItem *item)
     addItem(item);
 }
 
+void ListView::clearItemSelection()
+{
+    clearSelection();
+
+    if (m_previousItem)
+        m_previousItem->setSelected(false);
+}
+
 void ListView::clearList()
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -90,9 +98,6 @@ void ListView::clearFilter()
 
     m_filteredItemIDs.clear();
 
-    if (m_previousItem)
-        m_previousItem->setSelected(false);
-
     foreach (ListItem *item, m_listItems)
         setItemHidden(item, false);
 }
@@ -155,21 +160,17 @@ bool ListView::listItemClicked(ListItem *item)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    bool selected = false;
-
     if (m_previousItem == item) {
-        selected = item->toggleSelection();
-
+        item->toggleSelection();
     } else {
         if (m_previousItem)
             m_previousItem->setSelected(false);
 
         item->setSelected(true);
-        selected = true;
     }
     m_previousItem = item;
 
-    return selected;
+    return item->isSelected();
 }
 
 void ListView::listItemClicked(QListWidgetItem *item)
index dbbc405..dc04d2f 100644 (file)
@@ -89,6 +89,8 @@ public:
     */
     void clearFilter();
 
+    void clearItemSelection();
+
     /**
     * @brief Clears list.
     *
@@ -167,6 +169,7 @@ protected slots:
     * @brief Slot for list item clicked.
     *
     * Toggles items selection state and emits listItemClicked signal.
+    * @return true if item was selected, false otherwise
     */
     virtual bool listItemClicked(ListItem *item);
 
@@ -174,7 +177,7 @@ private slots:
     /**
     * @brief Slot for list item clicked.
     *
-    * Toggles items selection state and emits listItemClicked signal.
+    * Calls listItemClicked(ListItem *item)
     */
     void listItemClicked(QListWidgetItem *item);
 
index 5bfe2cd..50a429a 100644 (file)
@@ -43,4 +43,6 @@ bool LocationListView::listItemClicked(ListItem *item)
         locationItem->bounds(swBound, neBound);
         emit locationItemClicked(swBound, neBound);
     }
+
+    return selected;
 }
index 8691cd1..4bd6770 100644 (file)
@@ -46,6 +46,7 @@ public slots:
     * @brief Slot for list item clicked.
     *
     * @param item ListItem
+    * @return true if item was selected, false otherwise
     */
     bool listItemClicked(ListItem *item);
 
index dbd1e64..a224ddd 100644 (file)
@@ -342,6 +342,9 @@ void MainWindow::buildPanels()
 
     connect(m_tabbedPanel, SIGNAL(panelOpened()),
             m_friendsListPanel, SLOT(anyPanelOpened()));
+
+    connect(m_tabbedPanel, SIGNAL(panelClosed()),
+            m_routingPanel, SLOT(anyPanelClosed()));
 }
 
 void MainWindow::buildRoutingPanel()
index 5a5d1c4..c18577d 100644 (file)
@@ -20,4 +20,6 @@ bool RouteWaypointListView::listItemClicked(ListItem *item)
 
     if (routeWaypointItem && selected)
         emit routeWaypointItemClicked(routeWaypointItem->coordinates());
+
+    return selected;
 }
index f7ba508..90cfafb 100644 (file)
@@ -50,6 +50,7 @@ public slots:
     * @brief Slot for list item clicked.
     *
     * @param item ListItem
+    * @return true if item was selected, false otherwise
     */
     bool listItemClicked(ListItem *item);
 
index 7607972..d94370f 100644 (file)
@@ -21,15 +21,17 @@ RoutingPanel::RoutingPanel(QWidget *parent)
     setLayout(routingLayout);
 
     QHBoxLayout *headerLayout = new QHBoxLayout();
-    headerLayout->setContentsMargins(PANEL_MARGIN_LEFT, 0,
-                                     PANEL_MARGIN_RIGHT, 0);
+    headerLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
+                                     PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
 
     QVBoxLayout *listViewLayout = new QVBoxLayout;
-    listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, 0, PANEL_MARGIN_RIGHT, 0);
+    listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
+                                       PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
 
     m_searchLocationButton = new QPushButton(tr("Search location"));
 
     m_routeButton = new QPushButton(tr("Route to location"));
+    m_routeButton->setDisabled(true);
     m_routeButton->hide();
 
     m_locationListHeaderWidget = new QWidget();
@@ -68,24 +70,35 @@ RoutingPanel::RoutingPanel(QWidget *parent)
     connect(m_locationListView, SIGNAL(clicked(QModelIndex)),
             this, SLOT(setRouteButtonDisabled()));
 
-    connect(m_routeButton, SIGNAL(clicked()),
-            this, SLOT(routeToSelectedLocation()));
-
     connect(m_routeWaypointListView, SIGNAL(routeWaypointItemClicked(GeoCoordinate)),
             this, SIGNAL(routeWaypointItemClicked(GeoCoordinate)));
 
+    connect(m_routeButton, SIGNAL(clicked()),
+            this, SLOT(routeToSelectedLocation()));
+
     connect(m_searchLocationButton, SIGNAL(clicked()),
             this, SIGNAL(requestSearchLocation()));
 }
 
+void RoutingPanel::anyPanelClosed()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    m_locationListView->clearItemSelection();
+    m_routeWaypointListView->clearItemSelection();
+
+    setRouteButtonDisabled();
+}
+
 void RoutingPanel::hideEvent(QHideEvent *event)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    Q_UNUSED(event);
+    QWidget::hideEvent(event);
 
-    m_locationListView->clearSelection();
-    m_routeWaypointListView->clearSelection();
+    m_locationListView->clearItemSelection();
+    m_routeWaypointListView->clearItemSelection();
+    setRouteButtonDisabled();
 }
 
 void RoutingPanel::populateLocationListView(const QList<Location> &locations)
index 73bd829..6167168 100644 (file)
@@ -66,6 +66,13 @@ protected:
  ******************************************************************************/
 private slots:
     /**
+    * @brief Called when any of the panel tabs is closed
+    *
+    * Does call setRouteButtonDisabled().
+    */
+    void anyPanelClosed();
+
+    /**
     * @brief Populates location list view.
     *
     * @param locations list of Location objects