Create a content provider instance to get message content models from

This means that all content models will now come from the same source to remove duplication across multiple models and `chatbarcaches`.

It also handily breaks the dependency on needing `MessageContentModel` for `NeochatRoom`
This commit is contained in:
James Graham
2025-04-04 08:42:34 +00:00
parent 123d11945e
commit 88eb2223c5
20 changed files with 222 additions and 140 deletions

View File

@@ -50,6 +50,22 @@ void MessageAttached::setTimeline(QQuickItem *timeline)
Q_EMIT timelineChanged();
}
MessageContentModel *MessageAttached::contentModel() const
{
return m_contentModel;
}
void MessageAttached::setContentModel(MessageContentModel *contentModel)
{
m_explicitContentModel = true;
if (m_contentModel == contentModel) {
return;
}
m_contentModel = contentModel;
propagateMessage(this);
Q_EMIT contentModelChanged();
}
int MessageAttached::index() const
{
return m_index;
@@ -126,6 +142,11 @@ void MessageAttached::propagateMessage(MessageAttached *message)
Q_EMIT timelineChanged();
}
if (!m_explicitContentModel && m_contentModel != message->contentModel()) {
m_contentModel = message->contentModel();
Q_EMIT contentModelChanged();
}
if (m_explicitIndex || m_index != message->index()) {
m_index = message->index();
Q_EMIT indexChanged();