Friend filtering redone
[situare] / src / user / friendmodel.h
index edd117f..9ec88fb 100644 (file)
@@ -24,6 +24,7 @@
 #define FRIENDMODEL_H
 
 #include <QAbstractListModel>
+#include <QSortFilterProxyModel>
 
 #include "user.h"
 
@@ -51,16 +52,29 @@ public:
     void setFriends(const QList<User *>& friends);
     void resetFriends();
 
-    void filter(const QList<User*>& friends);
-    Q_INVOKABLE void resetFilter();
-
     int rowCount(const QModelIndex & parent = QModelIndex()) const;
     QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
 
 private:
-    QList<User *> m_all_friends;
-    QList<User *> m_filter;
     QList<User *> m_friends;
 };
 
+class FilteredFriendModel : public QSortFilterProxyModel
+{
+    Q_OBJECT
+
+public:
+    explicit FilteredFriendModel(QObject *parent = 0);
+
+    void setFilter(const QList<User*>& filter);
+
+    Q_INVOKABLE void resetFilter();
+
+protected:
+    virtual bool filterAcceptsRow(int source_row, const QModelIndex & source_parent) const;
+
+private:
+    QList<User *> m_filter;
+};
+
 #endif // FRIENDMODEL_H