From a0241ded1352b4e91828a57327dbb97b8f355f66 Mon Sep 17 00:00:00 2001 From: Jussi Laitinen Date: Wed, 18 Aug 2010 15:59:12 +0300 Subject: [PATCH] Added ListView::itemClicked to return item selected state. --- src/ui/friendlistview.cpp | 6 +++--- src/ui/friendlistview.h | 2 +- src/ui/listview.cpp | 10 ++++++++-- src/ui/listview.h | 3 +-- src/ui/locationlistview.cpp | 6 +++--- src/ui/locationlistview.h | 2 +- src/ui/routewaypointlistview.cpp | 6 +++--- src/ui/routewaypointlistview.h | 2 +- 8 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/ui/friendlistview.cpp b/src/ui/friendlistview.cpp index a72f5af..c91d172 100644 --- a/src/ui/friendlistview.cpp +++ b/src/ui/friendlistview.cpp @@ -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(item); - if (friendListItem) + if (friendListItem && selected) emit friendItemClicked(friendListItem->coordinates()); } diff --git a/src/ui/friendlistview.h b/src/ui/friendlistview.h index f42d052..3fa7ac3 100644 --- a/src/ui/friendlistview.h +++ b/src/ui/friendlistview.h @@ -51,7 +51,7 @@ public slots: * * @param item ListItem */ - void listItemClicked(ListItem *item); + bool listItemClicked(ListItem *item); /****************************************************************************** * SIGNALS diff --git a/src/ui/listview.cpp b/src/ui/listview.cpp index 88e943a..b1d93fd 100644 --- a/src/ui/listview.cpp +++ b/src/ui/listview.cpp @@ -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 selectedListItems = selectedItems(); if (!selectedListItems.isEmpty()) diff --git a/src/ui/listview.h b/src/ui/listview.h index 6c7b25a..dbbc405 100644 --- a/src/ui/listview.h +++ b/src/ui/listview.h @@ -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 ******************************************************************************/ diff --git a/src/ui/locationlistview.cpp b/src/ui/locationlistview.cpp index 1e98580..5bfe2cd 100644 --- a/src/ui/locationlistview.cpp +++ b/src/ui/locationlistview.cpp @@ -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(item); - if (locationItem) { + if (locationItem && selected) { GeoCoordinate swBound; GeoCoordinate neBound; locationItem->bounds(swBound, neBound); diff --git a/src/ui/locationlistview.h b/src/ui/locationlistview.h index a701ec9..8691cd1 100644 --- a/src/ui/locationlistview.h +++ b/src/ui/locationlistview.h @@ -47,7 +47,7 @@ public slots: * * @param item ListItem */ - void listItemClicked(ListItem *item); + bool listItemClicked(ListItem *item); signals: /** diff --git a/src/ui/routewaypointlistview.cpp b/src/ui/routewaypointlistview.cpp index 9bdfa8e..5a5d1c4 100644 --- a/src/ui/routewaypointlistview.cpp +++ b/src/ui/routewaypointlistview.cpp @@ -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(item); - if (routeWaypointItem) + if (routeWaypointItem && selected) emit routeWaypointItemClicked(routeWaypointItem->coordinates()); } diff --git a/src/ui/routewaypointlistview.h b/src/ui/routewaypointlistview.h index 42fbc34..f7ba508 100644 --- a/src/ui/routewaypointlistview.h +++ b/src/ui/routewaypointlistview.h @@ -51,7 +51,7 @@ public slots: * * @param item ListItem */ - void listItemClicked(ListItem *item); + bool listItemClicked(ListItem *item); /****************************************************************************** * SIGNALS -- 1.7.9.5