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)
37 m_headerListItemDelegate(0)
39 qDebug() << __PRETTY_FUNCTION__;
41 // --- MAIN LAYOUT ---
42 QVBoxLayout *messageLayout = new QVBoxLayout;
43 messageLayout->setMargin(0);
44 messageLayout->setSpacing(0);
45 setLayout(messageLayout);
47 QVBoxLayout *listViewLayout = new QVBoxLayout;
48 listViewLayout->setContentsMargins(PANEL_MARGIN_LEFT, PANEL_MARGIN_TOP,
49 PANEL_MARGIN_RIGHT, PANEL_MARGIN_BOTTOM);
50 messageLayout->addLayout(listViewLayout);
52 ImageButton *refreshMessagesButton = new ImageButton(":/res/images/refresh.png",
53 ":/res/images/refresh_s.png",
55 connect(refreshMessagesButton, SIGNAL(clicked()),
56 this, SIGNAL(requestMessages()));
58 ImageButton *messageButton = new ImageButton(":/res/images/chat_btn.png",
59 ":/res/images/chat_btn_s.png",
60 ":/res/images/chat_btn_d.png", this);
61 connect(messageButton, SIGNAL(clicked()),
62 this, SLOT(messageButtonPressed()));
64 ImageButton *deleteMessageButton = new ImageButton(":res/images/message_remove_btn.png",
65 ":res/images/message_remove_btn_s.png",
66 ":res/images/message_remove_btn_d.png", this);
67 connect(deleteMessageButton, SIGNAL(clicked()),
68 this, SLOT(removeMessage()));
70 m_messageListView = new MessageListView(this);
71 m_messageListItemDelegate = new ExtendedListItemDelegate(this);
72 m_headerListItemDelegate = new HeaderListItemDelegate(this);
75 listViewLayout->addWidget(m_messageListView);
76 connect(m_messageListView, SIGNAL(listItemSelectionChanged()),
77 this, SLOT(onListItemSelectionChanged()));
78 connect(m_messageListView, SIGNAL(messageItemClicked(GeoCoordinate)),
79 this, SIGNAL(findFriend(GeoCoordinate)));
81 m_itemButtonsLayout->addWidget(messageButton);
82 m_itemButtonsLayout->addWidget(deleteMessageButton);
84 m_genericButtonsLayout->addWidget(refreshMessagesButton);
87 void MessagePanel::anyPanelClosed()
89 qDebug() << __PRETTY_FUNCTION__;
91 m_messageListView->clearItemSelection();
94 void MessagePanel::removeMessage()
96 qDebug() << __PRETTY_FUNCTION__;
98 MessageListItem *item = dynamic_cast<MessageListItem *>(m_messageListView->selectedItem());
101 emit requestRemoveMessage(item->id());
104 void MessagePanel::hideEvent(QHideEvent *event)
106 qDebug() << __PRETTY_FUNCTION__;
108 QWidget::hideEvent(event);
110 m_messageListView->clearItemSelection();
113 void MessagePanel::initItemDelegates()
115 qDebug() << __PRETTY_FUNCTION__;
117 m_messageListView->setItemDelegate(m_messageListItemDelegate);
119 if (m_headerListItemDelegate)
120 delete m_headerListItemDelegate;
121 m_headerListItemDelegate = new HeaderListItemDelegate(this);
125 void MessagePanel::messageButtonPressed()
127 qDebug() << __PRETTY_FUNCTION__;
129 MessageListItem *messageItem = dynamic_cast<MessageListItem*>(
130 m_messageListView->selectedItem());
133 m_messageListView->clearItemSelection();
134 emit requestMessageDialog(QPair<QString, QString>(messageItem->receiverId(),
135 messageItem->title()));
139 void MessagePanel::populateMessageListView(QList<Message> &received, QList<Message> &sent)
141 qDebug() << __PRETTY_FUNCTION__;
143 m_messageListView->clearList();
146 if (received.count() > 0) {
147 m_messageListView->setItemDelegateForRow(0, m_headerListItemDelegate);
148 ExtendedListItem *receivedHeaderItem = new ExtendedListItem(0, QListWidgetItem::UserType);
149 receivedHeaderItem->setTitle(tr("Received:"));
150 m_messageListView->addListItem(QString("receivedHeader"), receivedHeaderItem);
152 foreach (Message message, received) {
153 MessageListItem *item = new MessageListItem();
154 item->setMessageData(message);
155 m_messageListView->addListItem(message.id(), item);
159 if (sent.count() > 0) {
160 m_messageListView->setItemDelegateForRow(m_messageListView->count(),
161 m_headerListItemDelegate);
162 ExtendedListItem *sentHeaderItem = new ExtendedListItem(0, QListWidgetItem::UserType);
163 sentHeaderItem->setTitle(tr("Sent:"));
164 m_messageListView->addListItem(QString("sentHeader"), sentHeaderItem);
166 foreach (Message message, sent) {
167 MessageListItem *item = new MessageListItem();
168 item->setMessageData(message);
169 m_messageListView->addListItem(message.id(), item);
174 void MessagePanel::setImage(const QString &id, const QPixmap &image)
176 qDebug() << __PRETTY_FUNCTION__;
178 MessageListItem *item = dynamic_cast<MessageListItem*>(
179 m_messageListView->listItem(id));
182 item->setImage(image);