3df3f22a6a6749079b09b26d0607d2645d2d0881
[situare] / src / ui / friendlistview.cpp
1 /*
2    Situare - A location system for Facebook
3    Copyright (C) 2010  Ixonos Plc. Authors:
4
5        Jussi Laitinen - jussi.laitinen@ixonos.com
6
7    Situare is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License
9    version 2 as published by the Free Software Foundation.
10
11    Situare is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with Situare; if not, write to the Free Software
18    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
19    USA.
20 */
21
22 #include <QVBoxLayout>
23 #include <QDebug>
24 #include <QLabel>
25
26 #include "friendlistview.h"
27 #include "friendlistitem.h"
28 #include "../user/user.h"
29
30 FriendListView::FriendListView(QWidget *parent)
31     : QWidget(parent)
32 {
33     qDebug() << __PRETTY_FUNCTION__;
34
35     m_friendListLayout = new QVBoxLayout(this);
36     m_friendListLayout->setMargin(0);
37     m_friendListLayout->setSpacing(0);
38     m_friendListLayout->setStretch(0, 0);
39     m_friendListLayout->setSizeConstraint(QLayout::SetFixedSize);
40
41     this->setLayout(m_friendListLayout);
42 }
43
44 void FriendListView::addWidget(const QString &key, QWidget *widget)
45 {
46     qDebug() << __PRETTY_FUNCTION__;
47
48     if (!m_widgets.contains(key)) {
49         m_friendListLayout->addWidget(widget);
50         m_widgets.insert(key, widget);
51     }
52 }
53
54 void FriendListView::clearUnused(const QStringList &userIDs)
55 {
56     qDebug() << __PRETTY_FUNCTION__;
57
58     foreach (QString key, m_widgets.keys()) {
59         if (!userIDs.contains(key)) {
60             QWidget *widget = m_widgets.value(key);
61
62             if (widget) {
63                 m_friendListLayout->removeWidget(widget);
64                 disconnect(widget, 0, 0, 0);
65                 delete widget;
66             }
67         }
68     }
69 }
70
71 void FriendListView::filter(const QList<QString> &userIDs)
72 {
73     foreach (QWidget *widget, m_widgets)
74         widget->hide();
75
76     foreach (QString userID, userIDs) {
77         QWidget *widget = m_widgets.value(userID);
78         if (widget)
79             widget->show();
80     }
81 }
82
83 void FriendListView::clearFilter()
84 {
85     foreach (QWidget *widget, m_widgets)
86         widget->show();
87 }
88
89 bool FriendListView::contains(const QString &userID)
90 {
91     return m_widgets.contains(userID);
92 }
93
94 FriendListItem *FriendListView::widget(const QString &userID)
95 {
96     return static_cast<FriendListItem*>(m_widgets.value(userID));
97 }