diff --git a/tools/chatgui/src/messagedelegate.h b/tools/chatgui/src/messagedelegate.h index 18ed0f10..5d2bc989 100644 --- a/tools/chatgui/src/messagedelegate.h +++ b/tools/chatgui/src/messagedelegate.h @@ -51,6 +51,7 @@ enum MessageDataRole { MsgReplyToRole = Qt::UserRole + 40, MsgHighlightRole = Qt::UserRole + 41, MsgEncryptedRole = Qt::UserRole + 42, + MsgVersionRole = Qt::UserRole + 43, }; class MessageDelegate : public QStyledItemDelegate { diff --git a/tools/chatgui/src/messagefeedback.cpp b/tools/chatgui/src/messagefeedback.cpp index fb834d43..243decec 100644 --- a/tools/chatgui/src/messagefeedback.cpp +++ b/tools/chatgui/src/messagefeedback.cpp @@ -95,6 +95,15 @@ void MessageList::sendFeedback(QJsonObject command, bool userAction) { void MessageList::setupFeedback(QStandardItem* item, const MessageRow& message, const QString& channel) { item->setData(QString::fromLatin1(message.messageId.toHex()), MsgMessageKeyRole); item->setData(message.timestamp, MsgRawTimestampRole); item->setData(channel, MsgChannelIdRole); + item->setData(QVariant::fromValue(message.version), MsgVersionRole); + item->setData(message.editedAt > 0, MsgEditedRole); + QString time = QDateTime::fromMSecsSinceEpoch(message.timestamp).toString("HH:mm"); + if (message.editedAt > 0) { + const auto edited = QDateTime::fromMSecsSinceEpoch(message.editedAt); + const QString format = edited.date() == QDate::currentDate() ? "HH:mm" : "dd.MM.yyyy HH:mm"; + time += " · " + QCoreApplication::translate("ChatGui", "edited %1").arg(edited.toString(format)); + } + item->setData(time, MsgTimeRole); if (message.contentType == "poll") { struct chat_poll poll; QByteArray wire = QByteArray::fromBase64(message.data.mid(4), QByteArray::Base64UrlEncoding); diff --git a/tools/chatgui/src/messagelist.h b/tools/chatgui/src/messagelist.h index c1fbd88d..58f01c68 100644 --- a/tools/chatgui/src/messagelist.h +++ b/tools/chatgui/src/messagelist.h @@ -50,6 +50,7 @@ public: void onFeedbackChanged(const uint8_t* data, int len); void onFeedbackResult(const uint8_t* data, int len); void onMessageSubmitted(const uint8_t* data, int len); + void onMessageUpdated(const uint8_t* data, int len); void onAttachmentKeysChanged(const uint8_t* data, int len); void onRadioTalk(quint64 groupId, quint64 srcNodeId, bool on); /* индикация говорящего */ bool enableRadio(); /* идемпотентное включение рации выбранного канала, false при ошибке аудио */