{
qDebug() << __PRETTY_FUNCTION__;
+ m_filteredItemIDs.clear();
+
if (m_previousItem)
m_previousItem->setSelected(false);
{
qDebug() << __PRETTY_FUNCTION__;
+ m_filteredItemIDs = itemIDs;
+
foreach (ListItem *item, m_listItems) {
if (itemIDs.contains(m_listItems.key(item)))
setItemHidden(item, false);
{
qDebug() << __PRETTY_FUNCTION__;
- foreach (ListItem *item, m_listItems) {
- if (item->title().contains(pattern, Qt::CaseInsensitive))
- setItemHidden(item, false);
- else
- setItemHidden(item, true);
+ if (m_filteredItemIDs.isEmpty()) {
+ foreach (ListItem *item, m_listItems) {
+ if (item->title().contains(pattern, Qt::CaseInsensitive))
+ setItemHidden(item, false);
+ else
+ setItemHidden(item, 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);
+ }
+ }
}
}
/**
* @brief Clears filtering from list.
*
- * Shows all items.
+ * Clears m_filteredItemIDs and shows all items.
*/
void clearFilter();
/**
* @brief Filters list by text pattern.
*
- * Filtering uses item names.
+ * Filtering uses item names. If filtering by item IDs is on, filters only those items.
*
* @param pattern text pattern to filter
*/
private:
QHash<QString, ListItem *> m_listItems; ///< List of items in this view. Key = user ID
+ QList<QString> m_filteredItemIDs; ///< List of filtered item IDs
+
ListItem *m_previousItem; ///< Previously selected item
};