Modified FriendListItem constructor.
[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
46     User user1(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 1"),
47                QString("Hello Maemo Situare!"), QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago" \
48                " 2 days ago 2 days ago 2 days ago"), false, QString(),
49                QString(), 12.2);
50     User user2(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 2"),
51                QString("Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare!"),
52                QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago"), false, QString(),
53                QString(), 12.2);
54     User user3(QString("Kiviharjunlenkki 1E, 91910 Oulu"), QPointF(25.5, 65), QString("User 2"),
55                QString("Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare!" \
56                        "Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare! " \
57                        "Hello Maemo Situare! Hello Maemo Situare! Hello Maemo Situare! "),
58                QUrl("http://static.ak.fbcdn.net/pics/q_silhouette.gif"), QString("2 days ago"), false, QString(),
59                QString(), 12.2);
60     FriendListItem *item1 = new FriendListItem(friendListView);
61     item1->setData(user1);
62     FriendListItem *item2 = new FriendListItem(friendListView);
63     item2->setData(user1);
64     FriendListItem *item3 = new FriendListItem(friendListView);
65     item3->setData(user1);
66     FriendListItem *item4 = new FriendListItem(friendListView);
67     item4->setData(user2);
68     FriendListItem *item5 = new FriendListItem(friendListView);
69     item5->setData(user3);
70     FriendListItem *item6 = new FriendListItem(friendListView);
71     item6->setData(user1);
72
73     friendListView->addWidget(item1);
74     friendListView->addWidget(item2);
75     friendListView->addWidget(item3);
76     friendListView->addWidget(item4);
77     friendListView->addWidget(item5);
78     friendListView->addWidget(item6);
79 //    friendListView->addWidget(new QPushButton("Hep", this));
80
81     QScrollArea *friendListScroll = new QScrollArea();
82     friendListScroll->setWidget(friendListView);
83     friendListScroll->setWidgetResizable(true);
84     //DEBUG
85
86
87     m_arrowbutton = new Pixmap(QPixmap(":/res/images/arrow_right.png"));
88
89     m_personalInfo = new InfoTab;
90     m_personalInfo->setAvatar(QPixmap(":/res/images/facebook_user_64.png"));
91     m_personalInfo->setUserName("Fred Facebook");
92     m_personalInfo->setMessageText("Hello Maemo Situare !");
93     m_personalInfo->setTime("1 hour ago");
94     m_personalInfo->setAddress("Kiviharjunlenkki 1E, 91910 Oulu");
95
96
97     m_widgetProxy = new QGraphicsProxyWidget();
98     m_widgetProxy->setWidget(m_personalInfo);
99
100     QGraphicsScene *scene= new QGraphicsScene(this);
101     scene->setBackgroundBrush(Qt::white);    
102     scene->addItem(m_widgetProxy);
103     scene->addItem(m_arrowbutton);
104     qDebug() << "Scene width: " << scene->width();
105     qDebug() << "Scene heigth: " << scene->height();
106
107     QGraphicsView *view = new QGraphicsView(scene);
108     view->setAlignment(Qt::AlignLeft|Qt::AlignTop);
109     view->setSceneRect(0,0,7000,3000);
110     view->centerOn(QPointF(0,0));
111     view->setFrameStyle(0);
112     view->setAlignment(Qt::AlignLeft | Qt::AlignTop);
113     view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
114     view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
115     view->setBackgroundBrush(Qt::white);
116
117
118     QStateMachine *machine = new QStateMachine(this);
119     machine->setGlobalRestorePolicy(QStateMachine::RestoreProperties);
120
121     QState *state1 = new QState(machine);
122     QState *state2 = new QState(machine);
123     machine->setInitialState(state1);
124
125     // State 1
126     state1->assignProperty(m_widgetProxy,"pos",QPointF(-(m_personalInfo->width()),0));
127     state1->assignProperty(m_arrowbutton,"pos",QPointF(0,(m_personalInfo->height()/4)));
128
129     // State 2
130     state2->assignProperty(m_widgetProxy,"pos",QPointF(0,0));
131     state2->assignProperty(m_arrowbutton,"pos",QPointF((m_personalInfo->width()),(m_personalInfo->height()/4)));
132
133     m_trans1 = state1->addTransition(m_arrowbutton,SIGNAL(clicked()),state2);
134     m_anim1 = new QPropertyAnimation(m_widgetProxy,"pos");
135     m_anim2 = new QPropertyAnimation(m_arrowbutton,"pos");
136     m_trans1->addAnimation(m_anim1);
137     m_trans1->addAnimation(m_anim2);
138
139     m_trans2 = state2->addTransition(m_arrowbutton,SIGNAL(clicked()),state1);
140     m_anim3= new QPropertyAnimation(m_widgetProxy,"pos");
141     m_anim4= new QPropertyAnimation(m_arrowbutton,"pos");
142     m_trans2->addAnimation(m_anim3);
143     m_trans2->addAnimation(m_anim4);
144
145     machine->start();
146
147     m_vbox = new QVBoxLayout(this);
148 //    m_vbox->addWidget(view);
149     //DEBUG
150     //m_vbox->addWidget(friendListView);
151     m_vbox->addWidget(friendListScroll);
152     //DEBUG
153     m_vbox->setMargin(0);
154
155     //connect(m_personalInfo,SIGNAL(launchMessageUpdate()),this,SLOT(updateMessage()));
156 }
157
158 ListViewScreen::~ListViewScreen()
159 {
160     if (m_personalInfo)
161         delete m_personalInfo;
162     if (m_arrowbutton)
163         delete m_arrowbutton;
164     if (m_trans1)
165         delete m_trans1;
166     if (m_trans2)
167         delete m_trans2;
168     if (m_anim1)
169         delete m_anim1;
170     if (m_anim2)
171         delete m_anim2;
172     if (m_anim3)
173         delete m_anim3;
174     if (m_anim4)
175         delete m_anim4;
176     if (m_vbox)
177         delete m_vbox;
178 }
179
180 void ListViewScreen::updateMessage()
181 {
182    qDebug() << __PRETTY_FUNCTION__;
183 //   m_locationDialog->exec();
184 }