diff --git a/main.go b/main.go index 701e66c..f072c0b 100644 --- a/main.go +++ b/main.go @@ -37,7 +37,7 @@ import ( // TODO: integrated theme switcher ) -var version string = "3i" +var version string = "3.1i" var statBar widget.Label var chatInfo fyne.Container var chatSidebar fyne.Container @@ -402,9 +402,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") @@ -648,6 +646,7 @@ func main() { } if bookmark.Autojoin { if bookmark.Nick == "" { + fmt.Println("WARNING: Bookmark has no name") bookmark.Nick = client.Login.DisplayName } addChatTab(true, bookmark.JID, client.Login.DisplayName) @@ -971,15 +970,31 @@ func main() { manageBookmarks := fyne.NewMenuItem("manage bookmarks", func() { bookmarks := client.BookmarkCache() box := container.NewVBox() + box.Add(widget.NewRichTextFromMarkdown("# Manage Bookmarks")) for address, bookmark := range bookmarks { - bookmarkWidget := container.NewGridWithColumns(4) - bookmarkWidget.Add(widget.NewLabel(address)) + bookmarkWidget := container.NewGridWithColumns(5) + + nameLabel := widget.NewLabel(bookmark.Name) + nameLabel.Wrapping = fyne.TextWrapBreak + + bookmarkWidget.Add(nameLabel) + bookmarkJidWidget := widget.NewLabel(address) + bookmarkJidWidget.TextStyle.Monospace = true + bookmarkJidWidget.Selectable = true + bookmarkJidWidget.Wrapping = fyne.TextWrapWord + + + + bookmarkWidget.Add(bookmarkJidWidget) var autojoinCheck *widget.Check var deleteBookmarkButton *widget.Button var joinRoomButton *widget.Button joinRoomButton = widget.NewButtonWithIcon("Join", theme.AccountIcon(), func() { fyne.Do(func() { joinRoomButton.Disable() }) go func() { + if bookmark.Nick == "" { + bookmark.Nick = client.Login.DisplayName + } var zero uint64 = uint64(0) addChatTab(true, bookmark.JID, bookmark.Nick) _, err := client.ConnectMuc(bookmark, oasisSdk.MucLegacyHistoryConfig{MaxCount: &zero}, context.TODO()) @@ -1032,10 +1047,14 @@ func main() { bookmarkWidget.Add(joinRoomButton) box.Add(bookmarkWidget) - fmt.Println(address, bookmark) } - d := dialog.NewCustom("manage bookmarks", "cancel", box, w) - d.Show() + myScroller := container.NewScroll(box) + myScroller.Resize(fyne.NewSize(500,500)) + AppTabs.Items[0].Content = myScroller + AppTabs.Items[0].Text = "Bookmarks" + AppTabs.SelectIndex(0) + //d := dialog.NewCustom("manage bookmarks", "cancel", myScroller, w) + //d.Show() }) @@ -1101,67 +1120,6 @@ func main() { }) - /* - servDisc := fyne.NewMenuItem("Disco features", func() { - //var search jid.JID - dialog.ShowEntryDialog("Disco features", "JID: ", func(s string) { // TODO: replace with undeprecated widgetd - d := dialog.NewCustom("Please wait", "Close", widget.NewLabel("..."), w) - d.Show() - go func() { - //search, err = jid.Parse(s) - //if err != nil { - // d.Hide() - // dialog.ShowError(err, w) - // return - //} - txt := ` - - ` - var stan stanza.IQ - xml.Unmarshal([]byte(txt), &stan) - if err != nil { - d.Hide() - dialog.ShowError(err, w) - return - } - r, err := client.Session.EncodeIQ(client.Ctx, stan) - if err != nil { - d.Hide() - dialog.ShowError(err, w) - return - } - ra, _ := r.Token() - t, _ := xml.MarshalIndent(ra, "", "\t") - fmt.Println(string(t)) - d.Hide() - /* - - myBox := container.NewGridWithColumns(1, widget.NewLabel("Items")) - info, err := disco.GetInfo(client.Ctx, "", search, client.Session) - if err != nil { - d.Hide() - dialog.ShowError(err, w) - return - } - m := info.Identity - bytes, err := xml.MarshalIndent(m, "", "\t") - if err != nil { - d.Hide() - dialog.ShowError(err, w) - return - } - fyne.Do(func() {d.Hide()}) - myBox.Objects = append(myBox.Objects, widget.NewLabel(string(bytes))) - dialog.ShowCustom("Service discovery", "cancel", myBox, w) - }() - - }, w) - }) - */ - savedata := fyne.NewMenuItem("DEBUG: Save tab data to disk", func() { d := []ChatTab{} for _, v := range chatTabs { @@ -1176,31 +1134,6 @@ func main() { os.WriteFile("text.xml", b, os.ModeAppend) }) - /*jbookmarks := fyne.NewMenuItem("Join rooms in bookmarks", func() { - // FIXME: Race condition - client.FetchBookmarks() - rooms := client.BookmarkCache() - for _, v := range rooms { - go func() { - if v.Autojoin == true { - joinjid, err := v.JID.WithResource(login.DisplayName) - if err != nil { - dialog.ShowError(err, w) - return - } - room, err := client.MucClient.Join(client.Ctx, joinjid, client.Session) - if err != nil { - dialog.ShowError(err, w) - return - } - client.MucChannels[v.JID.String()] = room - addChatTab(true, v.JID, login.DisplayName) - } - }() - } - }) - */ - menu_help := fyne.NewMenu("π", mit, reconnect, licensesbtn, savedata) menu_changeroom := fyne.NewMenu("Α", mic, beginADM, joinARoom, leaveRoom, manageBookmarks) @@ -1387,19 +1320,14 @@ func main() { } AppTabs = container.NewAppTabs( - container.NewTabItem("τίποτα", widget.NewLabel(` + container.NewTabItem("...", widget.NewLabel(` pi + + This tab will be used for displaying certain actions, such as + managing your bookmarks configuring rooms. `)), ) - /* - for _, mucJidStr := range login.MucsToJoin { - mucJid, err := jid.Parse(mucJidStr) - if err == nil { - addChatTab(true, mucJid, login.DisplayName) - } - }*/ - for _, userJidStr := range DMs { fmt.Println(userJidStr) DMjid, err := jid.Parse(userJidStr) @@ -1457,7 +1385,9 @@ func main() { imageWidget := canvas.NewImageFromImage(im) imageWidget.FillMode = canvas.ImageFillOriginal imageWidget.Refresh() - box.Add(container.NewGridWithColumns(3, imageWidget, widget.NewLabel(nickname), widget.NewButton("Mention", mention))) + nickLabel := widget.NewLabel(nickname) + nickLabel.Selectable = true + box.Add(container.NewHBox(imageWidget, nickLabel)) } }