From 4b879be4ea18262655d17f331c89409a5f38c0c3 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 27 Apr 2023 16:58:52 +0000 Subject: [PATCH] MessageEventModel plain text role Update the message role to be named plainText and use it the message delegate for openMessageContext. This removes the need for plainText in controller so it is removed. --- src/controller.cpp | 5 ----- src/controller.h | 8 -------- src/models/messageeventmodel.cpp | 4 ++-- src/models/messageeventmodel.h | 2 +- src/qml/Component/Timeline/LocationDelegate.qml | 4 ++-- src/qml/Component/Timeline/MessageDelegate.qml | 2 +- 6 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/controller.cpp b/src/controller.cpp index 499acc1f3..de5e8d4da 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -670,11 +670,6 @@ bool Controller::hasWindowSystem() const #endif } -QString Controller::plainText(QQuickTextDocument *document) const -{ - return document->textDocument()->toPlainText(); -} - bool Controller::encryptionSupported() const { #ifdef QUOTIENT_07 diff --git a/src/controller.h b/src/controller.h index 051a5dc7d..27e6893d3 100644 --- a/src/controller.h +++ b/src/controller.h @@ -207,14 +207,6 @@ public: */ Q_INVOKABLE QString formatByteSize(double size, int precision = 1) const; - /** - * @brief Return a plain text representation of the text in a given QQuickTextDocument. - * - * TODO: This is only used in messageDelegate to get the plain text of a message. - * This should be changed to a role in messageeventmodel via texthandler. - */ - Q_INVOKABLE QString plainText(QQuickTextDocument *document) const; - /** * @brief Force a QQuickTextDocument to refresh when images are loaded. * diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp index fad52e7b5..56df89982 100644 --- a/src/models/messageeventmodel.cpp +++ b/src/models/messageeventmodel.cpp @@ -34,7 +34,7 @@ QHash MessageEventModel::roleNames() const { QHash roles = QAbstractItemModel::roleNames(); roles[DelegateTypeRole] = "delegateType"; - roles[MessageRole] = "message"; + roles[PlainText] = "plainText"; roles[EventIdRole] = "eventId"; roles[TimeRole] = "time"; roles[SectionRole] = "section"; @@ -493,7 +493,7 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const return {}; } - if (role == MessageRole) { + if (role == PlainText) { return m_currentRoom->eventToString(evt); } diff --git a/src/models/messageeventmodel.h b/src/models/messageeventmodel.h index e6cd971d2..e5a18b2e7 100644 --- a/src/models/messageeventmodel.h +++ b/src/models/messageeventmodel.h @@ -58,7 +58,7 @@ public: */ enum EventRoles { DelegateTypeRole = Qt::UserRole + 1, /**< The delegate type of the message. */ - MessageRole, /**< Plain text representation of the message. */ + PlainText, /**< Plain text representation of the message. */ EventIdRole, /**< The matrix event ID of the event. */ TimeRole, /**< The timestamp for when the event was sent. */ SectionRole, /**< The date of the event as a string. */ diff --git a/src/qml/Component/Timeline/LocationDelegate.qml b/src/qml/Component/Timeline/LocationDelegate.qml index 3501550b0..6481e5a00 100644 --- a/src/qml/Component/Timeline/LocationDelegate.qml +++ b/src/qml/Component/Timeline/LocationDelegate.qml @@ -79,11 +79,11 @@ TimelineContainer { TapHandler { acceptedButtons: Qt.LeftButton - onLongPressed: openMessageContext(model, "", model.message) + onLongPressed: openMessageContext(model, "", model.plainText) } TapHandler { acceptedButtons: Qt.RightButton - onTapped: openMessageContext(model, "", model.message) + onTapped: openMessageContext(model, "", model.plainText) } } } diff --git a/src/qml/Component/Timeline/MessageDelegate.qml b/src/qml/Component/Timeline/MessageDelegate.qml index 52b4849d3..6dd0f1dc0 100644 --- a/src/qml/Component/Timeline/MessageDelegate.qml +++ b/src/qml/Component/Timeline/MessageDelegate.qml @@ -13,7 +13,7 @@ import org.kde.neochat 1.0 TimelineContainer { id: messageDelegate - onOpenContextMenu: openMessageContext(model, label.selectedText, Controller.plainText(label.textDocument)) + onOpenContextMenu: openMessageContext(model, label.selectedText, model.plainText) innerObject: ColumnLayout { Layout.maximumWidth: messageDelegate.contentMaxWidth