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,
26 #include "friendlistitem.h"
28 ListView::ListView(QWidget *parent)
29 : QListWidget(parent),
32 qDebug() << __PRETTY_FUNCTION__;
34 setSelectionMode(QAbstractItemView::SingleSelection);
35 setAutoFillBackground(false);
36 viewport()->setAutoFillBackground(false);
38 connect(this, SIGNAL(itemClicked(QListWidgetItem*)),
39 this, SLOT(listItemClicked(QListWidgetItem*)));
42 void ListView::addListItem(const QString &key, ListItem *item)
44 qDebug() << __PRETTY_FUNCTION__;
46 if (!m_listItems.contains(key)) {
48 m_listItems.insert(key, item);
52 void ListView::addListItemToView(ListItem *item)
54 qDebug() << __PRETTY_FUNCTION__;
59 void ListView::clearList()
61 qDebug() << __PRETTY_FUNCTION__;
63 qDeleteAll(m_listItems.begin(), m_listItems.end());
70 void ListView::clearUnused(const QStringList &itemIDs)
72 qDebug() << __PRETTY_FUNCTION__;
74 foreach (QString key, m_listItems.keys()) {
75 if (!itemIDs.contains(key)) {
76 ListItem *item = m_listItems.take(key);
79 if (m_previousItem == item)
87 void ListView::clearFilter()
89 qDebug() << __PRETTY_FUNCTION__;
91 m_filteredItemIDs.clear();
94 m_previousItem->setSelected(false);
96 foreach (ListItem *item, m_listItems)
97 setItemHidden(item, false);
100 bool ListView::contains(const QString &itemID)
102 qDebug() << __PRETTY_FUNCTION__;
104 return m_listItems.contains(itemID);
107 void ListView::filter(const QList<QString> &itemIDs)
109 qDebug() << __PRETTY_FUNCTION__;
111 m_filteredItemIDs = itemIDs;
113 foreach (ListItem *item, m_listItems) {
114 if (itemIDs.contains(m_listItems.key(item)))
115 setItemHidden(item, false);
117 setItemHidden(item, true);
121 void ListView::filter(const QString &pattern)
123 qDebug() << __PRETTY_FUNCTION__;
125 if (m_filteredItemIDs.isEmpty()) {
126 foreach (ListItem *item, m_listItems) {
127 if (item->title().contains(pattern, Qt::CaseInsensitive))
128 setItemHidden(item, false);
130 setItemHidden(item, true);
133 foreach (QString key, m_filteredItemIDs) {
134 ListItem *item = m_listItems.value(key);
136 if (item->title().contains(pattern, Qt::CaseInsensitive))
137 setItemHidden(item, false);
139 setItemHidden(item, true);
145 ListItem *ListView::takeListItemFromView(const QString &itemID)
147 qDebug() << __PRETTY_FUNCTION__;
149 ListItem *item = listItem(itemID);
154 bool ListView::listItemClicked(ListItem *item)
156 qDebug() << __PRETTY_FUNCTION__;
158 bool selected = false;
160 if (m_previousItem == item) {
161 selected = item->toggleSelection();
165 m_previousItem->setSelected(false);
167 item->setSelected(true);
170 m_previousItem = item;
175 void ListView::listItemClicked(QListWidgetItem *item)
177 qDebug() << __PRETTY_FUNCTION__;
179 ListItem *currentItem = dynamic_cast<ListItem*>(item);
182 listItemClicked(currentItem);
185 ListItem *ListView::listItem(const QString &itemID)
187 qDebug() << __PRETTY_FUNCTION__;
189 return dynamic_cast<ListItem*>(m_listItems.value(itemID));
192 ListItem *ListView::listItemAt(int index)
194 qDebug() << __PRETTY_FUNCTION__;
196 QHashIterator<QString, ListItem*> itemIterator(m_listItems);
200 while (itemIterator.hasNext()) {
202 if (index == counter) {
203 item = itemIterator.value();
212 ListItem *ListView::selectedItem()
214 qDebug() << __PRETTY_FUNCTION__;
216 QList<QListWidgetItem *> selectedListItems = selectedItems();
218 if (!selectedListItems.isEmpty())
219 return dynamic_cast<ListItem *>(selectedListItems.first());
224 void ListView::setSelectedItem(ListItem *item)
226 qDebug() << __PRETTY_FUNCTION__;
228 listItemClicked(item);
231 ListView::~ListView()
233 qDebug() << __PRETTY_FUNCTION__;