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
|
// 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:"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:"ClearMessages"`
|
||||||
_ func() `signal:"ResetMessagePane"`
|
_ func() `signal:"ResetMessagePane"`
|
||||||
_ func(mID string) `signal:"Acknowledged"`
|
_ func(mID string) `signal:"Acknowledged"`
|
||||||
|
@ -188,7 +189,7 @@ func (this *GrandCentralDispatcher) loadMessagesPaneHelper(handle string) {
|
||||||
this.SetToolbarTitle(nick)
|
this.SetToolbarTitle(nick)
|
||||||
}
|
}
|
||||||
log.Debugf("messages: %d", len(tl))
|
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 {
|
if tl[i].PeerID == the.Peer.GetProfile().Onion {
|
||||||
handle = "me"
|
handle = "me"
|
||||||
} else {
|
} else {
|
||||||
|
@ -203,7 +204,7 @@ func (this *GrandCentralDispatcher) loadMessagesPaneHelper(handle string) {
|
||||||
name = tl[i].PeerID[:16] + "..."
|
name = tl[i].PeerID[:16] + "..."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.AppendMessage(
|
this.PrependMessage(
|
||||||
handle,
|
handle,
|
||||||
tl[i].PeerID,
|
tl[i].PeerID,
|
||||||
name,
|
name,
|
||||||
|
|
|
@ -59,7 +59,11 @@ ColumnLayout {
|
||||||
jsonModel4.clear()
|
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
|
var msg
|
||||||
try {
|
try {
|
||||||
msg = JSON.parse(message)
|
msg = JSON.parse(message)
|
||||||
|
|
|
@ -12,93 +12,101 @@ import "../utils.js" as Utils
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
Flickable { // THE MESSAGE LIST ITSELF
|
|
||||||
id: sv
|
ListModel { // MESSAGE OBJECTS ARE STORED HERE ...
|
||||||
clip: true
|
id: messagesModel
|
||||||
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
|
}
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
ListView {
|
||||||
contentWidth: colMessages.width
|
id: messagesListView
|
||||||
contentHeight: colMessages.height
|
Layout.fillHeight: true
|
||||||
boundsBehavior: Flickable.StopAtBounds
|
Layout.fillWidth: true
|
||||||
maximumFlickVelocity: 800
|
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 {
|
Connections {
|
||||||
target: gcd
|
target: gcd
|
||||||
|
|
||||||
onClearMessages: function() {
|
onClearMessages: function() {
|
||||||
messagesModel.clear()
|
messagesModel.clear()
|
||||||
txtMessage.text = ""
|
txtMessage.text = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
onAppendMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ackd, error) {
|
onAppendMessage: function(handle, from, displayName, message, image, mid, fromMe, ts, ackd, error) {
|
||||||
var msg
|
var msg
|
||||||
try {
|
try {
|
||||||
msg = JSON.parse(message)
|
msg = JSON.parse(message)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
msg = {"o": 1, "d": "(legacy message type) " + message}
|
msg = {"o": 1, "d": "(legacy message type) " + message}
|
||||||
}
|
}
|
||||||
if (msg.o != 1) return
|
if (msg.o != 1) return
|
||||||
|
|
||||||
|
|
||||||
messagesModel.append({
|
messagesModel.append({
|
||||||
"_handle": handle,
|
"_handle": handle,
|
||||||
"_from": from,
|
"_from": from,
|
||||||
"_displayName": displayName,
|
"_displayName": displayName,
|
||||||
"_message":parse(msg.d, 12),
|
"_message":parse(msg.d, 12),
|
||||||
"_image": image,
|
"_rawMessage":msg.d,
|
||||||
"_mid": mid,
|
"_image": image,
|
||||||
"_fromMe": fromMe,
|
"_mid": mid,
|
||||||
"_ts": ts,
|
"_fromMe": fromMe,
|
||||||
"_ackd": ackd,
|
"_ts": ts,
|
||||||
"_error": error == true ? "this message failed to send" : "",
|
"_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)
|
messagesListView.positionViewAtEnd()
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout { // THE BOTTOM DRAWER
|
RowLayout { // THE BOTTOM DRAWER
|
||||||
Rectangle { // MESSAGE ENTRY TEXTFIELD
|
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
|
var msg
|
||||||
try {
|
try {
|
||||||
msg = JSON.parse(message)
|
msg = JSON.parse(message)
|
||||||
|
|
|
@ -58,7 +58,11 @@ ColumnLayout {
|
||||||
jsonModel4.clear()
|
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
|
var msg
|
||||||
try {
|
try {
|
||||||
msg = JSON.parse(message)
|
msg = JSON.parse(message)
|
||||||
|
|
|
@ -122,7 +122,6 @@ ColumnLayout { // groupSettingsPane
|
||||||
target: gcd
|
target: gcd
|
||||||
|
|
||||||
onSupplyGroupSettings: function(gid, name, server, invite, accepted, addrbooknames, addrbookaddrs) {
|
onSupplyGroupSettings: function(gid, name, server, invite, accepted, addrbooknames, addrbookaddrs) {
|
||||||
console.log("Supplied " + gid + " " + name)
|
|
||||||
gsp.groupID = gid
|
gsp.groupID = gid
|
||||||
toolbar.text = name
|
toolbar.text = name
|
||||||
txtGroupName.text = name
|
txtGroupName.text = name
|
||||||
|
|
|
@ -151,7 +151,6 @@ ColumnLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
onSupplyGroupSettings: function(gid, name, server, invite, accepted, addrbooknames, addrbookaddrs) {
|
onSupplyGroupSettings: function(gid, name, server, invite, accepted, addrbooknames, addrbookaddrs) {
|
||||||
console.log("Supplied " + gid + " " + name + "Accepted " + accepted)
|
|
||||||
overlay.name = name
|
overlay.name = name
|
||||||
overlay.accepted = accepted
|
overlay.accepted = accepted
|
||||||
overlay.inGroup = true
|
overlay.inGroup = true
|
||||||
|
|
|
@ -14,6 +14,7 @@ RowLayout {
|
||||||
height: Math.max(imgProfile.height, rectMessageBubble.height)
|
height: Math.max(imgProfile.height, rectMessageBubble.height)
|
||||||
|
|
||||||
property alias message: lbl.text
|
property alias message: lbl.text
|
||||||
|
property string rawMessage
|
||||||
property string from
|
property string from
|
||||||
property string handle
|
property string handle
|
||||||
property string displayName
|
property string displayName
|
||||||
|
@ -112,7 +113,7 @@ RowLayout {
|
||||||
padding: 6
|
padding: 6
|
||||||
leftPadding: 10
|
leftPadding: 10
|
||||||
font.pixelSize: gcd.themeScale * 12
|
font.pixelSize: gcd.themeScale * 12
|
||||||
selectByMouse: true
|
selectByMouse: false
|
||||||
readOnly: true
|
readOnly: true
|
||||||
width: Math.min(dummy.width, root.parent.width - (imgProfile.visible ? imgProfile.width : 0) - 40)
|
width: Math.min(dummy.width, root.parent.width - (imgProfile.visible ? imgProfile.width : 0) - 40)
|
||||||
wrapMode: TextEdit.Wrap
|
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