diff --git a/go.mod b/go.mod index 0014cb8..48c6905 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.24.5 require ( fyne.io/fyne/v2 v2.6.2 fyne.io/x/fyne v0.0.0-20250418202416-58a230ad1acb + github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d mellium.im/xmpp v0.22.0 pain.agency/oasis-sdk v0.0.0-20250805052243-df6be3f9f629 ) diff --git a/go.sum b/go.sum index 5973ef0..f668a2a 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA= github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d h1:l3+2LWCbVxn5itfvXAfH9n4YL9jh8l1g5zcncbIc1cs= +github.com/rrivera/identicon v0.0.0-20240116195454-d5ba35832c0d/go.mod h1:TbpErkob6SY7cyozRVSGoB3OlO2qOAgVN8O3KAJ4fMI= github.com/rymdport/portal v0.4.2 h1:7jKRSemwlTyVHHrTGgQg7gmNPJs88xkbKcIL3NlcmSU= github.com/rymdport/portal v0.4.2/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4= github.com/srwiley/oksvg v0.0.0-20221011165216-be6e8873101c h1:km8GpoQut05eY3GiYWEedbTT0qnSxrCjsVbb7yKY1KE= diff --git a/main.go b/main.go index 2f1f2ab..0ec8af1 100644 --- a/main.go +++ b/main.go @@ -21,6 +21,7 @@ import ( "fyne.io/fyne/v2/storage" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" + "github.com/rrivera/identicon" // xmpp - required "mellium.im/xmpp/disco" @@ -118,6 +119,11 @@ func CreateUITab(chatJidStr string) ChatTabUI { return len(chatTabs[chatJidStr].Messages) }, func() fyne.CanvasObject { + gen, _ := identicon.New("github", 5, 3) + ii, _ := gen.Draw("default") + im := ii.Image(25) + ico := canvas.NewImageFromImage(im) + ico.FillMode = canvas.ImageFillOriginal author := widget.NewLabel("author") author.TextStyle.Bold = true content := widget.NewLabel("content") @@ -127,11 +133,23 @@ func CreateUITab(chatJidStr string) ChatTabUI { btn := widget.NewButtonWithIcon("View media", icon, func() { }) - return container.NewVBox(author, content, btn) + return container.NewVBox(container.NewHBox(ico, author), content, btn) }, func(i widget.ListItemID, co fyne.CanvasObject) { vbox := co.(*fyne.Container) - author := vbox.Objects[0].(*widget.Label) + authorBox := vbox.Objects[0].(*fyne.Container) + // generate a Icon + + gen, _ := identicon.New("github", 5, 3) + ii, _ := gen.Draw(chatTabs[chatJidStr].Messages[i].Author) + im := ii.Image(25) + authorBox.Objects[0] = canvas.NewImageFromImage(im) + authorBox.Objects[0].(*canvas.Image).FillMode = canvas.ImageFillOriginal + authorBox.Objects[0].Refresh() + + // Icon generate end + + author := authorBox.Objects[1].(*widget.Label) content := vbox.Objects[1].(*widget.Label) btn := vbox.Objects[2].(*widget.Button) if chatTabs[chatJidStr].Messages[i].Important { @@ -291,6 +309,7 @@ func dropToSignInPage(reason string) { func main() { muc.Since(time.Now()) + config = piConfig{} a = app.NewWithID("pi-im") reader, err := a.Storage().Open("pi.xml")