From 27c3d0803167c1bd49008da02f92252c8a794388 Mon Sep 17 00:00:00 2001 From: miruka Date: Tue, 1 Sep 2020 12:45:55 -0400 Subject: [PATCH] EventDelegate/Content property usage improvements - Remove pointless confusing aliases for avatar properties (smallAvatar, collapseAvatar, etc) - Make some EventDelegate properties readonly as they should be - Use Layout.preferredWidth/Height for avatarWrapper instead of both minimum and maximum W/H --- TODO.md | 7 +++++ src/gui/Pages/Chat/Timeline/EventContent.qml | 27 +++++++++---------- src/gui/Pages/Chat/Timeline/EventDelegate.qml | 20 +++++++------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/TODO.md b/TODO.md index a00bb21f..08993e21 100644 --- a/TODO.md +++ b/TODO.md @@ -1,5 +1,12 @@ # TODO +- room A-Z sorting +- force reload theme ui background +- move uiScale to settings.json +- up/down doesn't work in the middle of a @word for which autocompletion isn't + open because no matches +- filter > enter > room list is always scrolled to top +- change profile → post in room → message shows as old profile - session list: prevent tab-focusing the delegates - refresh server list button diff --git a/src/gui/Pages/Chat/Timeline/EventContent.qml b/src/gui/Pages/Chat/Timeline/EventContent.qml index 60f6aae8..d4726348 100644 --- a/src/gui/Pages/Chat/Timeline/EventContent.qml +++ b/src/gui/Pages/Chat/Timeline/EventContent.qml @@ -27,10 +27,10 @@ HRowLayout { readonly property string senderText: hideNameLine ? "" : ( - `<${smallAvatar ? "span" : "div"} class='sender'>` + + `<${compact ? "span" : "div"} class='sender'>` + utils.coloredNameHtml(model.sender_name, model.sender_id) + - (smallAvatar ? ": " : "") + - (smallAvatar ? "" : "") + (compact ? ": " : "") + + (compact ? "" : "") ) property string contentText: utils.processedEventText(model) readonly property string timeText: utils.formatTime(model.date, false) @@ -78,20 +78,16 @@ HRowLayout { Item { id: avatarWrapper - opacity: collapseAvatar ? 0 : 1 - visible: ! hideAvatar + visible: ! onRight + opacity: combine ? 0 : 1 - Layout.minimumWidth: - smallAvatar ? + Layout.alignment: Qt.AlignTop + Layout.preferredHeight: combine ? 1 : Layout.preferredWidth + Layout.preferredWidth: + compact ? theme.chat.message.collapsedAvatarSize : theme.chat.message.avatarSize - Layout.minimumHeight: collapseAvatar ? 1 : Layout.minimumWidth - - Layout.maximumWidth: Layout.minimumWidth - Layout.maximumHeight: Layout.minimumHeight - Layout.alignment: Qt.AlignTop - HUserAvatar { id: avatar clientUserId: chat.userId @@ -99,8 +95,9 @@ HRowLayout { displayName: model.sender_name mxc: model.sender_avatar width: parent.width - height: collapseAvatar ? 1 : parent.Layout.minimumWidth + height: combine ? 1 : parent.Layout.preferredWidth radius: theme.chat.message.avatarRadius + } } @@ -138,7 +135,7 @@ HRowLayout { // Sender name & message body ( - smallAvatar && contentText.match(/^\s*<(p|h[1-6])>/) ? + compact && contentText.match(/^\s*<(p|h[1-6])>/) ? contentText.replace( /(^\s*<(p|h[1-6])>)/, "$1" + senderText, ) : diff --git a/src/gui/Pages/Chat/Timeline/EventDelegate.qml b/src/gui/Pages/Chat/Timeline/EventDelegate.qml index 363e134b..a0e23103 100644 --- a/src/gui/Pages/Chat/Timeline/EventDelegate.qml +++ b/src/gui/Pages/Chat/Timeline/EventDelegate.qml @@ -19,18 +19,16 @@ HColumnLayout { readonly property var nextModel: eventList.model.get(model.index - 1) readonly property QtObject currentModel: model - property bool checked: model.id in eventList.checked - property bool compact: window.settings.compactMode - property bool isOwn: chat.userId === model.sender_id - property bool onRight: ! eventList.ownEventsOnLeft && isOwn - property bool combine: eventList.canCombine(previousModel, model) - property bool talkBreak: eventList.canTalkBreak(previousModel, model) - property bool dayBreak: eventList.canDayBreak(previousModel, model) - - readonly property bool smallAvatar: compact - readonly property bool collapseAvatar: combine - readonly property bool hideAvatar: onRight + readonly property bool compact: window.settings.compactMode + readonly property bool checked: model.id in eventList.checked + readonly property bool isOwn: chat.userId === model.sender_id readonly property bool isRedacted: model.event_type === "RedactedEvent" + readonly property bool onRight: ! eventList.ownEventsOnLeft && isOwn + readonly property bool combine: eventList.canCombine(previousModel, model) + readonly property bool talkBreak: + eventList.canTalkBreak(previousModel, model) + readonly property bool dayBreak: + eventList.canDayBreak(previousModel, model) readonly property bool hideNameLine: model.event_type === "RoomMessageEmote" ||