b30e767d9dc1b305eae6825ee0e407556d685b6f
[situare] / src / ui / meetpeoplepanel.cpp
1 #include <QDebug>
2 #include <QVBoxLayout>
3
4 #include "headerlistitemdelegate.h"
5 #include "personlistitem.h"
6 #include "extendedlistitemdelegate.h"
7 #include "personlistview.h"
8 #include "imagebutton.h"
9 #include "panelcommon.h"
10 #include "user/user.h"
11
12 #include "meetpeoplepanel.h"
13
14 MeetPeoplePanel::MeetPeoplePanel(QWidget *parent)
15     : PanelBase(parent)
16 {
17     qDebug() << __PRETTY_FUNCTION__;
18
19     QVBoxLayout *meetPeopleLayout = new QVBoxLayout;
20     meetPeopleLayout->setMargin(0);
21     meetPeopleLayout->setSpacing(0);
22     setLayout(meetPeopleLayout);
23
24     m_personListView = new PersonListView(this);
25     m_personListView->setItemDelegate(new ExtendedListItemDelegate(this));
26     connect(m_personListView, SIGNAL(listItemSelectionChanged()),
27             this, SLOT(onListItemSelectionChanged()));
28     connect(m_personListView, SIGNAL(personItemClicked(GeoCoordinate)),
29             this, SIGNAL(findPerson(GeoCoordinate)));
30
31     QVBoxLayout *listViewLayout = new QVBoxLayout;
32     listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
33                                        PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
34     listViewLayout->addWidget(m_personListView);
35     meetPeopleLayout->addLayout(listViewLayout);
36
37     ImageButton *refreshInterestingPeopleButton = new ImageButton(":/res/images/refresh.png",
38                                                                   ":/res/images/refresh_s.png",
39                                                                   "", this);
40     connect(refreshInterestingPeopleButton, SIGNAL(clicked()),
41             this, SIGNAL(requestInterestingPeople()));
42
43     ImageButton *searchPeopleButton = new ImageButton(":/res/images/search.png",
44                                                       ":/res/images/search_s.png", "", this);
45     connect(searchPeopleButton, SIGNAL(clicked()),
46             this, SIGNAL(requestInterestingPeopleSearch()));
47
48     ImageButton *friendListButton = new ImageButton(":/res/images/friend_list_btn.png",
49                                                  ":/res/images/friend_list_btn_s.png",
50                                                  ":/res/images/friend_list_btn_d.png", this);
51     connect(friendListButton, SIGNAL(clicked()),
52             this, SLOT(showFriend()));
53
54     ImageButton *messageButton = new ImageButton(":/res/images/chat_btn.png",
55                                                  ":/res/images/chat_btn_s.png",
56                                                  ":/res/images/chat_btn_d.png", this);
57     connect(messageButton, SIGNAL(clicked()),
58             this, SLOT(messageButtonPressed()));
59
60     m_genericButtonsLayout->addWidget(refreshInterestingPeopleButton);
61     m_genericButtonsLayout->addWidget(searchPeopleButton);
62     m_itemButtonsLayout->addWidget(friendListButton);
63     m_itemButtonsLayout->addWidget(messageButton);
64 }
65
66 void MeetPeoplePanel::anyPanelClosed()
67 {
68     qDebug() << __PRETTY_FUNCTION__;
69
70     m_personListView->clearItemSelection();
71 }
72
73 void MeetPeoplePanel::hideEvent(QHideEvent *event)
74 {
75     qDebug() << __PRETTY_FUNCTION__;
76
77     QWidget::hideEvent(event);
78
79     m_personListView->clearItemSelection();
80 }
81
82 void MeetPeoplePanel::messageButtonPressed()
83 {
84     qDebug() << __PRETTY_FUNCTION__;
85
86     PersonListItem *personItem = dynamic_cast<PersonListItem*>(m_personListView->selectedItem());
87     if (personItem)
88         emit requestMessageDialog(QPair<QString, QString>(personItem->facebookId(),
89                                                           personItem->title()));
90 }
91
92 void MeetPeoplePanel::setImage(const QString &id, const QPixmap &image)
93 {
94     qDebug() << __PRETTY_FUNCTION__;
95
96     PersonListItem *personItem = dynamic_cast<PersonListItem*>(m_personListView->listItem(id));
97     if (personItem)
98         personItem->setAvatarImage(image);
99 }
100
101 void MeetPeoplePanel::showFriend()
102 {
103     qDebug() << __PRETTY_FUNCTION__;
104
105     PersonListItem *personItem = dynamic_cast<PersonListItem*>(m_personListView->selectedItem());
106     if (personItem) {
107         QList<QString> userIds;
108         userIds.append(personItem->facebookId());
109         emit requestShowFriend(userIds);
110     }
111 }
112
113 void MeetPeoplePanel::populateInterestingPeopleListView(QList<User> &interestingPeople)
114 {
115     qDebug() << __PRETTY_FUNCTION__ ;
116
117     m_personListView->clearList();
118
119     for (int i = 0; i < interestingPeople.count(); ++i) {
120         if (i == 0) {
121             m_personListView->setItemDelegateForRow(i, new HeaderListItemDelegate(this));
122             ExtendedListItem *item = new ExtendedListItem(0, QListWidgetItem::UserType);
123             item->setTitle(tr("Friends:"));
124             m_personListView->addListItem(QString("header") + QString::number(i), item);
125         }
126         else if (i == 2) {
127             m_personListView->setItemDelegateForRow(i+1, new HeaderListItemDelegate(this));
128             ExtendedListItem *item = new ExtendedListItem(0, QListWidgetItem::UserType);
129             item->setTitle(tr("Others:"));
130             m_personListView->addListItem(QString("header") + QString::number(i), item);
131         }
132         PersonListItem *item = new PersonListItem();
133         item->setPersonData(interestingPeople.at(i));
134         m_personListView->addListItem(interestingPeople.at(i).userId(), item);
135     }
136
137     m_personListView->scrollToTop();
138 }