Merge branch 'master' of https://vcs.maemo.org/git/situare
[situare] / src / ui / userinfopanel.cpp
1 /*
2     Situare - A location system for Facebook
3     Copyright (C) 2010  Ixonos Plc. Authors:
4
5         Kaj Wallin - kaj.wallin@ixonos.com
6         Katri Kaikkonen - katri.kaikkonen@ixonos.com
7         Pekka Nissinen - pekka.nissinen@ixonos.com
8
9     Situare is free software; you can redistribute it and/or
10     modify it under the terms of the GNU General Public License
11     version 2 as published by the Free Software Foundation.
12
13     Situare is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU General Public License for more details.
17
18     You should have received a copy of the GNU General Public License
19     along with Situare; if not, write to the Free Software
20     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
21     USA.
22 */
23
24 #include <QScrollArea>
25 #include <QVBoxLayout>
26
27 #include "imagebutton.h"
28 #include "panelcommon.h"
29 #include "userinfo.h"
30
31 #include "userinfopanel.h"
32
33 UserInfoPanel::UserInfoPanel(QWidget *parent)
34     : PanelBase(parent)
35 {
36     qDebug() << __PRETTY_FUNCTION__;
37
38     QVBoxLayout *userInfoPanelLayout = new QVBoxLayout;
39     userInfoPanelLayout->setMargin(0);
40     userInfoPanelLayout->setSpacing(0);
41     userInfoPanelLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
42                                             PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
43     setLayout(userInfoPanelLayout);
44
45     m_userInfo = new UserInfo(this);
46
47     QWidget *userInfoView = new QWidget(this);
48     QVBoxLayout *userInfoViewLayout = new QVBoxLayout(userInfoView);
49     userInfoViewLayout->setMargin(0);
50     userInfoViewLayout->setSpacing(0);
51     userInfoViewLayout->setStretch(0, 0);
52     userInfoViewLayout->setSizeConstraint(QLayout::SetFixedSize);
53     userInfoViewLayout->addWidget(m_userInfo);
54
55     QScrollArea *userInfoScroll = new QScrollArea();
56     userInfoScroll->setWidgetResizable(true);
57     userInfoScroll->setWidget(userInfoView);
58     userInfoScroll->setAlignment(Qt::AlignVCenter);
59     userInfoScroll->viewport()->setAutoFillBackground(false);
60     userInfoScroll->widget()->setAutoFillBackground(false);
61
62     userInfoPanelLayout->addWidget(userInfoScroll);
63
64     connect(m_userInfo, SIGNAL(findUser(GeoCoordinate)),
65             this, SIGNAL(findUser(GeoCoordinate)));
66
67     connect(m_userInfo,SIGNAL(requestReverseGeo()),
68             this, SIGNAL(requestReverseGeo()));
69
70     connect(m_userInfo, SIGNAL(statusUpdate(QString, bool)),
71             this, SIGNAL(statusUpdate(QString, bool)));
72
73     connect(m_userInfo, SIGNAL(notificateUpdateFailing(QString, bool)),
74              this, SIGNAL(notificateUpdateFailing(QString, bool)));
75
76     connect(this, SIGNAL(reverseGeoReady(QString)),
77             m_userInfo, SIGNAL(reverseGeoReady(QString)));
78
79     connect(this, SIGNAL(clearUpdateLocationDialogData()),
80             m_userInfo, SLOT(clearUpdateLocationDialogData()));
81
82     connect(this, SIGNAL(collapse()),
83             m_userInfo, SLOT(collapse()));
84
85     ImageButton *updateFriendsButton = new ImageButton(":/res/images/refresh.png",
86                                                        ":/res/images/refresh_s.png",
87                                                        "", this);
88     ImageButton *updateStatusMessageButton = new ImageButton(":/res/images/send_position.png",
89                                                              ":/res/images/send_position_s.png",
90                                                              "", this);
91
92     m_genericButtonsLayout->addWidget(updateFriendsButton);
93     m_genericButtonsLayout->addWidget(updateStatusMessageButton);
94
95     connect(updateFriendsButton, SIGNAL(clicked()),
96             this, SIGNAL(refreshUserData()));
97
98     connect(updateStatusMessageButton, SIGNAL(clicked()),
99             m_userInfo, SLOT(messageUpdate()));
100
101 }
102
103 void UserInfoPanel::showUserInfo(bool logged)
104 {
105     qDebug() << __PRETTY_FUNCTION__;
106
107     m_userInfo->setVisible(logged);
108 }
109
110 void UserInfoPanel::userDataReceived(User *user)
111 {
112     qDebug() << __PRETTY_FUNCTION__;
113
114     if(user) {
115         m_userInfo->setUserName(user->name());
116         m_userInfo->setProfileImage(user->profileImage());
117         m_userInfo->setMessageText(user->note());
118         m_userInfo->setAddress(user->address());
119         m_userInfo->setTime(user->timestamp());
120         m_userInfo->setCoordinates(user->coordinates());
121
122         m_userInfo->show();
123     }
124 }