36c7cc3f9544895e5638952283516063aab9a19a
[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
28 FriendListView::FriendListView(QWidget *parent)
29     : QWidget(parent)
30 {
31     qDebug() << __PRETTY_FUNCTION__;
32
33     m_friendListLayout = new QVBoxLayout(this);
34     m_friendListLayout->setMargin(0);
35     m_friendListLayout->setSpacing(0);
36     m_friendListLayout->setStretch(0, 0);
37     m_friendListLayout->setSizeConstraint(QLayout::SetFixedSize);
38
39     this->setLayout(m_friendListLayout);
40 }
41
42 void FriendListView::addWidget(const QString &key, QWidget *widget)
43 {
44     qDebug() << __PRETTY_FUNCTION__;
45
46     if (!widgets.contains(key)) {
47         m_friendListLayout->addWidget(widget);
48         widgets.insert(key, widget);
49     }
50 }
51
52 void FriendListView::clear()
53 {
54     qDebug() << __PRETTY_FUNCTION__;
55
56     foreach (QWidget *widget, widgets) {
57         m_friendListLayout->removeWidget(widget);
58         disconnect(widget, 0, 0, 0);
59         delete widget;
60     }
61
62     widgets.clear();
63 }
64
65 void FriendListView::filter(const QList<QString> userIDs)
66 {
67     foreach (QWidget *widget, widgets)
68         widget->hide();
69
70     foreach (QString userID, userIDs) {
71         QWidget *widget = widgets.value(userID);
72         if (widget)
73             widget->show();
74     }
75 }
76
77 void FriendListView::clearFilter()
78 {
79     foreach (QWidget *widget, widgets)
80         widget->show();
81 }