Merge branch 'ebf201904081214' of cwtch.im/ui into master
This commit is contained in:
commit
e854d7ff11
|
@ -36,6 +36,7 @@ type GrandCentralDispatcher struct {
|
|||
|
||||
// messages pane stuff
|
||||
_ func(handle, from, displayName, message, image string, mID string, fromMe bool, ts string, ackd bool, error bool) `signal:"AppendMessage"`
|
||||
_ func(handle, from, displayName, message, image string, mID string, fromMe bool, ts string, ackd bool, error bool) `signal:"PrependMessage"`
|
||||
_ func() `signal:"ClearMessages"`
|
||||
_ func() `signal:"ResetMessagePane"`
|
||||
_ func(mID string) `signal:"Acknowledged"`
|
||||
|
@ -188,7 +189,7 @@ func (this *GrandCentralDispatcher) loadMessagesPaneHelper(handle string) {
|
|||
this.SetToolbarTitle(nick)
|
||||
}
|
||||
log.Debugf("messages: %d", len(tl))
|
||||
for i := range tl {
|
||||
for i := len(tl) - 1; i >= 0; i-- {
|
||||
if tl[i].PeerID == the.Peer.GetProfile().Onion {
|
||||
handle = "me"
|
||||
} else {
|
||||
|
@ -203,7 +204,7 @@ func (this *GrandCentralDispatcher) loadMessagesPaneHelper(handle string) {
|
|||
name = tl[i].PeerID[:16] + "..."
|
||||
}
|
||||
}
|
||||
this.AppendMessage(
|
||||
this.PrependMessage(
|
||||
handle,
|
||||
tl[i].PeerID,
|
||||
name,
|
||||
|
|
|
@ -59,7 +59,11 @@ ColumnLayout {
|
|||
jsonModel4.clear()
|
||||
}
|
||||
|
||||
onAppendMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ack, error) {
|
||||
onAppendMessage: handle
|
||||
|
||||
onPrependMessage: handle
|
||||
|
||||
function handle(handle, from, displayName, message, image, mid, fromMe, ts, ack, error) {
|
||||
var msg
|
||||
try {
|
||||
msg = JSON.parse(message)
|
||||
|
|
|
@ -12,93 +12,101 @@ import "../utils.js" as Utils
|
|||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
|
||||
Flickable { // THE MESSAGE LIST ITSELF
|
||||
id: sv
|
||||
clip: true
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
contentWidth: colMessages.width
|
||||
contentHeight: colMessages.height
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
maximumFlickVelocity: 800
|
||||
|
||||
ListModel { // MESSAGE OBJECTS ARE STORED HERE ...
|
||||
id: messagesModel
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: messagesListView
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
model: messagesModel
|
||||
spacing: 6
|
||||
clip: true
|
||||
ScrollBar.vertical: ScrollBar {}
|
||||
|
||||
delegate: Message {
|
||||
handle: _handle
|
||||
from: _from
|
||||
displayName: _displayName
|
||||
message: _message
|
||||
rawMessage: _rawMessage
|
||||
image: _image
|
||||
messageID: _mid
|
||||
fromMe: _fromMe
|
||||
timestamp: _ts
|
||||
ackd: _ackd
|
||||
error: _error
|
||||
}
|
||||
|
||||
|
||||
Connections {
|
||||
target: gcd
|
||||
Connections {
|
||||
target: gcd
|
||||
|
||||
onClearMessages: function() {
|
||||
messagesModel.clear()
|
||||
txtMessage.text = ""
|
||||
}
|
||||
onClearMessages: function() {
|
||||
messagesModel.clear()
|
||||
txtMessage.text = ""
|
||||
}
|
||||
|
||||
onAppendMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ackd, error) {
|
||||
var msg
|
||||
try {
|
||||
msg = JSON.parse(message)
|
||||
} catch (e) {
|
||||
msg = {"o": 1, "d": "(legacy message type) " + message}
|
||||
}
|
||||
if (msg.o != 1) return
|
||||
onAppendMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ackd, error) {
|
||||
var msg
|
||||
try {
|
||||
msg = JSON.parse(message)
|
||||
} catch (e) {
|
||||
msg = {"o": 1, "d": "(legacy message type) " + message}
|
||||
}
|
||||
if (msg.o != 1) return
|
||||
|
||||
|
||||
messagesModel.append({
|
||||
"_handle": handle,
|
||||
"_from": from,
|
||||
"_displayName": displayName,
|
||||
"_message":parse(msg.d, 12),
|
||||
"_image": image,
|
||||
"_mid": mid,
|
||||
"_fromMe": fromMe,
|
||||
"_ts": ts,
|
||||
"_ackd": ackd,
|
||||
"_error": error == true ? "this message failed to send" : "",
|
||||
})
|
||||
messagesModel.append({
|
||||
"_handle": handle,
|
||||
"_from": from,
|
||||
"_displayName": displayName,
|
||||
"_message":parse(msg.d, 12),
|
||||
"_rawMessage":msg.d,
|
||||
"_image": image,
|
||||
"_mid": mid,
|
||||
"_fromMe": fromMe,
|
||||
"_ts": ts,
|
||||
"_ackd": ackd,
|
||||
"_error": error == true ? "this message failed to send" : "",
|
||||
})
|
||||
|
||||
messagesListView.positionViewAtEnd()
|
||||
|
||||
// If the window is out of focus, alert the user (makes taskbar light up)
|
||||
windowItem.alert(0)
|
||||
}
|
||||
|
||||
onPrependMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ackd, error) {
|
||||
var msg
|
||||
try {
|
||||
msg = JSON.parse(message)
|
||||
} catch (e) {
|
||||
msg = {"o": 1, "d": "(legacy message type) " + message}
|
||||
}
|
||||
if (msg.o != 1) return
|
||||
|
||||
|
||||
messagesModel.insert(0, {
|
||||
"_handle": handle,
|
||||
"_from": from,
|
||||
"_displayName": displayName,
|
||||
"_message":parse(msg.d, 12),
|
||||
"_rawMessage":msg.d,
|
||||
"_image": image,
|
||||
"_mid": mid,
|
||||
"_fromMe": fromMe,
|
||||
"_ts": ts,
|
||||
"_ackd": ackd,
|
||||
"_error": error == true ? "this message failed to send" : "",
|
||||
})
|
||||
|
||||
// If the window is out of focus, alert the user (makes taskbar light up)
|
||||
windowItem.alert(0)
|
||||
|
||||
if (sv.contentY + sv.height >= sv.contentHeight - colMessages.height && sv.contentHeight > sv.height) {
|
||||
sv.contentY = sv.contentHeight - sv.height
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ScrollBar.vertical: ScrollBar{
|
||||
policy: ScrollBar.AlwaysOn
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
id: colMessages
|
||||
width: sv.width
|
||||
|
||||
|
||||
ListModel { // MESSAGE OBJECTS ARE STORED HERE ...
|
||||
id: messagesModel
|
||||
}
|
||||
|
||||
Item { height: 6 }
|
||||
|
||||
Repeater { // ... AND DISPLAYED HERE
|
||||
model: messagesModel
|
||||
delegate: Message {
|
||||
handle: _handle
|
||||
from: _from
|
||||
displayName: _displayName
|
||||
message: _message
|
||||
image: _image
|
||||
messageID: _mid
|
||||
fromMe: _fromMe
|
||||
timestamp: _ts
|
||||
ackd: _ackd
|
||||
error: _error
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
messagesListView.positionViewAtEnd()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout { // THE BOTTOM DRAWER
|
||||
Rectangle { // MESSAGE ENTRY TEXTFIELD
|
||||
|
|
|
@ -24,7 +24,11 @@ ColumnLayout {
|
|||
|
||||
}
|
||||
|
||||
onAppendMessage: function(handle, from, displayName, message, image, mid, fromMe, ts) {
|
||||
onAppendMessage: handle
|
||||
|
||||
onPrependMessage: handle
|
||||
|
||||
function handle(handle, from, displayName, message, image, mid, fromMe, ts) {
|
||||
var msg
|
||||
try {
|
||||
msg = JSON.parse(message)
|
||||
|
|
|
@ -58,7 +58,11 @@ ColumnLayout {
|
|||
jsonModel4.clear()
|
||||
}
|
||||
|
||||
onAppendMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ack, error) {
|
||||
onAppendMessage: handle
|
||||
|
||||
onPrependMessage: handle
|
||||
|
||||
function handle(handle, from, displayName, message, image, mid, fromMe, ts, ack, error) {
|
||||
var msg
|
||||
try {
|
||||
msg = JSON.parse(message)
|
||||
|
|
|
@ -122,7 +122,6 @@ ColumnLayout { // groupSettingsPane
|
|||
target: gcd
|
||||
|
||||
onSupplyGroupSettings: function(gid, name, server, invite, accepted, addrbooknames, addrbookaddrs) {
|
||||
console.log("Supplied " + gid + " " + name)
|
||||
gsp.groupID = gid
|
||||
toolbar.text = name
|
||||
txtGroupName.text = name
|
||||
|
|
|
@ -151,7 +151,6 @@ ColumnLayout {
|
|||
}
|
||||
|
||||
onSupplyGroupSettings: function(gid, name, server, invite, accepted, addrbooknames, addrbookaddrs) {
|
||||
console.log("Supplied " + gid + " " + name + "Accepted " + accepted)
|
||||
overlay.name = name
|
||||
overlay.accepted = accepted
|
||||
overlay.inGroup = true
|
||||
|
|
|
@ -14,6 +14,7 @@ RowLayout {
|
|||
height: Math.max(imgProfile.height, rectMessageBubble.height)
|
||||
|
||||
property alias message: lbl.text
|
||||
property string rawMessage
|
||||
property string from
|
||||
property string handle
|
||||
property string displayName
|
||||
|
@ -112,7 +113,7 @@ RowLayout {
|
|||
padding: 6
|
||||
leftPadding: 10
|
||||
font.pixelSize: gcd.themeScale * 12
|
||||
selectByMouse: true
|
||||
selectByMouse: false
|
||||
readOnly: true
|
||||
width: Math.min(dummy.width, root.parent.width - (imgProfile.visible ? imgProfile.width : 0) - 40)
|
||||
wrapMode: TextEdit.Wrap
|
||||
|
@ -160,5 +161,22 @@ RowLayout {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
TextEdit {
|
||||
id: copyhelper
|
||||
visible: false
|
||||
text: root.rawMessage
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
|
||||
onPressAndHold: {
|
||||
copyhelper.selectAll()
|
||||
copyhelper.copy()
|
||||
gcd.popup("message copied")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue