Bookmark management
This commit is contained in:
115
main.go
115
main.go
@@ -141,25 +141,6 @@ var replying bool = false
|
||||
var notifications bool
|
||||
var connection bool = true
|
||||
|
||||
/*
|
||||
func (m myTheme) Font(style fyne.TextStyle) fyne.Resource {
|
||||
return resourceAppleColorEmojiTtf
|
||||
}
|
||||
|
||||
func (m myTheme) Color(name fyne.ThemeColorName, variant fyne.ThemeVariant) color.Color {
|
||||
return adwaita.AdwaitaTheme().Color(name, fyne.CurrentApp().Settings().ThemeVariant())
|
||||
}
|
||||
|
||||
func (m myTheme) Icon(name fyne.ThemeIconName) fyne.Resource {
|
||||
return theme.DefaultTheme().Icon(name)
|
||||
}
|
||||
|
||||
/*
|
||||
func (m myTheme) Font(style fyne.TextStyle) fyne.Resource {
|
||||
return theme.DefaultTheme().Font(style)
|
||||
}
|
||||
*/
|
||||
|
||||
var scrollDownOnNewMessage bool = true
|
||||
var w fyne.Window
|
||||
var a fyne.App
|
||||
@@ -421,11 +402,11 @@ func dropToSignInPage(reason string) {
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
muc.Since(time.Now())
|
||||
|
||||
config = piConfig{}
|
||||
a = app.NewWithID("pi-im")
|
||||
//a.Settings().SetTheme(&myTheme{})
|
||||
reader, err := a.Storage().Open("pi.xml")
|
||||
if err != nil {
|
||||
dropToSignInPage(err.Error())
|
||||
@@ -501,7 +482,7 @@ func main() {
|
||||
if correction {
|
||||
for i := len(tab.Messages) - 1; i > 0; i-- {
|
||||
if tab.Messages[i].Raw.From.String() == msg.From.String() {
|
||||
tab.Messages[i].Content = *msg.CleanedBody + " (edited)"
|
||||
tab.Messages[i].Content = *msg.CleanedBody + " (corrected)"
|
||||
fyne.Do(func() {
|
||||
UITabs[userJidStr].Scroller.Refresh()
|
||||
})
|
||||
@@ -591,7 +572,7 @@ func main() {
|
||||
if correction {
|
||||
for i := len(tab.Messages) - 1; i > 0; i-- {
|
||||
if tab.Messages[i].Raw.From.String() == msg.From.String() {
|
||||
tab.Messages[i].Content = *msg.CleanedBody + " (edited)"
|
||||
tab.Messages[i].Content = *msg.CleanedBody + " (corrected)"
|
||||
fyne.Do(func() {
|
||||
UITabs[mucJidStr].Scroller.Refresh()
|
||||
})
|
||||
@@ -965,7 +946,7 @@ func main() {
|
||||
}, w)
|
||||
})
|
||||
|
||||
leaveRoom := fyne.NewMenuItem("Leave current room", func() {
|
||||
leaveRoom := fyne.NewMenuItem("disconnect from current room", func() {
|
||||
selectedScroller, ok := AppTabs.Selected().Content.(*widget.List)
|
||||
if !ok {
|
||||
return
|
||||
@@ -980,15 +961,86 @@ func main() {
|
||||
AppTabs.Selected().Text = fmt.Sprintf("%s (disconnected)", AppTabs.Selected().Text)
|
||||
AppTabs.Items = append(AppTabs.Items[:AppTabs.SelectedIndex()], AppTabs.Items[AppTabs.SelectedIndex()+1:]...)
|
||||
AppTabs.SelectIndex(0)
|
||||
err1, err2 := client.LeaveMuc(activeMucJid, "cya suckers!", context.TODO())
|
||||
if err1 != nil || err2 != nil {
|
||||
dialog.ShowError(errors.Join(err1, err2), w) // beautiful...
|
||||
err := client.DisconnectMuc(activeMucJid, "user left on own accord", context.TODO())
|
||||
if err != nil {
|
||||
dialog.ShowError(err, w)
|
||||
}
|
||||
delete(UITabs, activeMucJid)
|
||||
})
|
||||
|
||||
joinARoom := fyne.NewMenuItem("Join a room", func() {
|
||||
dialog.ShowEntryDialog("Join a room", "JID:", func(s string) {
|
||||
manageBookmarks := fyne.NewMenuItem("manage bookmarks", func() {
|
||||
bookmarks := client.BookmarkCache()
|
||||
box := container.NewVBox()
|
||||
for address, bookmark := range bookmarks {
|
||||
bookmarkWidget := container.NewGridWithColumns(4)
|
||||
bookmarkWidget.Add(widget.NewLabel(address))
|
||||
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() {
|
||||
var zero uint64 = uint64(0)
|
||||
addChatTab(true, bookmark.JID, bookmark.Nick)
|
||||
_, err := client.ConnectMuc(bookmark, oasisSdk.MucLegacyHistoryConfig{MaxCount: &zero}, context.TODO())
|
||||
if err != nil {
|
||||
fyne.Do(func() {
|
||||
joinRoomButton.Enable()
|
||||
dialog.ShowError(err, w)
|
||||
})
|
||||
return
|
||||
}
|
||||
client.RefreshBookmarks(false)
|
||||
fyne.Do(func() { joinRoomButton.Enable() })
|
||||
|
||||
}()
|
||||
})
|
||||
autojoinCheck = widget.NewCheck("Autojoin", func(b bool) {
|
||||
go func() {
|
||||
fyne.Do(func() { autojoinCheck.Disable() })
|
||||
bookmark.Autojoin = b
|
||||
err := client.PublishBookmark(bookmark, context.TODO())
|
||||
if err != nil {
|
||||
fyne.Do(func() {
|
||||
autojoinCheck.Enable()
|
||||
dialog.ShowError(err, w)
|
||||
})
|
||||
return
|
||||
}
|
||||
client.RefreshBookmarks(false)
|
||||
fyne.Do(func() { autojoinCheck.Enable() })
|
||||
}()
|
||||
})
|
||||
autojoinCheck.Checked = bookmark.Autojoin
|
||||
|
||||
deleteBookmarkButton = widget.NewButtonWithIcon("Delete", theme.CancelIcon(), func() {
|
||||
go func() {
|
||||
err := client.DeleteBookmark(bookmark.JID, context.TODO())
|
||||
if err != nil {
|
||||
fyne.Do(func() {
|
||||
dialog.ShowError(err, w)
|
||||
})
|
||||
return
|
||||
}
|
||||
client.RefreshBookmarks(false)
|
||||
bookmarkWidget.RemoveAll()
|
||||
}()
|
||||
})
|
||||
|
||||
bookmarkWidget.Add(autojoinCheck)
|
||||
bookmarkWidget.Add(deleteBookmarkButton)
|
||||
bookmarkWidget.Add(joinRoomButton)
|
||||
|
||||
box.Add(bookmarkWidget)
|
||||
fmt.Println(address, bookmark)
|
||||
}
|
||||
d := dialog.NewCustom("manage bookmarks", "cancel", box, w)
|
||||
d.Show()
|
||||
|
||||
})
|
||||
|
||||
joinARoom := fyne.NewMenuItem("connect to a room", func() {
|
||||
dialog.ShowEntryDialog("connect to a room", "JID:", func(s string) {
|
||||
i := resourcePiloadingGif
|
||||
gif, err := extraWidgets.NewAnimatedGifFromResource(i)
|
||||
if err != nil {
|
||||
@@ -1151,7 +1203,7 @@ func main() {
|
||||
|
||||
menu_help := fyne.NewMenu("π", mit, reconnect, licensesbtn, savedata)
|
||||
|
||||
menu_changeroom := fyne.NewMenu("Α", mic, beginADM, joinARoom, leaveRoom)
|
||||
menu_changeroom := fyne.NewMenu("Α", mic, beginADM, joinARoom, leaveRoom, manageBookmarks)
|
||||
menu_configureview := fyne.NewMenu("Β", mia, jtt, jtb)
|
||||
hafjag := fyne.NewMenuItem("Hafjag", func() {
|
||||
entry.Text = "Hafjag"
|
||||
@@ -1390,6 +1442,9 @@ func main() {
|
||||
continue // unrecoverable
|
||||
}
|
||||
nickname := userjid.Resourcepart()
|
||||
if nickname == "" {
|
||||
continue // we got the MUC presence, do not include it in the member list
|
||||
}
|
||||
ii, err := gen.Draw(nickname)
|
||||
mention := func() {
|
||||
entry.SetText(fmt.Sprintf("%s %s", entry.Text, nickname))
|
||||
@@ -1402,7 +1457,7 @@ func main() {
|
||||
imageWidget := canvas.NewImageFromImage(im)
|
||||
imageWidget.FillMode = canvas.ImageFillOriginal
|
||||
imageWidget.Refresh()
|
||||
box.Add(container.NewHBox(imageWidget, widget.NewLabel(nickname), widget.NewButton("Mention", mention)))
|
||||
box.Add(container.NewGridWithColumns(3, imageWidget, widget.NewLabel(nickname), widget.NewButton("Mention", mention)))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user