Modified FriendListItem content.
[situare] / src / ui / listviewscreen.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       Jukka Saastamoinen jukka.saastamoinen@ixonos.com
7
8    Situare is free software; you can redistribute it and/or
9    modify it under the terms of the GNU General Public License
10    version 2 as published by the Free Software Foundation.
11
12    Situare is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with Situare; if not, write to the Free Software
19    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
20    USA.
21 */
22
23 #include <QGraphicsScene>
24 #include <QGraphicsView>
25 #include <QGraphicsWidget>
26 #include <QtGui/QVBoxLayout>
27 #include <QGraphicsProxyWidget>
28 #include <QStateMachine>
29 #include <QListView>
30 #include <QDebug>
31 #include <QScrollArea>
32
33 #include "listviewscreen.h"
34 #include "friendlistitemdelegate.h"
35 #include "friendlistview.h"
36 #include "friendlistitem.h"
37 #include "friendlistmodel.h"
38 #include "user/user.h"
39
40 ListViewScreen::ListViewScreen(QWidget *parent)
41     : QWidget(parent)
42 {
43     //DEBUG
44 //    FriendListView *friendListView = new FriendListView(this);
45 //    friendListView->setItemDelegate(new FriendListItemDelegate());
46
47 //    FriendListItem *item1 = new FriendListItem();
48 //    item1->setData(FriendListItem::Name, "Name 1");
49 //    item1->setData(FriendListItem::Updated, "2 days ago");
50 //    QString test = QString("Hello Maemo Situare! Hello Maemo Situare! ");
51 //    test.append("Hello Maemo Situare! ");
52 //    test.append("Hello Maemo Situare! ");
53 //    test.append("Hello Maemo Situare! ");
54 //    test.append("Hello Maemo Situare! ");
55 //    item1->setData(FriendListItem::StatusText, test);
56 //    item1->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu");
57 //    item1->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png");
58 //    FriendListItem *item2 = new FriendListItem();
59 //    item2->setData(FriendListItem::Name, "Name 2");
60 //    item2->setData(FriendListItem::Updated, "2 days ago");
61 //    item2->setData(FriendListItem::StatusText, "Hello Maemo Situare!");
62 //    item2->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu");
63 //    item2->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png");
64 //    FriendListItem *item3 = new FriendListItem();
65 //    item3->setData(FriendListItem::Name, "Name 3");
66 //    item3->setData(FriendListItem::Updated, "2 days ago");
67 //    item3->setData(FriendListItem::StatusText, "Hello Maemo Situare!");
68 //    item3->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu");
69 //    item3->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png");
70 //    FriendListItem *item4 = new FriendListItem();
71 //    item4->setData(FriendListItem::Name, "Name 4");
72 //    item4->setData(FriendListItem::Updated, "2 days ago");
73 //    item4->setData(FriendListItem::StatusText, "Hello Maemo Situare!");
74 //    item4->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu");
75 //    item4->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png");
76 //    FriendListItem *item5 = new FriendListItem();
77 //    item5->setData(FriendListItem::Name, "Name 5");
78 //    item5->setData(FriendListItem::Updated, "2 days ago");
79 //    item5->setData(FriendListItem::StatusText, "Hello Maemo Situare!");
80 //    item5->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu");
81 //    item5->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png");
82 //    FriendListItem *item6 = new FriendListItem();
83 //    item6->setData(FriendListItem::Name, "Name 6");
84 //    item6->setData(FriendListItem::Updated, "2 days ago");
85 //    item6->setData(FriendListItem::StatusText, "Hello Maemo Situare!");
86 //    item6->setData(FriendListItem::Location, "Kiviharjunlenkki 1E, 91910 Oulu");
87 //    item6->setData(FriendListItem::Image, ":/resources/dummy_Avatar.png");
88 //    friendListView->addItem(item1);
89 //    friendListView->addItem(item2);
90 //    friendListView->addItem(item3);
91 //    friendListView->addItem(item4);
92 //    friendListView->addItem(item5);
93 //    friendListView->addItem(item6);
94
95     FriendListView *friendListView = new FriendListView(this);
96
97     User user1(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 1"),
98                QString("Hello Maemo Situare!"), QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago"), false, QString(),
99                QString(), 12.2);
100     User user2(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 2"),
101                QString("Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare!"),
102                QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago"), false, QString(),
103                QString(), 12.2);
104     FriendListItem *item1 = new FriendListItem(friendListView);
105     item1->setData(user1);
106     FriendListItem *item2 = new FriendListItem(friendListView);
107     item2->setData(user1);
108     FriendListItem *item3 = new FriendListItem(friendListView);
109     item3->setData(user1);
110     FriendListItem *item4 = new FriendListItem(friendListView);
111     item4->setData(user2);
112     FriendListItem *item5 = new FriendListItem(friendListView);
113     item5->setData(user1);
114     FriendListItem *item6 = new FriendListItem(friendListView);
115     item6->setData(user1);
116
117     friendListView->addWidget(item1);
118     friendListView->addWidget(item2);
119     friendListView->addWidget(item3);
120     friendListView->addWidget(item4);
121     friendListView->addWidget(item5);
122     friendListView->addWidget(item6);
123 //    friendListView->addWidget(new QPushButton("Hep", this));
124
125     QScrollArea *friendListScroll = new QScrollArea();
126     friendListScroll->setWidget(friendListView);
127     friendListScroll->setWidgetResizable(true);
128     //DEBUG
129
130
131     m_arrowbutton = new Pixmap(QPixmap(":/res/images/arrow_right.png"));
132
133     m_personalInfo = new InfoTab;
134     m_personalInfo->setAvatar(QPixmap(":/res/images/facebook_user_64.png"));
135     m_personalInfo->setUserName("Fred Facebook");
136     m_personalInfo->setMessageText("Hello Maemo Situare !");
137     m_personalInfo->setTime("1 hour ago");
138     m_personalInfo->setAddress("Kiviharjunlenkki 1E, 91910 Oulu");
139
140
141     m_widgetProxy = new QGraphicsProxyWidget();
142     m_widgetProxy->setWidget(m_personalInfo);
143
144     QGraphicsScene *scene= new QGraphicsScene(this);
145     scene->setBackgroundBrush(Qt::white);    
146     scene->addItem(m_widgetProxy);
147     scene->addItem(m_arrowbutton);
148     qDebug() << "Scene width: " << scene->width();
149     qDebug() << "Scene heigth: " << scene->height();
150
151     QGraphicsView *view = new QGraphicsView(scene);
152     view->setAlignment(Qt::AlignLeft|Qt::AlignTop);
153     view->setSceneRect(0,0,7000,3000);
154     view->centerOn(QPointF(0,0));
155     view->setFrameStyle(0);
156     view->setAlignment(Qt::AlignLeft | Qt::AlignTop);
157     view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
158     view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
159     view->setBackgroundBrush(Qt::white);
160
161
162     QStateMachine *machine = new QStateMachine(this);
163     machine->setGlobalRestorePolicy(QStateMachine::RestoreProperties);
164
165     QState *state1 = new QState(machine);
166     QState *state2 = new QState(machine);
167     machine->setInitialState(state1);
168
169     // State 1
170     state1->assignProperty(m_widgetProxy,"pos",QPointF(-(m_personalInfo->width()),0));
171     state1->assignProperty(m_arrowbutton,"pos",QPointF(0,(m_personalInfo->height()/4)));
172
173     // State 2
174     state2->assignProperty(m_widgetProxy,"pos",QPointF(0,0));
175     state2->assignProperty(m_arrowbutton,"pos",QPointF((m_personalInfo->width()),(m_personalInfo->height()/4)));
176
177     m_trans1 = state1->addTransition(m_arrowbutton,SIGNAL(clicked()),state2);
178     m_anim1 = new QPropertyAnimation(m_widgetProxy,"pos");
179     m_anim2 = new QPropertyAnimation(m_arrowbutton,"pos");
180     m_trans1->addAnimation(m_anim1);
181     m_trans1->addAnimation(m_anim2);
182
183     m_trans2 = state2->addTransition(m_arrowbutton,SIGNAL(clicked()),state1);
184     m_anim3= new QPropertyAnimation(m_widgetProxy,"pos");
185     m_anim4= new QPropertyAnimation(m_arrowbutton,"pos");
186     m_trans2->addAnimation(m_anim3);
187     m_trans2->addAnimation(m_anim4);
188
189     machine->start();
190
191     m_vbox = new QVBoxLayout(this);
192 //    m_vbox->addWidget(view);
193     //DEBUG
194     //m_vbox->addWidget(friendListView);
195     m_vbox->addWidget(friendListScroll);
196     //DEBUG
197     m_vbox->setMargin(0);
198
199     //connect(m_personalInfo,SIGNAL(launchMessageUpdate()),this,SLOT(updateMessage()));
200 }
201
202 ListViewScreen::~ListViewScreen()
203 {
204     if (m_personalInfo)
205         delete m_personalInfo;
206     if (m_arrowbutton)
207         delete m_arrowbutton;
208     if (m_trans1)
209         delete m_trans1;
210     if (m_trans2)
211         delete m_trans2;
212     if (m_anim1)
213         delete m_anim1;
214     if (m_anim2)
215         delete m_anim2;
216     if (m_anim3)
217         delete m_anim3;
218     if (m_anim4)
219         delete m_anim4;
220     if (m_vbox)
221         delete m_vbox;
222 }
223
224 void ListViewScreen::updateMessage()
225 {
226    qDebug() << __PRETTY_FUNCTION__;
227 //   m_locationDialog->exec();
228 }