connect(this, SIGNAL(itemClicked(QListWidgetItem*)),
this, SLOT(listItemClicked(QListWidgetItem*)));
-// connect(this, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
-// this, SLOT(selectedChanged(QListWidgetItem*,QListWidgetItem*)));
+}
+
+void ListView::addListItem(const QString &key, ListItem *item)
+{
+ if (!m_listItems.contains(key)) {
+ addItem(item);
+ m_listItems.insert(key, item);
+ }
+}
+
+void ListView::addItemToView(ListItem *item)
+{
+ addItem(item);
+}
+
+void ListView::clearUnused(const QStringList &userIDs)
+{
+ foreach (QString key, m_listItems.keys()) {
+ if (!userIDs.contains(key)) {
+ ListItem *item = m_listItems.value(key);
+ if (item) {
+ takeItem(row(item));
+ delete item;
+ m_listItems.remove(key);
+ }
+ }
+ }
+}
+
+void ListView::clearFilter()
+{
+
+}
+
+bool ListView::contains(const QString &userID)
+{
+ return m_listItems.contains(userID);
+}
+
+void ListView::filter(const QList<QString> &userIDs)
+{
+
+}
+
+ListItem *ListView::takeListItemFromView(const QString &userID)
+{
+ ListItem *listItem = item(userID);
+ takeItem(row(listItem));
+ return listItem;
}
void ListView::listItemClicked(QListWidgetItem *item)
}
}
-void ListView::selectedChanged(QListWidgetItem *current, QListWidgetItem *previous)
+ListItem *ListView::item(const QString &userID)
{
- qWarning() << __PRETTY_FUNCTION__;
-
- if (previous) {
- ListItem *previousItem = static_cast<ListItem*>(previous);
-
- if (previousItem)
- previousItem->toggleHeight();
- }
-
- if (current) {
- ListItem *currentItem = static_cast<ListItem*>(current);
-
- if (currentItem)
- currentItem->toggleHeight();
- }
+ return static_cast<ListItem*>(m_listItems.value(userID));
}
public:
ListView(QWidget *parent = 0);
-/*******************************************************************************
- * BASE CLASS INHERITED AND REIMPLEMENTED MEMBER FUNCTIONS
- ******************************************************************************/
+public:
+ /**
+ * @brief Add widget to view and widget list.
+ *
+ * @param key user ID
+ * @param widget widget to add to list
+ */
+ void addListItem(const QString &key, ListItem *item);
+
+ /**
+ * @brief Adds widget to view.
+ *
+ * @param item FriendListItem
+ */
+ void addItemToView(ListItem *item);
+
+ /**
+ * @brief Clear unused widgets from view.
+ *
+ * Clears items which are not in user ID's list from the view and widget list.
+ *
+ * @param userIDs list of new user ID's.
+ */
+ void clearUnused(const QStringList &userIDs);
+
+ /**
+ * @brief Clears filtering from list.
+ *
+ * Calls show to all widgets.
+ */
+ void clearFilter();
+
+ /**
+ * @brief Checks if view contains widget with userID.
+ *
+ * @param userID user's ID
+ * @return true if view contains widget, false otherwise
+ */
+ bool contains(const QString &userID);
+
+ /**
+ * @brief Sets filter to list.
+ *
+ * Hide all widgets that are not in the userIDs list.
+ *
+ * @param userIDs user ID's to widgets that are shown
+ */
+ void filter(const QList<QString> &userIDs);
+
+ /**
+ * @brief Takes widget from view.
+ *
+ * Widget is not deleted.
+ *
+ * @param userID user's ID
+ * @return FriendListItem
+ */
+ ListItem *takeListItemFromView(const QString &userID);
+
+ /**
+ * @brief Returns FriendListItem with userID.
+ *
+ * @param userID user's ID
+ * @return FriendListItem
+ */
+ ListItem *item(const QString &userID);
signals:
void listItemClicked(const QString &id);
public slots:
private slots:
- void selectedChanged(QListWidgetItem *current, QListWidgetItem *previous);
void listItemClicked(QListWidgetItem *item);
private:
ListItem *previousItem;
+ QHash<QString, ListItem *> m_listItems; ///< List of items in this view. Key = user ID
};
#endif // LISTVIEW_H