I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit a82085b9 authored by aargh's avatar aargh
Browse files

added basic attachment image preview and page support

parent 919dc1ad
No related branches found
No related tags found
No related merge requests found
package main package main
import ( import (
"image/color"
"strconv"
"time" "time"
"fyne.io/fyne/canvas" "fyne.io/fyne/canvas"
...@@ -95,12 +97,42 @@ func (client *GUI) renderContentArea() fyne.CanvasObject { ...@@ -95,12 +97,42 @@ func (client *GUI) renderContentArea() fyne.CanvasObject {
subject := widget.NewLabel("Subject: " + currentMessage.Subject) subject := widget.NewLabel("Subject: " + currentMessage.Subject)
subject.Wrapping = fyne.TextWrapBreak subject.Wrapping = fyne.TextWrapBreak
client.contentPane.Append(subject) client.contentPane.Append(subject)
client.contentPane.Append(widget.NewLabel("===")) client.contentPane.Append(canvas.NewLine(color.White))
if len(currentMessage.Raw.Page) > 0 { if len(currentMessage.Raw.Page) > 0 {
body := widget.NewLabel(currentMessage.Raw.Page[0].Data) for num, p := range currentMessage.Raw.Page[:1] {
body.Wrapping = fyne.TextWrapBreak if num >= 0 {
client.contentPane.Append(body) client.contentPane.Append(widget.NewLabel("Page: " + strconv.Itoa(num+1) + "/" + strconv.Itoa(len(currentMessage.Raw.Page)-1)))
page := widget.NewLabel(p.Data)
page.Wrapping = fyne.TextWrapBreak
client.contentPane.Append(page)
client.contentPane.Append(canvas.NewLine(color.White))
}
}
}
if len(currentMessage.Raw.Attachment) > 0 {
for num, a := range currentMessage.Raw.Attachment {
if num >= 0 {
a1 := widget.NewLabel("Attachment: " + strconv.Itoa(num+1) + "/" + strconv.Itoa(len(currentMessage.Raw.Attachment)) + " Name: " + a.Name)
a1.Wrapping = fyne.TextWrapBreak
a2 := widget.NewLabel("Type: " + a.ContentType + " Description: " + a.Description)
a2.Wrapping = fyne.TextWrapBreak
client.contentPane.Append(a1)
client.contentPane.Append(a2)
adata := a.Data
image, err := renderImage(imageExtFromName(a.ContentType), adata)
if err != nil {
client.contentPane.Append(widget.NewLabel("Unable to display preview"))
} else {
i := canvas.NewImageFromImage(image)
i.FillMode = canvas.ImageFillContain
i.SetMinSize(fyne.NewSize(500, 500))
client.contentPane.Append(i)
}
client.contentPane.Append(canvas.NewLine(color.White))
}
}
} }
} }
} }
return client.contentPane return client.contentPane
......
image.go 0 → 100644
package main
import (
"bytes"
"image"
"image/gif"
"image/jpeg"
"image/png"
"path/filepath"
"strings"
)
func renderImage(ext string, data []byte) (image.Image, error) {
var image image.Image
var err error
switch ext {
case "png":
image, err = png.Decode(bytes.NewReader(data))
case "jpeg":
image, err = jpeg.Decode(bytes.NewReader(data))
case "gif":
image, err = gif.Decode(bytes.NewReader(data))
default:
image, err = jpeg.Decode(bytes.NewReader(data))
}
return image, err
}
func imageExtFromName(s string) string {
switch filepath.Ext(strings.Replace(s, "/", ".", 0)) {
case "gif":
return "gif"
case "png":
return "png"
case "jpg", "jpeg":
return "jpeg"
}
return ""
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment