#include "messagesearchresultsmodel.h" MessageSearchResultsModel::MessageSearchResultsModel() { } void MessageSearchResultsModel::clear() { beginResetModel(); mElements.clear(); endResetModel(); } int MessageSearchResultsModel::rowCount(const QModelIndex &parent) const { Q_UNUSED(parent) return mElements.length(); } QVariant MessageSearchResultsModel::data(const QModelIndex &index, int role) const { QSharedPointer<RocketChatMessage> message; if(mElements.size()){ message = mElements.at(index.row()); }else{ return QVariant(); } if(role == text){ return message->getMessageString(); }else if(role == author){ return message->getAuthor(); }else if(role == authorId){ return message->getAuthorId(); }else if(role == linkurl){ if ( !message->getAttachments().empty() ) { return message->getAttachments().first()->getUrl(); } else { qWarning() << "linkurl not found"; } }else if(role == type){ return message->getMessageType(); }else if(role == date){ return message->getFormattedDate(); }else if(role == time){ return message->getFormattedTime(); }else if(role == ownMessage){ return message->getOwnMessage(); }else if(role == height){ if ( !message->getAttachments().empty() ) { return message->getAttachments().first()->getHeight(); } else { qWarning() << "height not found"; } }else if(role == width){ if ( !message->getAttachments().empty() ) { return message->getAttachments().first()->getWidth(); } else { qWarning() << "height not found"; } }else if(role == formattedDate){ return message->getFormattedDate(); }else if(role == formattedTime){ return message->getFormattedTime(); }else if(role == messageType){ return message->getMessageType(); }else if(role == blocked){ return false; }else if(role == id){ return message->getId(); }else if(role == rid){ return message->getRoomId(); }else if(role == timestamp){ return message->getTimestamp(); } } QHash<int, QByteArray> MessageSearchResultsModel::roleNames() const { QHash<int, QByteArray> roles; roles[text] = QByteArrayLiteral( "msg" ); roles[author] = QByteArrayLiteral( "author" ); roles[authorId] = QByteArrayLiteral( "authorId" ); roles[linkurl] = QByteArrayLiteral( "linkurl" ); roles[type] = QByteArrayLiteral( "type" ); roles[date] = QByteArrayLiteral( "date" ); roles[time] = QByteArrayLiteral( "time" ); roles[ownMessage] = QByteArrayLiteral( "ownMessage" ); roles[height] = QByteArrayLiteral( "height" ); roles[width ] = QByteArrayLiteral( "width" ); roles[formattedDate ] = QByteArrayLiteral( "formattedDate" ); roles[formattedTime] = QByteArrayLiteral( "formattedTime" ); roles[messageType] = QByteArrayLiteral( "messageType" ); roles[blocked] = QByteArrayLiteral( "blocked" ); roles[id] = QByteArrayLiteral( "id" ); roles[rid] = QByteArrayLiteral("rid"); roles[timestamp] = QByteArrayLiteral("timestamp"); return roles; } void MessageSearchResultsModel::setSearchResults(MessageList pResults) { beginResetModel(); mElements.clear(); mElements << pResults; endResetModel(); } int MessageSearchResultsModel::getPositionOfMessage(const QString &pId) { int pos = -1; for(int i=0; i<mElements.size();i++){ auto element = mElements.at(i); if(element->getId()==pId){ pos = i; break; } } return pos; }