Add the ability to view images sent by others
This commit is contained in:
35
main.go
35
main.go
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"encoding/xml"
|
||||||
"fmt"
|
"fmt"
|
||||||
"image/color"
|
"image/color"
|
||||||
"io"
|
"io"
|
||||||
@@ -298,6 +299,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
func(client *oasisSdk.XmppClient, _ *muc.Channel, msg *oasisSdk.XMPPChatMessage) {
|
func(client *oasisSdk.XmppClient, _ *muc.Channel, msg *oasisSdk.XMPPChatMessage) {
|
||||||
|
var ImageID string = ""
|
||||||
mucJidStr := msg.From.Bare().String()
|
mucJidStr := msg.From.Bare().String()
|
||||||
if tab, ok := chatTabs[mucJidStr]; ok {
|
if tab, ok := chatTabs[mucJidStr]; ok {
|
||||||
|
|
||||||
@@ -315,6 +317,9 @@ func main() {
|
|||||||
_, err := url.Parse(v)
|
_, err := url.Parse(v)
|
||||||
if err == nil && strings.HasPrefix(v, "https://") {
|
if err == nil && strings.HasPrefix(v, "https://") {
|
||||||
s[j] = fmt.Sprintf("[%s](%s)", v, v)
|
s[j] = fmt.Sprintf("[%s](%s)", v, v)
|
||||||
|
if strings.HasSuffix(v, ".png") || strings.HasSuffix(v, ".jp") || strings.HasSuffix(v, ".webp") {
|
||||||
|
ImageID = v
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lines[i] = strings.Join(s, " ")
|
lines[i] = strings.Join(s, " ")
|
||||||
@@ -335,6 +340,7 @@ func main() {
|
|||||||
ID: msg.ID,
|
ID: msg.ID,
|
||||||
ReplyID: replyID,
|
ReplyID: replyID,
|
||||||
Raw: *msg,
|
Raw: *msg,
|
||||||
|
ImageURL: ImageID,
|
||||||
}
|
}
|
||||||
tab.Messages = append(tab.Messages, myMessage)
|
tab.Messages = append(tab.Messages, myMessage)
|
||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
@@ -451,6 +457,17 @@ func main() {
|
|||||||
dialog.ShowInformation("about pi", fmt.Sprintf("the XMPP client from hell\n\npi is an experimental XMPP client\nwritten by Sunglocto in Go.\n\nVersion %s", version), w)
|
dialog.ShowInformation("about pi", fmt.Sprintf("the XMPP client from hell\n\npi is an experimental XMPP client\nwritten by Sunglocto in Go.\n\nVersion %s", version), w)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
reconnect := fyne.NewMenuItem("reconnect", func() {
|
||||||
|
go func(){
|
||||||
|
err := client.Connect()
|
||||||
|
if err != nil {
|
||||||
|
fyne.Do(func(){
|
||||||
|
dialog.ShowError(err, w)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
})
|
||||||
|
|
||||||
mia := fyne.NewMenuItem("configure message view", func() {
|
mia := fyne.NewMenuItem("configure message view", func() {
|
||||||
ch := widget.NewCheck("", func(b bool) {})
|
ch := widget.NewCheck("", func(b bool) {})
|
||||||
ch2 := widget.NewCheck("", func(b bool) {})
|
ch2 := widget.NewCheck("", func(b bool) {})
|
||||||
@@ -570,7 +587,7 @@ func main() {
|
|||||||
}, w)
|
}, w)
|
||||||
})
|
})
|
||||||
|
|
||||||
menu_help := fyne.NewMenu("π", mit)
|
menu_help := fyne.NewMenu("π", mit, reconnect)
|
||||||
menu_changeroom := fyne.NewMenu("β", mic)
|
menu_changeroom := fyne.NewMenu("β", mic)
|
||||||
menu_configureview := fyne.NewMenu("γ", mia, mis, jtt, jtb)
|
menu_configureview := fyne.NewMenu("γ", mia, mis, jtt, jtb)
|
||||||
bit := fyne.NewMenuItem("mark selected message as read", func() {
|
bit := fyne.NewMenuItem("mark selected message as read", func() {
|
||||||
@@ -594,8 +611,8 @@ func main() {
|
|||||||
replying = !replying
|
replying = !replying
|
||||||
})
|
})
|
||||||
|
|
||||||
bic := fyne.NewMenuItem("open selected message in new window", func() {
|
bic := fyne.NewMenuItem("show message XML", func() {
|
||||||
pre := widget.NewMultiLineEntry()
|
pre := widget.NewLabel("")
|
||||||
|
|
||||||
selectedScroller, ok := tabs.Selected().Content.(*widget.List)
|
selectedScroller, ok := tabs.Selected().Content.(*widget.List)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -610,10 +627,16 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m := chatTabs[activeChatJid].Messages[selectedId].Content
|
m := chatTabs[activeChatJid].Messages[selectedId].Raw
|
||||||
pre.SetText(m)
|
bytes, err := xml.MarshalIndent(m, "", " ")
|
||||||
|
if err != nil {
|
||||||
|
dialog.ShowError(err, w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
pre.SetText(string(bytes))
|
||||||
|
pre.Selectable = true
|
||||||
pre.Refresh()
|
pre.Refresh()
|
||||||
dialog.ShowCustom("Message", "Close", container.NewHBox(pre), w)
|
dialog.ShowCustom("Message", "Close", pre, w)
|
||||||
})
|
})
|
||||||
menu_messageoptions := fyne.NewMenu("Σ", bit, bia, bic)
|
menu_messageoptions := fyne.NewMenu("Σ", bit, bia, bic)
|
||||||
ma := fyne.NewMainMenu(menu_help, menu_changeroom, menu_configureview, menu_messageoptions)
|
ma := fyne.NewMainMenu(menu_help, menu_changeroom, menu_configureview, menu_messageoptions)
|
||||||
|
Reference in New Issue
Block a user