Bring back room subtitles
Show last appropriate room message/event as subtitle
This commit is contained in:
parent
9c66166c4f
commit
d36cbbc7df
2
TODO.md
2
TODO.md
@ -18,3 +18,5 @@
|
|||||||
- Better names and organization for the Message components
|
- Better names and organization for the Message components
|
||||||
|
|
||||||
- Load previous events on scroll up
|
- Load previous events on scroll up
|
||||||
|
|
||||||
|
- Migrate more JS functions to their own files
|
||||||
|
@ -2,7 +2,7 @@ import QtQuick 2.7
|
|||||||
import QtQuick.Controls 2.0
|
import QtQuick.Controls 2.0
|
||||||
import QtQuick.Layouts 1.4
|
import QtQuick.Layouts 1.4
|
||||||
import "../base" as Base
|
import "../base" as Base
|
||||||
import "get_event_text.js" as GetEventTextJS
|
import "utils.js" as ChatJS
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
id: row
|
id: row
|
||||||
@ -11,9 +11,7 @@ Row {
|
|||||||
anchors.right: isOwn ? parent.right : undefined
|
anchors.right: isOwn ? parent.right : undefined
|
||||||
|
|
||||||
readonly property string contentText:
|
readonly property string contentText:
|
||||||
(isMessage || isUndecryptableEvent) ?
|
isMessage ? "" : ChatJS.get_event_text(type, dict)
|
||||||
"" :
|
|
||||||
GetEventTextJS.get_event_text(type, dict)
|
|
||||||
|
|
||||||
Base.Avatar {
|
Base.Avatar {
|
||||||
id: avatar
|
id: avatar
|
||||||
@ -24,7 +22,8 @@ Row {
|
|||||||
|
|
||||||
Base.HLabel {
|
Base.HLabel {
|
||||||
id: contentLabel
|
id: contentLabel
|
||||||
text: "<font color=gray>" +
|
text: "<font color='" +
|
||||||
|
(isUndecryptableEvent ? "darkred" : "gray") + "'>" +
|
||||||
displayName + " " + contentText +
|
displayName + " " + contentText +
|
||||||
" <font size=" + smallSize + "px>" +
|
" <font size=" + smallSize + "px>" +
|
||||||
Qt.formatDateTime(date_time, "hh:mm:ss") +
|
Qt.formatDateTime(date_time, "hh:mm:ss") +
|
||||||
|
@ -38,9 +38,7 @@ Row {
|
|||||||
//"</font>" +
|
//"</font>" +
|
||||||
// (isOwn ? " " + content : "")
|
// (isOwn ? " " + content : "")
|
||||||
|
|
||||||
text: (isUndecryptableEvent ?
|
text: (dict.formatted_body || dict.body) +
|
||||||
"<font color=darkred>Missing decryption keys for this message.</font>" :
|
|
||||||
dict.formatted_body || dict.body) +
|
|
||||||
" <font size=" + smallSize + "px color=gray>" +
|
" <font size=" + smallSize + "px color=gray>" +
|
||||||
Qt.formatDateTime(date_time, "hh:mm:ss") +
|
Qt.formatDateTime(date_time, "hh:mm:ss") +
|
||||||
"</font>"
|
"</font>"
|
||||||
|
@ -55,7 +55,7 @@ Column {
|
|||||||
|
|
||||||
Daybreak { visible: dayBreak }
|
Daybreak { visible: dayBreak }
|
||||||
|
|
||||||
MessageContent { visible: isMessage || isUndecryptableEvent }
|
MessageContent { visible: isMessage }
|
||||||
|
|
||||||
EventContent { visible: ! (isMessage || isUndecryptableEvent) }
|
EventContent { visible: ! isMessage }
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,10 @@ function get_event_text(type, dict) {
|
|||||||
return "turned on encryption for this room."
|
return "turned on encryption for this room."
|
||||||
break
|
break
|
||||||
|
|
||||||
|
case "OlmEvent":
|
||||||
|
case "MegolmEvent":
|
||||||
|
return "hasn't sent your device the keys to decrypt this message."
|
||||||
|
|
||||||
default:
|
default:
|
||||||
console.log(type + "\n" + JSON.stringify(dict, null, 4) + "\n")
|
console.log(type + "\n" + JSON.stringify(dict, null, 4) + "\n")
|
||||||
return "did something this client does not understand."
|
return "did something this client does not understand."
|
@ -2,6 +2,7 @@ import QtQuick 2.7
|
|||||||
import QtQuick.Controls 2.0
|
import QtQuick.Controls 2.0
|
||||||
import QtQuick.Layouts 1.4
|
import QtQuick.Layouts 1.4
|
||||||
import "../base" as Base
|
import "../base" as Base
|
||||||
|
import "utils.js" as SidePaneJS
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
id: "root"
|
id: "root"
|
||||||
@ -38,24 +39,10 @@ MouseArea {
|
|||||||
rightPadding: leftPadding
|
rightPadding: leftPadding
|
||||||
}
|
}
|
||||||
Base.HLabel {
|
Base.HLabel {
|
||||||
property var msgModel: Backend.models.roomEvents.get(room_id)
|
|
||||||
|
|
||||||
function get_text() {
|
|
||||||
if (msgModel.count < 1) { return "" }
|
|
||||||
|
|
||||||
var msg = msgModel.get(-1)
|
|
||||||
var color_ = (msg.sender_id === roomList.user_id ?
|
|
||||||
"darkblue" : "purple")
|
|
||||||
|
|
||||||
return "<font color=\"" + color_ + "\">" +
|
|
||||||
Backend.getUser(msg.sender_id).display_name +
|
|
||||||
":</font> " +
|
|
||||||
msg.content
|
|
||||||
}
|
|
||||||
|
|
||||||
id: subtitleLabel
|
id: subtitleLabel
|
||||||
visible: text !== ""
|
visible: text !== ""
|
||||||
//text: msgModel.reloadThis, get_text()
|
text: Backend.models.roomEvents.get(room_id).reloadThis,
|
||||||
|
SidePaneJS.get_last_room_event_text(room_id)
|
||||||
textFormat: Text.StyledText
|
textFormat: Text.StyledText
|
||||||
|
|
||||||
font.pixelSize: smallSize
|
font.pixelSize: smallSize
|
||||||
|
42
harmonyqml/components/side_pane/utils.js
Normal file
42
harmonyqml/components/side_pane/utils.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
.import "../chat/utils.js" as ChatJS
|
||||||
|
|
||||||
|
|
||||||
|
function get_last_room_event_text(room_id) {
|
||||||
|
var eventsModel = Backend.models.roomEvents.get(room_id)
|
||||||
|
|
||||||
|
for (var i = -1; i >= -eventsModel.count; i--) {
|
||||||
|
var ev = eventsModel.get(i)
|
||||||
|
|
||||||
|
if (ev.type !== "RoomMemberEvent") {
|
||||||
|
var found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! found) { return "" }
|
||||||
|
|
||||||
|
var name = Backend.getUser(ev.dict.sender).display_name
|
||||||
|
var undecryptable = ev.type === "OlmEvent" || ev.type === "MegolmEvent"
|
||||||
|
|
||||||
|
if (undecryptable || ev.type.startsWith("RoomMessage")) {
|
||||||
|
var color = ev.dict.sender === roomList.for_user_id ?
|
||||||
|
"darkblue" : "purple"
|
||||||
|
|
||||||
|
return "<font color='" +
|
||||||
|
color +
|
||||||
|
"'>" +
|
||||||
|
name +
|
||||||
|
":</font> " +
|
||||||
|
(undecryptable ?
|
||||||
|
"<font color='darkred'>Undecryptable<font>" :
|
||||||
|
ev.dict.body)
|
||||||
|
} else {
|
||||||
|
return "<font color='" +
|
||||||
|
(undecryptable ? "darkred" : "#444") +
|
||||||
|
"'>" +
|
||||||
|
name +
|
||||||
|
" " +
|
||||||
|
ChatJS.get_event_text(ev.type, ev.dict) +
|
||||||
|
"</font>"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user