Added method to engine to set progress indicator enabled/disabled.
[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     connect(m_userInfo, SIGNAL(itemSelectionChanged(bool)),
86             this, SLOT(onUserInfoItemSelected(bool)));
87
88     connect(m_userInfo, SIGNAL(addTags(QStringList)),
89             this, SIGNAL(addTags(QStringList)));
90
91     connect(m_userInfo, SIGNAL(removeTags(QStringList)),
92             this, SIGNAL(removeTags(QStringList)));
93
94     ImageButton *updateFriendsButton = new ImageButton(":/res/images/refresh.png",
95                                                        ":/res/images/refresh_s.png",
96                                                        "", this);
97     ImageButton *updateStatusMessageButton = new ImageButton(":/res/images/send_position.png",
98                                                              ":/res/images/send_position_s.png",
99                                                              "", this);
100
101     ImageButton *tagButton = new ImageButton(":/res/images/tag_btn.png",
102                                              ":/res/images/tag_btn_s.png",
103                                              ":/res/images/tag_btn_d.png", this);
104
105     m_genericButtonsLayout->addWidget(updateFriendsButton);
106     m_genericButtonsLayout->addWidget(updateStatusMessageButton);
107
108     m_itemButtonsLayout->addWidget(tagButton);
109
110     connect(updateFriendsButton, SIGNAL(clicked()),
111             this, SIGNAL(refreshUserData()));
112
113     connect(updateStatusMessageButton, SIGNAL(clicked()),
114             m_userInfo, SLOT(messageUpdate()));
115
116     connect(tagButton, SIGNAL(clicked()),
117             this, SLOT(showTagsDialog()));
118
119 }
120
121 void UserInfoPanel::populatePopularTags(QHash<QString, QString> &popularTags)
122 {
123     qDebug() << __PRETTY_FUNCTION__;
124
125     m_userInfo->setPopularTags(popularTags);
126 }
127
128 void UserInfoPanel::setImage(const QString &id, const QPixmap &image)
129 {
130     qDebug() << __PRETTY_FUNCTION__;
131
132     m_userInfo->setProfileImage(image);
133 }
134
135 void UserInfoPanel::showUserInfo(bool logged)
136 {
137     qDebug() << __PRETTY_FUNCTION__;
138
139     m_userInfo->setVisible(logged);
140 }
141
142 void UserInfoPanel::showTagsDialog()
143 {
144     qDebug() << __PRETTY_FUNCTION__;
145
146     m_userInfo->showTagsDialog();
147
148     emit requestPopularTags();
149 }
150
151 void UserInfoPanel::userDataReceived(User *user)
152 {
153     qDebug() << __PRETTY_FUNCTION__;
154
155     if(user) {
156         m_userInfo->setUserName(user->name());
157         m_userInfo->setProfileImage(user->profileImage());
158         m_userInfo->setMessageText(user->note());
159         m_userInfo->setAddress(user->address());
160         m_userInfo->setTime(user->timestamp());
161         m_userInfo->setCoordinates(user->coordinates());
162         m_userInfo->setTags(user->tags());
163
164         m_userInfo->show();
165     }
166 }