Merge branch 'friendlist' into integration
[situare] / src / ui / listviewscreen.cpp
index 1d47711..50cb67e 100644 (file)
@@ -4,6 +4,7 @@
 
       Kaj Wallin - kaj.wallin@ixonos.com
       Jukka Saastamoinen jukka.saastamoinen@ixonos.com
+      Jussi Laitinen jussi.laitinen@ixonos.com
 
    Situare is free software; you can redistribute it and/or
    modify it under the terms of the GNU General Public License
 #include <QtGui/QVBoxLayout>
 #include <QGraphicsProxyWidget>
 #include <QStateMachine>
+#include <QtGui/QGraphicsTransform>
+#include <QtGui/QGraphicsRotation>
+#include <QDebug>
+#include <QScrollArea>
+
 #include "listviewscreen.h"
+#include "friendlistview.h"
+#include "friendlistitem.h"
+#include "user/user.h"
 #include "situareuser.h"
-#include <QDebug>
-#include <QGraphicsRotation>
+#include "mainwindow.h"
+
+const int INFOTAB_Y_LOC_STATE1 = 71;
+const int INFOTAB_X_LOC_STATE2 = 59;
+const int INFOTAB_Y_LOC_STATE2 = 71;
+const int LEFTBAR_X_LOC = 0;
+const int LEFTBAR_Y_LOC = 0;
+const int SLIDING_BAR_X_LOC_STATE1 = 0;
+const int SLIDING_BAR_Y_LOC_STATE1 = 0;
+const int BACKGROUND_X_LOC_STATE1 = 400;
+const int BACKGROUND_Y_LOC_STATE1 = 0;
+const int RIGHTARROW_X_LOC_STATE1 = 9;
+const int RIGHTARROW_Y_LOC_STATE1 = 205;
+const int LEFTARROW_X_LOC_STATE1 = 9;
+const int LEFTARROW_Y_LOC_STATE1 = 205;
+const int PROXYWIDGET_X_LOC_STATE1 = 59;
+const int PROXYWIDGET_Y_LOC_STATE1 = 71;
+const int SLIDING_BAR_X_LOC_STATE2 = 376;
+const int SLIDING_BAR_Y_LOC_STATE2 = 0;
+const int BACKGROUND_X_LOC_STATE2 = 0;
+const int BACKGROUND_Y_LOC_STATE2 = 0;
+const int RIGHTARROW_X_LOC_STATE2 = 385;
+const int RIGHTARROW_Y_LOC_STATE2 = 205;
+const int LEFTARROW_X_LOC_STATE2 = 385;
+const int LEFTARROW_Y_LOC_STATE2 = 205;
+const int PROXYWIDGET_X_LOC_STATE2 = 59;
+const int PROXYWIDGET_Y_LOC_STATE2 = 71;
 
 ListViewScreen::ListViewScreen(QWidget *parent)
     : QWidget(parent)
 {
+    //Friend list
+    m_friendListView = new FriendListView(this);
+    QScrollArea *friendListScroll = new QScrollArea();
+    friendListScroll->setWidget(m_friendListView);
+    friendListScroll->setWidgetResizable(true);
+    //Friend list
 
     m_leftSideBar = new Pixmap(QPixmap(":/res/images/side_bar_left.png"));
     m_slidingLeftSideBar = new Pixmap(QPixmap(":/res/images/sliding_bar_left.png"));
@@ -50,22 +90,29 @@ ListViewScreen::ListViewScreen(QWidget *parent)
     qDebug() << "InfoTab width: " << m_personalInfo->width();
     qDebug() << "InfoTab heigth: " << m_personalInfo->height();
 
-//    m_locationDialog = new UpdateLocationDialog(this);
+    m_locationDialog = new UpdateLocationDialog(this);
     m_widgetProxy = new QGraphicsProxyWidget();
     m_widgetProxy->setWidget(m_personalInfo);
 
     QGraphicsScene *scene= new QGraphicsScene(this);
-    scene->setBackgroundBrush(Qt::white);    
+    scene->setBackgroundBrush(Qt::black);
     scene->addItem(m_personalInfoBackGround);
     scene->addItem(m_widgetProxy);
     scene->addItem(m_leftSideBar);
     scene->addItem(m_slidingLeftSideBar);
     scene->addItem(m_arrowRight);
-    m_leftSideBar->setPos(0,0);
+    scene->addItem(m_arrowLeft);
 
-    QGraphicsRotation rotation(m_arrowRight);
-    rotation.setAxis(Qt::YAxis);
-    rotation.setOrigin(QVector3D(size().width()/2, size().height()/2, 0));
+    //Friend list
+    QGraphicsProxyWidget *scrollProxy = new QGraphicsProxyWidget();
+    scrollProxy->setWidget(friendListScroll);
+    scrollProxy->setZValue(m_personalInfoBackGround->zValue() - 3);
+    scrollProxy->setMinimumSize(790 - 400, 480 - 56);
+    scene->addItem(scrollProxy);
+    scrollProxy->setPos(410, 0);
+    //Friend list
+
+    m_leftSideBar->setPos(0,0);
 
     QGraphicsView *view = new QGraphicsView(scene);
     view->setAlignment(Qt::AlignLeft|Qt::AlignTop);
@@ -75,6 +122,8 @@ ListViewScreen::ListViewScreen(QWidget *parent)
     view->setAlignment(Qt::AlignLeft | Qt::AlignTop);
     view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+    view->setBackgroundBrush(Qt::black);
+
 
     QStateMachine *machine = new QStateMachine(this);
     machine->setGlobalRestorePolicy(QStateMachine::RestoreProperties);
@@ -84,84 +133,127 @@ ListViewScreen::ListViewScreen(QWidget *parent)
     machine->setInitialState(state1);
 
     // State 1
-    state1->assignProperty(m_widgetProxy,"pos",QPointF(-m_personalInfo->width(),71));
-    state1->assignProperty(m_slidingLeftSideBar,"pos",QPointF(0,0));
-    state1->assignProperty(m_personalInfoBackGround,"pos",QPointF(-400,0));
-    state1->assignProperty(m_arrowRight,"pos", QPointF(9,205));
+    state1->assignProperty(m_widgetProxy,"pos",QPointF(-m_personalInfo->width(),
+                                                       INFOTAB_Y_LOC_STATE1));
+    state1->assignProperty(m_slidingLeftSideBar,"pos",
+                           QPointF(SLIDING_BAR_X_LOC_STATE1,SLIDING_BAR_Y_LOC_STATE1));
+    state1->assignProperty(m_personalInfoBackGround,"pos",
+                           QPointF(-BACKGROUND_X_LOC_STATE1,BACKGROUND_Y_LOC_STATE1));
+    state1->assignProperty(m_arrowRight,"pos", QPointF(RIGHTARROW_X_LOC_STATE1,
+                                                       RIGHTARROW_Y_LOC_STATE1));
+    state1->assignProperty(m_arrowLeft,"pos", QPointF(LEFTARROW_X_LOC_STATE2,
+                                                      LEFTARROW_Y_LOC_STATE2));
+    state1->assignProperty(m_arrowRight,"visible", true);
+    state1->assignProperty(m_arrowLeft,"visible", false);
 
     // State 2
-    state2->assignProperty(m_widgetProxy,"pos",QPointF(59,71));
-    state2->assignProperty(m_slidingLeftSideBar,"pos",QPointF(376,0));
-    state2->assignProperty(m_personalInfoBackGround,"pos",QPointF(0,0));
-    state2->assignProperty(m_arrowRight,"pos", QPointF(385,205));
-    state2->assignProperty(m_arrowRight,"angle", 180);
+    state2->assignProperty(m_widgetProxy,"pos",QPointF(INFOTAB_X_LOC_STATE2,INFOTAB_Y_LOC_STATE2));
+    state2->assignProperty(m_slidingLeftSideBar,"pos",QPointF(SLIDING_BAR_X_LOC_STATE2,
+                                                              SLIDING_BAR_Y_LOC_STATE2));
+    state2->assignProperty(m_personalInfoBackGround,"pos",QPointF(BACKGROUND_X_LOC_STATE2,
+                                                                  BACKGROUND_Y_LOC_STATE2));
+    state2->assignProperty(m_arrowRight,"pos", QPointF(RIGHTARROW_X_LOC_STATE2,
+                                                       RIGHTARROW_Y_LOC_STATE2));
+    state2->assignProperty(m_arrowLeft,"pos", QPointF(LEFTARROW_X_LOC_STATE2,
+                                                      LEFTARROW_Y_LOC_STATE2));
+    state2->assignProperty(m_arrowRight,"visible", false);
+    state2->assignProperty(m_arrowLeft,"visible", true);
 
     m_trans1 = state1->addTransition(m_slidingLeftSideBar,SIGNAL(clicked()),state2);
     m_anim1 = new QPropertyAnimation(m_widgetProxy,"pos");
     m_anim2 = new QPropertyAnimation(m_slidingLeftSideBar,"pos");
-    m_anim5 = new QPropertyAnimation(m_personalInfoBackGround,"pos");
-    m_anim7 = new QPropertyAnimation(m_arrowRight,"pos");
+    m_anim3 = new QPropertyAnimation(m_personalInfoBackGround,"pos");
+    m_anim4 = new QPropertyAnimation(m_arrowRight,"pos");
+    m_anim5 = new QPropertyAnimation(m_arrowLeft,"pos");
+    m_anim6 = new QPropertyAnimation(m_arrowRight,"visible");
+    m_anim7 = new QPropertyAnimation(m_arrowLeft,"visible");
     m_trans1->addAnimation(m_anim1);
     m_trans1->addAnimation(m_anim2);
+    m_trans1->addAnimation(m_anim3);
+    m_trans1->addAnimation(m_anim4);
     m_trans1->addAnimation(m_anim5);
+    m_trans1->addAnimation(m_anim6);
     m_trans1->addAnimation(m_anim7);
 
     m_trans2 = state2->addTransition(m_slidingLeftSideBar,SIGNAL(clicked()),state1);
-    m_anim3 = new QPropertyAnimation(m_widgetProxy,"pos");
-    m_anim4 = new QPropertyAnimation(m_slidingLeftSideBar,"pos");
-    m_anim6 = new QPropertyAnimation(m_personalInfoBackGround,"pos");
-    m_anim8 = new QPropertyAnimation(m_arrowRight,"pos");
-    m_anim9 = new QPropertyAnimation(&rotation,"angle");
-    m_trans2->addAnimation(m_anim3);
-    m_trans2->addAnimation(m_anim4);
-    m_trans2->addAnimation(m_anim6);
+    m_anim8 = new QPropertyAnimation(m_widgetProxy,"pos");
+    m_anim9 = new QPropertyAnimation(m_slidingLeftSideBar,"pos");
+    m_anim10 = new QPropertyAnimation(m_personalInfoBackGround,"pos");
+    m_anim11 = new QPropertyAnimation(m_arrowRight,"pos");
+    m_anim12 = new QPropertyAnimation(m_arrowLeft,"pos");
+    m_anim13 = new QPropertyAnimation(m_arrowRight,"visible");
+    m_anim14 = new QPropertyAnimation(m_arrowLeft,"visible");
     m_trans2->addAnimation(m_anim8);
     m_trans2->addAnimation(m_anim9);
+    m_trans2->addAnimation(m_anim10);
+    m_trans2->addAnimation(m_anim11);
+    m_trans2->addAnimation(m_anim12);
+    m_trans2->addAnimation(m_anim13);
+    m_trans2->addAnimation(m_anim14);
     machine->start();
 
     m_vbox = new QVBoxLayout(this);
     m_vbox->addWidget(view);
     m_vbox->setMargin(0);
 
+    connect(m_personalInfo,SIGNAL(launchMessageUpdate()),
+            this,SIGNAL(launchUpdateDialog()));
+    connect(m_personalInfo,SIGNAL(launchUpdateFriendsStatus()),
+            this, SIGNAL(updateFriendsData()));
     setObjectName("List view");
-
-    //connect(m_personalInfo,SIGNAL(launchMessageUpdate()),this,SLOT(updateMessage()));
 }
 
 ListViewScreen::~ListViewScreen()
 {
-    if (m_personalInfo)
-        delete m_personalInfo;
-    if (m_leftSideBar)
-        delete m_leftSideBar;
-    if (m_slidingLeftSideBar)
-        delete m_slidingLeftSideBar;
-    if (m_trans1)
-        delete m_trans1;
-    if (m_trans2)
-        delete m_trans2;
-    if (m_anim1)
-        delete m_anim1;
-    if (m_anim2)
-        delete m_anim2;
-    if (m_anim3)
-        delete m_anim3;
-    if (m_anim4)
-        delete m_anim4;
-    if (m_anim5)
-        delete m_anim5;
-    if (m_anim6)
-        delete m_anim6;
-    if (m_anim7)
-        delete m_anim7;
-    if (m_anim8)
-        delete m_anim8;
-    if (m_vbox)
-        delete m_vbox;
+    delete m_personalInfo;
+    delete m_leftSideBar;
+    delete m_slidingLeftSideBar;
+    delete m_personalInfoBackGround;
+    delete m_arrowLeft;
+    delete m_arrowRight;
+    delete m_trans1;
+    delete m_trans2;
+    delete m_anim1;
+    delete m_anim2;
+    delete m_anim3;
+    delete m_anim4;
+    delete m_anim5;
+    delete m_anim6;
+    delete m_anim7;
+    delete m_anim8;
+    delete m_anim9;
+    delete m_anim10;
+    delete m_anim11;
+    delete m_anim12;
+    delete m_anim13;
+    delete m_anim14;
+    delete m_vbox;
 }
 
-void ListViewScreen::updateMessage()
+void ListViewScreen::userDataReceived(User *user)
 {
-   qDebug() << __PRETTY_FUNCTION__;
-//   m_locationDialog->exec();
+    qDebug() << __PRETTY_FUNCTION__;
+
+    m_personalInfo->setUserName(user->name());
+    m_personalInfo->setAvatar(user->profileImage());
+    m_personalInfo->setMessageText(user->note());
+    m_personalInfo->setAddress(user->address());
+    m_personalInfo->setTime(user->timestamp());
+
+    emit toggleProgressIndicator(false);
+}
+
+void ListViewScreen::friendInfoReceived(QList<User *> &friendList)
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    m_friendListView->clear();
+
+    foreach (User *user, friendList) {
+        FriendListItem *item = new FriendListItem(m_friendListView);
+        item->setData(user);
+        m_friendListView->addWidget(item);
+    }
+
+    emit toggleProgressIndicator(false);
 }