//---dialog---
void MainWindow::loadDialogToListItem(Message const &dialog,
                                      QListWidgetItem *listItem)
{

    QString name(vkLogic->storage->getFullName(dialog.user_id)),
            lastMessage(dialog.body);

    if (dialog.isMultiDialog)
        name.prepend(dialog.title + "\n");


    if (dialog.out)
        lastMessage.prepend(tr("You: "));

    int profileID;
    if (dialog.isMultiDialog)
        profileID = dialog.chat_id;
    else
        profileID = dialog.user_id;

    qDebug() << "Adding dialogitem with" << name;

    listItem->setData(Qt::DecorationRole,
                      vkLogic->getAvatar(profileID));
    listItem->setData(DialogDelegate::NAME_ROLE, name);
    listItem->setData(DialogDelegate::LAST_MESSAGE_ROLE, lastMessage);
    listItem->setData(DialogDelegate::PROFILE_ID_ROLE, profileID);
    listItem->setData(DialogDelegate::READ_STATE_ROLE, dialog.read_state);
}
Esempio n. 2
0
QVariant ChatItem::data(int role) const
{
  QList<QVariant> qvl;
  qvl.clear();
  switch(role) {
  case NameRole:
    return name();
  case MessagesRole:
      return QVariant(&m_messages); //it doesnt work
  case TextRole:
      for(int i=0;m_messages->size()>i;i++){
          qWarning() << qobject_cast<MessageItem*>(m_messages->at(i))->text();
          qvl.append(qobject_cast<MessageItem*>(m_messages->at(i))->text());
      }
      return qvl; //it doesnt work
  case PeerRole:
      for(int i=0;m_messages->size()>i;i++){
          qWarning() << qobject_cast<MessageItem*>(m_messages->at(i))->peer();
          qvl.append(qobject_cast<MessageItem*>(m_messages->at(i))->peer());
      }
      return qvl; //it doesnt work
  case CountRole:
      return QVariant(m_messages->count()); //it doesnt work
  case LastRole:
    return lastMessage();
  default:
    return QVariant();
  }
}
 bool XMPPTestCommand::executeCommand(QStringList * const arguments)
 {
     bool ret = false;
     if (arguments->length() < 2)
     {
         this->client->write(tr("ERROR: xmppTest <resource> <field> <optional: value>")
                             + "\r\n");
     }
     else
     {
         QXmppClient * const client =
                 XMPPResourceStore::instance()->getFromStore(arguments->first());
         arguments->removeFirst();
         if (client)
         {
             QSharedPointer<QXmppStanza> lastStanza(NULL);
             if (arguments->first() == "tx")
             {
                 arguments->removeFirst();
                 lastStanza = XMPPResourceStore::instance()->getLastMessageSent(client);
             }
             else
             {
                 lastStanza = XMPPResourceStore::instance()->getLastMessageReceived(client);
             }
             QSharedPointer<QXmppMessage> lastMessage(NULL);
             if (lastStanza)
             {
                 lastMessage
                         = lastStanza.dynamicCast<QXmppMessage>();
             }
             if (lastMessage)
             {
                 bool propertyOk = true;
                 const QString property = arguments->first();
                 arguments->removeFirst();
                 QVariant value;
                 // I tried to make this use reflection.
                 // It didn't work - might use reflection on function calls later
                 if (property == "body")
                 {
                     value = lastMessage->body();
                 }
                 else if (property == "attentionRequired")
                 {
                     value = lastMessage->isAttentionRequested();
                 }
                 else if (property == "mucInvitationJid")
                 {
                     value = lastMessage->mucInvitationJid();
                 }
                 else if (property == "mucInvitationPassword")
                 {
                     value = lastMessage->mucInvitationPassword();
                 }
                 else if (property == "mucInvitationReason")
                 {
                     value = lastMessage->mucInvitationReason();
                 }
                 else if (property == "receiptId")
                 {
                     value = lastMessage->receiptId();
                 }
                 else if (property == "stamp")
                 {
                     value = lastMessage->stamp();
                 }
                 else if (property == "state")
                 {
                     value = lastMessage->state();
                 }
                 else if (property == "subject")
                 {
                     value = lastMessage->subject();
                 }
                 else if (property == "thread")
                 {
                     value = lastMessage->thread();
                 }
                 else if (property == "type")
                 {
                     value = lastMessage->type();
                 }
                 else if (property == "hasForward")
                 {
                     value = lastMessage->hasForwarded();
                 }
                 else if (property == "forwardBody")
                 {
                     value = lastMessage->forwarded().body();
                 }
                 else if (property == "hasCarbon")
                 {
                     value = lastMessage->hasMessageCarbon();
                 }
                 else if (property == "carbonBody")
                 {
                     value = lastMessage->carbonMessage().body();
                 }
                 else if (property == "markable")
                 {
                     value = lastMessage->isMarkable();
                 }
                 else if (property == "marker")
                 {
                     value = lastMessage->marker();
                 }
                 else if (property == "markedId")
                 {
                     value = lastMessage->markedId();
                 }
                 else if (property == "markedThread")
                 {
                     value = lastMessage->markedThread();
                 }
                 else if (property == "isReplace")
                 {
                     value = lastMessage->isReplace();
                 }
                 else if (property == "replaceId")
                 {
                     value = lastMessage->replaceId();
                 }
                 else if (property == "from")
                 {
                     value = lastMessage->from();
                 }
                 else if (property == "to")
                 {
                     value = lastMessage->to();
                 }
                 else
                 {
                     propertyOk = false;
                 }
                 if (propertyOk)
                 {
                     QVariant expectedValue;
                     if (arguments->isEmpty())
                     {
                         ret = value.isNull() or not value.isValid();
                     }
                     else
                     {
                         const QString expected = arguments->join(" ");
                         ret = (value.toString() == expected);
                         expectedValue = expected;
                     }
                     if (not ret)
                     {
                         QString buffer = tr("ERROR: Value is {");
                         buffer += value.toString();
                         buffer += tr("} but expected {");
                         buffer += expectedValue.toString();
                         buffer += tr("}") + "\r\n";
                         this->client->write(buffer);
                     }
                 }
                 else
                 {
                     this->client->write(tr("ERROR: Unknown property") + "\r\n");
                 }
             }
             else
             {
                 this->client->write(tr("ERROR: Couldn't find the last received message")
                                     + "\r\n");
             }
         }
         else
         {
             this->client->write(tr("ERROR: Unknown resource") + "\r\n");
         }
     }
     return ret;
 }