2 Situare - A location system for Facebook
3 Copyright (C) 2010 Ixonos Plc. Authors:
5 Jussi Laitinen - jussi.laitinen@ixonos.com
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.
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.
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,
23 #include <QVBoxLayout>
25 #include "extendedlistitemdelegate.h"
26 #include "imagebutton.h"
27 #include "headerlistitemdelegate.h"
28 #include "messagelistitem.h"
29 #include "messagelistview.h"
30 #include "panelcommon.h"
31 #include "situareservice/message.h"
33 #include "messagepanel.h"
35 MessagePanel::MessagePanel(QWidget *parent)
38 qDebug() << __PRETTY_FUNCTION__;
40 // --- MAIN LAYOUT ---
41 QVBoxLayout *messageLayout = new QVBoxLayout;
42 messageLayout->setMargin(0);
43 messageLayout->setSpacing(0);
44 setLayout(messageLayout);
46 QVBoxLayout *listViewLayout = new QVBoxLayout;
47 listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
48 PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
49 messageLayout->addLayout(listViewLayout);
51 ImageButton *refreshMessagesButton = new ImageButton(":/res/images/refresh.png",
52 ":/res/images/refresh_s.png",
54 connect(refreshMessagesButton, SIGNAL(clicked()),
55 this, SIGNAL(requestMessages()));
57 ImageButton *messageButton = new ImageButton(":/res/images/chat_btn.png",
58 ":/res/images/chat_btn_s.png",
59 ":/res/images/chat_btn_d.png", this);
60 connect(messageButton, SIGNAL(clicked()),
61 this, SLOT(messageButtonPressed()));
63 ImageButton *deleteMessageButton = new ImageButton(":res/images/message_remove_btn.png",
64 ":res/images/message_remove_btn_s.png",
65 ":res/images/message_remove_btn_d.png", this);
66 connect(deleteMessageButton, SIGNAL(clicked()),
67 this, SLOT(removeMessage()));
69 m_messageListView = new MessageListView(this);
70 m_messageListItemDelegate = new ExtendedListItemDelegate(this);
71 m_headerListItemDelegate = new HeaderListItemDelegate(this);
74 listViewLayout->addWidget(m_messageListView);
75 connect(m_messageListView, SIGNAL(listItemSelectionChanged()),
76 this, SLOT(onListItemSelectionChanged()));
77 connect(m_messageListView, SIGNAL(messageItemClicked(GeoCoordinate)),
78 this, SIGNAL(findFriend(GeoCoordinate)));
80 m_itemButtonsLayout->addWidget(messageButton);
81 m_itemButtonsLayout->addWidget(deleteMessageButton);
83 m_genericButtonsLayout->addWidget(refreshMessagesButton);
86 void MessagePanel::anyPanelClosed()
88 qDebug() << __PRETTY_FUNCTION__;
90 m_messageListView->clearItemSelection();
93 void MessagePanel::removeMessage()
95 qDebug() << __PRETTY_FUNCTION__;
97 MessageListItem *item = dynamic_cast<MessageListItem *>(m_messageListView->selectedItem());
100 emit requestRemoveMessage(item->id());
103 void MessagePanel::hideEvent(QHideEvent *event)
105 qDebug() << __PRETTY_FUNCTION__;
107 QWidget::hideEvent(event);
109 m_messageListView->clearItemSelection();
112 void MessagePanel::initItemDelegates()
114 qDebug() << __PRETTY_FUNCTION__;
116 m_messageListView->setItemDelegate(m_messageListItemDelegate);
117 delete m_headerListItemDelegate;
118 m_headerListItemDelegate = new HeaderListItemDelegate(this);
122 void MessagePanel::messageButtonPressed()
124 qDebug() << __PRETTY_FUNCTION__;
126 MessageListItem *messageItem = dynamic_cast<MessageListItem*>(
127 m_messageListView->selectedItem());
130 emit requestMessageDialog(QPair<QString, QString>(messageItem->receiverId(),
131 messageItem->title()));
134 void MessagePanel::populateMessageListView(QList<Message> &received, QList<Message> &sent)
136 qDebug() << __PRETTY_FUNCTION__;
138 m_messageListView->clearList();
141 if (received.count() > 0) {
142 m_messageListView->setItemDelegateForRow(0, m_headerListItemDelegate);
143 ExtendedListItem *receivedHeaderItem = new ExtendedListItem(0, QListWidgetItem::UserType);
144 receivedHeaderItem->setTitle(tr("Received:"));
145 m_messageListView->addListItem(QString("receivedHeader"), receivedHeaderItem);
147 foreach (Message message, received) {
148 MessageListItem *item = new MessageListItem();
149 item->setMessageData(message);
150 m_messageListView->addListItem(message.id(), item);
154 if (sent.count() > 0) {
155 m_messageListView->setItemDelegateForRow(m_messageListView->count(),
156 m_headerListItemDelegate);
157 ExtendedListItem *sentHeaderItem = new ExtendedListItem(0, QListWidgetItem::UserType);
158 sentHeaderItem->setTitle(tr("Sent:"));
159 m_messageListView->addListItem(QString("sentHeader"), sentHeaderItem);
161 foreach (Message message, sent) {
162 MessageListItem *item = new MessageListItem();
163 item->setMessageData(message);
164 m_messageListView->addListItem(message.id(), item);
169 void MessagePanel::setImage(const QString &id, const QPixmap &image)
171 qDebug() << __PRETTY_FUNCTION__;
173 MessageListItem *item = dynamic_cast<MessageListItem*>(
174 m_messageListView->listItem(id));
177 item->setImage(image);