Added FriendListView methods to ListView.
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 7 Jul 2010 06:11:43 +0000 (09:11 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Wed, 7 Jul 2010 06:11:43 +0000 (09:11 +0300)
src/ui/friendlistitem.cpp
src/ui/listview.cpp
src/ui/listview.h

index 3da1105..06ec988 100644 (file)
@@ -167,7 +167,7 @@ void FriendListItem::setId(const QString &id)
     qDebug() << __PRETTY_FUNCTION__;
 }
 
-QString FriendListItem::id()
+QString FriendListItem::id() const
 {
     return m_user->userId();
 }
index 408439e..f1e18f6 100644 (file)
@@ -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<QString> &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<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));
 }
index 99dbd0b..29d7237 100644 (file)
@@ -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<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);
@@ -21,12 +84,12 @@ signals:
 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