Advertisement
Guest User

Untitled

a guest
Aug 17th, 2012
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.36 KB | None | 0 0
  1. #include "messagespage.h"
  2. #include "mainpage.h"
  3.  
  4. MessagesPage::MessagesPage(QGraphicsItem *parent) :
  5.     ApplicationPage(parent)
  6. {
  7.     createContent();
  8. }
  9.  
  10. void MessagesPage::createContent()
  11. {
  12.     MApplicationPage::createContent();
  13.  
  14.     setStyleName(inv("CommonApplicationPage", MainPage::invertedUi()));
  15.  
  16.     // Create list
  17.     m_model = new FacebookObjectModel(this);
  18.  
  19.     m_messagesList = new MList(this);
  20.     connect(m_messagesList, SIGNAL(itemClicked(QModelIndex)), this, SLOT(onMessageClicked(QModelIndex)));
  21.     m_messagesList->setItemModel(m_model);
  22.     m_messagesList->setCellCreator(new ListItemCreator);
  23.  
  24.     QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical, centralWidget());
  25.     mainLayout->addItem(m_messagesList);
  26.  
  27.     // Create toolbar
  28.     QString iconName = "icon-m-toolbar-refresh";
  29.     if (MainPage::invertedUi())
  30.         iconName.append("-white");
  31.     MAction *refreshButton = new MAction(iconName, "", this);
  32.     refreshButton->setLocation(MAction::ToolBarLocation);
  33.     connect(refreshButton, SIGNAL(triggered()), this, SLOT(refresh()));
  34.     addAction(refreshButton);
  35.  
  36.     refresh();
  37. }
  38.  
  39. void MessagesPage::refresh()
  40. {
  41.     setProgressIndicatorVisible(true);
  42.     m_messagesReply = FacebookSession::instance()->QFBInstance()->getConnections("me", "inbox");
  43.     if (m_messagesReply)
  44.         connect(m_messagesReply, SIGNAL(finished()), this, SLOT(onReplyReceived()));
  45. }
  46.  
  47. void MessagesPage::onReplyReceived()
  48. {
  49.     setProgressIndicatorVisible(false);
  50.  
  51.     if (m_messagesReply->error() != QNetworkReply::NoError) {
  52.         qDebug() << Q_FUNC_INFO << "Error loading messages!";
  53.         qDebug() << m_messagesReply->data();
  54.         m_messagesReply->deleteLater();
  55.         return;
  56.     }
  57.  
  58.     QVariant jsonData = m_messagesReply->data();
  59.     m_messagesReply->deleteLater();
  60.     QVariantList listData;
  61.     listData = jsonData.toMap().value("data").toList();
  62.  
  63.     foreach(jsonData, listData) {
  64.         QString id = jsonData.toMap().value("id").toString();
  65.  
  66.         QList<FacebookUser> to;
  67.         QVariantList toList = jsonData.toMap().value("to").toMap().value("data").toList();
  68.         foreach (QVariant toUser, toList) {
  69.             if (toUser.toMap().value("id").toString() == FacebookSession::instance()->userId()) {
  70.                 continue;
  71.             } else {
  72.                 FacebookUser user;
  73.                 user.name = toUser.toMap().value("name").toString();
  74.                 user.id = toUser.toMap().value("id").toString();
  75.                 to.append(user);
  76.             }
  77.         }
  78.  
  79.         int unreadCount = jsonData.toMap().value("unread").toInt();
  80.         QVariantList messages = jsonData.toMap().value("comments").toMap().value("data").toList();
  81.         QString latestMessage = messages.last().toMap().value("message").toString();
  82.         QDateTime t = QDateTime::fromString(jsonData.toMap().value("updated_time").toString(), Qt::ISODate);
  83.  
  84.         FacebookObject *object = new FacebookObject(this, true);
  85.         object->setName(to.first().name);
  86.         object->setId(id);
  87.         object->setImage(QUrl(QString("https://graph.facebook.com/%1/picture?type=normal&access_token=").arg(id) + FacebookSession::instance()->accessToken()));
  88.         object->setTimestamp(t.toString("hh:mm"));
  89.         m_model->appendObject(object);
  90.     }
  91. }
  92.  
  93. void MessagesPage::onMessageClicked(QModelIndex)
  94. {
  95.  
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement