Added ListView::itemClicked to return item selected state. list_selection_bug
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 18 Aug 2010 12:59:12 +0000 (15:59 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 18 Aug 2010 12:59:12 +0000 (15:59 +0300)
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/routewaypointlistview.cpp
src/ui/routewaypointlistview.h

index a72f5af..c91d172 100644 (file)
@@ -29,14 +29,14 @@ FriendListView::FriendListView(QWidget *parent)
     qDebug() << __PRETTY_FUNCTION__;
 }
 
-void FriendListView::listItemClicked(ListItem *item)
+bool FriendListView::listItemClicked(ListItem *item)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ListView::listItemClicked(item);
+    bool selected = ListView::listItemClicked(item);
 
     FriendListItem *friendListItem = dynamic_cast<FriendListItem*>(item);
 
-    if (friendListItem)
+    if (friendListItem && selected)
         emit friendItemClicked(friendListItem->coordinates());
 }
index f42d052..3fa7ac3 100644 (file)
@@ -51,7 +51,7 @@ public slots:
     *
     * @param item ListItem
     */
-    void listItemClicked(ListItem *item);
+    bool listItemClicked(ListItem *item);
 
 /******************************************************************************
 * SIGNALS
index 88e943a..b1d93fd 100644 (file)
@@ -151,20 +151,25 @@ ListItem *ListView::takeListItemFromView(const QString &itemID)
     return item;
 }
 
-void ListView::listItemClicked(ListItem *item)
+bool ListView::listItemClicked(ListItem *item)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
+    bool selected = false;
+
     if (m_previousItem == item) {
-        item->toggleSelection();
+        selected = item->toggleSelection();
 
     } else {
         if (m_previousItem)
             m_previousItem->setSelected(false);
 
         item->setSelected(true);
+        selected = true;
     }
     m_previousItem = item;
+
+    return selected;
 }
 
 void ListView::listItemClicked(QListWidgetItem *item)
@@ -207,6 +212,7 @@ ListItem *ListView::listItemAt(int index)
 ListItem *ListView::selectedItem()
 {
     qDebug() << __PRETTY_FUNCTION__;
+
     QList<QListWidgetItem *> selectedListItems = selectedItems();
 
     if (!selectedListItems.isEmpty())
index 6c7b25a..dbbc405 100644 (file)
@@ -168,7 +168,7 @@ protected slots:
     *
     * Toggles items selection state and emits listItemClicked signal.
     */
-    virtual void listItemClicked(ListItem *item);
+    virtual bool listItemClicked(ListItem *item);
 
 private slots:
     /**
@@ -178,7 +178,6 @@ private slots:
     */
     void listItemClicked(QListWidgetItem *item);
 
-
 /*******************************************************************************
  * DATA MEMBERS
  ******************************************************************************/
index 1e98580..5bfe2cd 100644 (file)
@@ -29,15 +29,15 @@ LocationListView::LocationListView(QWidget *parent)
     qDebug() << __PRETTY_FUNCTION__;
 }
 
-void LocationListView::listItemClicked(ListItem *item)
+bool LocationListView::listItemClicked(ListItem *item)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ListView::listItemClicked(item);
+    bool selected = ListView::listItemClicked(item);
 
     LocationListItem *locationItem = dynamic_cast<LocationListItem*>(item);
 
-    if (locationItem) {
+    if (locationItem && selected) {
         GeoCoordinate swBound;
         GeoCoordinate neBound;
         locationItem->bounds(swBound, neBound);
index a701ec9..8691cd1 100644 (file)
@@ -47,7 +47,7 @@ public slots:
     *
     * @param item ListItem
     */
-    void listItemClicked(ListItem *item);
+    bool listItemClicked(ListItem *item);
 
 signals:
     /**
index 9bdfa8e..5a5d1c4 100644 (file)
@@ -10,14 +10,14 @@ RouteWaypointListView::RouteWaypointListView(QWidget *parent)
     qDebug() << __PRETTY_FUNCTION__;
 }
 
-void RouteWaypointListView::listItemClicked(ListItem *item)
+bool RouteWaypointListView::listItemClicked(ListItem *item)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    ListView::listItemClicked(item);
+    bool selected = ListView::listItemClicked(item);
 
     RouteWaypointListItem *routeWaypointItem = dynamic_cast<RouteWaypointListItem*>(item);
 
-    if (routeWaypointItem)
+    if (routeWaypointItem && selected)
         emit routeWaypointItemClicked(routeWaypointItem->coordinates());
 }
index 42fbc34..f7ba508 100644 (file)
@@ -51,7 +51,7 @@ public slots:
     *
     * @param item ListItem
     */
-    void listItemClicked(ListItem *item);
+    bool listItemClicked(ListItem *item);
 
 /******************************************************************************
 * SIGNALS