ListView::ListView(QWidget *parent)
: QListWidget(parent),
- m_previousItem(0)
+ m_currentItem(0)
{
qDebug() << __PRETTY_FUNCTION__;
void ListView::clearItemSelection()
{
+ qDebug() << __PRETTY_FUNCTION__;
+
clearSelection();
- if (m_previousItem)
- m_previousItem->setSelected(false);
+ if (m_currentItem)
+ m_currentItem->setSelected(false);
}
void ListView::clearList()
m_listItems.clear();
clear();
- m_previousItem = 0;
+ m_currentItem = 0;
}
void ListView::clearUnused(const QStringList &itemIDs)
ListItem *item = m_listItems.take(key);
if (item) {
takeItem(row(item));
- if (m_previousItem == item)
- m_previousItem = 0;
+ if (m_currentItem == item)
+ m_currentItem = 0;
delete item;
}
}
m_filteredItemIDs = itemIDs;
foreach (ListItem *item, m_listItems) {
- if (itemIDs.contains(m_listItems.key(item)))
- setItemHidden(item, false);
- else
- setItemHidden(item, true);
+ if (itemIDs.contains(m_listItems.key(item))) {
+ item->setHidden(false);
+ } else {
+ item->setSelected(false);
+ item->setHidden(true);
+ }
}
+
+ emit listItemSelectionChanged();
}
void ListView::filter(const QString &pattern)
if (m_filteredItemIDs.isEmpty()) {
foreach (ListItem *item, m_listItems) {
- if (item->title().contains(pattern, Qt::CaseInsensitive))
- setItemHidden(item, false);
- else
- setItemHidden(item, true);
+ if (item->title().contains(pattern, Qt::CaseInsensitive)) {
+ item->setHidden(false);
+ } else {
+ item->setSelected(false);
+ item->setHidden(true);
+ }
}
} else {
foreach (QString key, m_filteredItemIDs) {
ListItem *item = m_listItems.value(key);
if (item) {
- if (item->title().contains(pattern, Qt::CaseInsensitive))
- setItemHidden(item, false);
- else
- setItemHidden(item, true);
+ if (item->title().contains(pattern, Qt::CaseInsensitive)) {
+ item->setHidden(false);
+ } else {
+ item->setSelected(false);
+ item->setHidden(true);
+ }
}
}
}
+
+ emit listItemSelectionChanged();
}
ListItem *ListView::takeListItemFromView(const QString &itemID)
return item;
}
-bool ListView::listItemClicked(ListItem *item)
+bool ListView::listItemClicked(ListItem *clickedItem)
{
qDebug() << __PRETTY_FUNCTION__;
- if (m_previousItem == item) {
- item->toggleSelection();
+ if (m_currentItem == clickedItem) {
+ clickedItem->toggleSelection();
} else {
- if (m_previousItem)
- m_previousItem->setSelected(false);
+ if (m_currentItem)
+ m_currentItem->setSelected(false);
- item->setSelected(true);
+ clickedItem->setSelected(true);
}
- m_previousItem = item;
+ m_currentItem = clickedItem;
- return item->isSelected();
+ emit listItemSelectionChanged();
+
+ return clickedItem->isSelected();
}
void ListView::listItemClicked(QListWidgetItem *item)
{
qDebug() << __PRETTY_FUNCTION__;
- QHashIterator<QString, ListItem*> itemIterator(m_listItems);
- ListItem *item = 0;
- int counter = 0;
+ ListItem *listItem = 0;
- while (itemIterator.hasNext()) {
- itemIterator.next();
- if (index == counter) {
- item = itemIterator.value();
- break;
- }
- counter++;
+ if (index < count())
+ listItem = dynamic_cast<ListItem*>(item(index));
+
+ return listItem;
+}
+
+void ListView::prependListItem(const QString &key, ListItem *item)
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ if (!m_listItems.contains(key)) {
+ insertItem(0, item);
+ m_listItems.insert(key, item);
}
+}
- return item;
+void ListView::removeLastItem()
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ ListItem *item = listItemAt(count() - 1);
+
+ if (item) {
+ if (item) {
+ m_listItems.remove(item->title());
+ takeItem(row(item));
+ if (m_currentItem == item)
+ m_currentItem = 0;
+ delete item;
+ }
+ }
}
ListItem *ListView::selectedItem()