From 493709ff0648f51e6e51f712ab04969906b1014c Mon Sep 17 00:00:00 2001 From: Jussi Laitinen Date: Wed, 7 Jul 2010 09:11:43 +0300 Subject: [PATCH] Added FriendListView methods to ListView. --- src/ui/friendlistitem.cpp | 2 +- src/ui/listview.cpp | 69 +++++++++++++++++++++++++++++++------------ src/ui/listview.h | 71 ++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 119 insertions(+), 23 deletions(-) diff --git a/src/ui/friendlistitem.cpp b/src/ui/friendlistitem.cpp index 3da1105..06ec988 100644 --- a/src/ui/friendlistitem.cpp +++ b/src/ui/friendlistitem.cpp @@ -167,7 +167,7 @@ void FriendListItem::setId(const QString &id) qDebug() << __PRETTY_FUNCTION__; } -QString FriendListItem::id() +QString FriendListItem::id() const { return m_user->userId(); } diff --git a/src/ui/listview.cpp b/src/ui/listview.cpp index 408439e..f1e18f6 100644 --- a/src/ui/listview.cpp +++ b/src/ui/listview.cpp @@ -11,8 +11,55 @@ ListView::ListView(QWidget *parent) 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 &userIDs) +{ + +} + +ListItem *ListView::takeListItemFromView(const QString &userID) +{ + ListItem *listItem = item(userID); + takeItem(row(listItem)); + return listItem; } void ListView::listItemClicked(QListWidgetItem *item) @@ -38,21 +85,7 @@ 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(previous); - - if (previousItem) - previousItem->toggleHeight(); - } - - if (current) { - ListItem *currentItem = static_cast(current); - - if (currentItem) - currentItem->toggleHeight(); - } + return static_cast(m_listItems.value(userID)); } diff --git a/src/ui/listview.h b/src/ui/listview.h index 99dbd0b..29d7237 100644 --- a/src/ui/listview.h +++ b/src/ui/listview.h @@ -11,9 +11,72 @@ class ListView : public QListWidget 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 &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); @@ -21,12 +84,12 @@ signals: public slots: private slots: - void selectedChanged(QListWidgetItem *current, QListWidgetItem *previous); void listItemClicked(QListWidgetItem *item); private: ListItem *previousItem; + QHash m_listItems; ///< List of items in this view. Key = user ID }; #endif // LISTVIEW_H -- 1.7.9.5