Get rid of redundant constructions and make room implicit

delegate-rework
Nicolas Werner 1 year ago
parent 466d3cd52c
commit 718a58d388
No known key found for this signature in database
GPG Key ID: C8D75E610773F2D9
  1. 4
      resources/qml/MessageView.qml
  2. 9
      resources/qml/delegates/Redacted.qml
  3. 6
      src/timeline/EventDelegateChooser.cpp
  4. 15
      src/timeline/EventDelegateChooser.h
  5. 3
      src/timeline/TimelineModel.cpp
  6. 1
      src/timeline/TimelineModel.h

@ -65,7 +65,7 @@ Item {
width: chat.delegateMaxWidth
height: Math.max((section.item?.height ?? 0) + gridContainer.implicitHeight, 10)
anchors.horizontalCenter: ListView.view.contentItem.horizontalCenter
room: chatRoot.roommodel
//room: chatRoot.roommodel
required property var day
required property bool isSender
@ -203,7 +203,7 @@ Item {
color: type == MtxEvent.NoticeMessage ? palette.buttonText : palette.text
font.italic: type == MtxEvent.NoticeMessage
formatted: formattedBody
formatted: formattedBody + "a"
Layout.fillWidth: true
//Layout.maximumWidth: implicitWidth

@ -2,10 +2,10 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import im.nheko 1.0
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import im.nheko
Control {
id: msgRoot
@ -14,6 +14,7 @@ Control {
property bool fitsMetadata: false //parent.width - redactedLayout.width > metadataWidth + 4
required property string eventId
required property Room room
contentItem: RowLayout {
id: redactedLayout

@ -84,7 +84,8 @@ void
EventDelegateChooser::componentComplete()
{
QQuickItem::componentComplete();
// eventIncubator.reset(eventIndex);
eventIncubator.reset(eventId_);
replyIncubator.reset(replyId);
// eventIncubator.forceCompletion();
}
@ -226,6 +227,9 @@ EventDelegateChooser::DelegateIncubator::reset(QString id)
for (const auto choice : qAsConst(chooser.choices_)) {
const auto &choiceValue = choice->roleValues();
if (choiceValue.contains(role) || choiceValue.empty()) {
nhlog::ui()->debug(
"Instantiating type: {}, c {}", (int)role, choiceValue.contains(role));
if (auto child = qobject_cast<QQuickItem *>(object())) {
child->setParentItem(nullptr);
}

@ -55,9 +55,9 @@ public:
Q_PROPERTY(QQmlListProperty<EventDelegateChoice> choices READ choices CONSTANT FINAL)
Q_PROPERTY(QQuickItem *main READ main NOTIFY mainChanged FINAL)
Q_PROPERTY(QQuickItem *reply READ reply NOTIFY replyChanged FINAL)
Q_PROPERTY(TimelineModel *room READ room WRITE setRoom NOTIFY roomChanged REQUIRED FINAL)
Q_PROPERTY(QString eventId READ eventId WRITE setEventId NOTIFY eventIdChanged REQUIRED FINAL)
Q_PROPERTY(QString replyTo READ replyTo WRITE setReplyTo NOTIFY replyToChanged REQUIRED FINAL)
Q_PROPERTY(TimelineModel *room READ room WRITE setRoom NOTIFY roomChanged REQUIRED FINAL)
QQmlListProperty<EventDelegateChoice> choices();
@ -74,9 +74,12 @@ public:
{
if (m != room_) {
room_ = m;
eventIncubator.reset(eventId_);
replyIncubator.reset(replyId);
emit roomChanged();
if (isComponentComplete()) {
eventIncubator.reset(eventId_);
replyIncubator.reset(replyId);
}
}
}
[[nodiscard]] TimelineModel *room() { return room_; }
@ -85,12 +88,18 @@ public:
{
eventId_ = idx;
emit eventIdChanged();
if (isComponentComplete())
eventIncubator.reset(eventId_);
}
[[nodiscard]] QString eventId() const { return eventId_; }
void setReplyTo(QString id)
{
replyId = id;
emit replyToChanged();
if (isComponentComplete())
replyIncubator.reset(replyId);
}
[[nodiscard]] QString replyTo() const { return replyId; }

@ -561,6 +561,7 @@ TimelineModel::roleNames() const
{ReplyTo, "replyTo"},
{ThreadId, "threadId"},
{Reactions, "reactions"},
{Room, "room"},
{RoomId, "roomId"},
{RoomName, "roomName"},
{RoomTopic, "roomTopic"},
@ -899,6 +900,8 @@ TimelineModel::data(const mtx::events::collections::TimelineEvents &event, int r
auto id = relations(event).replaces().value_or(event_id(event));
return QVariant::fromValue(events.reactions(id));
}
case Room:
return QVariant::fromValue(this);
case RoomId:
return QVariant(room_id_);
case RoomName:

@ -267,6 +267,7 @@ public:
ReplyTo,
ThreadId,
Reactions,
Room,
RoomId,
RoomName,
RoomTopic,

Loading…
Cancel
Save