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 notifications bool
|
||||||
var connection bool = true
|
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 scrollDownOnNewMessage bool = true
|
||||||
var w fyne.Window
|
var w fyne.Window
|
||||||
var a fyne.App
|
var a fyne.App
|
||||||
@@ -421,11 +402,11 @@ func dropToSignInPage(reason string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
muc.Since(time.Now())
|
muc.Since(time.Now())
|
||||||
|
|
||||||
config = piConfig{}
|
config = piConfig{}
|
||||||
a = app.NewWithID("pi-im")
|
a = app.NewWithID("pi-im")
|
||||||
//a.Settings().SetTheme(&myTheme{})
|
|
||||||
reader, err := a.Storage().Open("pi.xml")
|
reader, err := a.Storage().Open("pi.xml")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dropToSignInPage(err.Error())
|
dropToSignInPage(err.Error())
|
||||||
@@ -501,7 +482,7 @@ func main() {
|
|||||||
if correction {
|
if correction {
|
||||||
for i := len(tab.Messages) - 1; i > 0; i-- {
|
for i := len(tab.Messages) - 1; i > 0; i-- {
|
||||||
if tab.Messages[i].Raw.From.String() == msg.From.String() {
|
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() {
|
fyne.Do(func() {
|
||||||
UITabs[userJidStr].Scroller.Refresh()
|
UITabs[userJidStr].Scroller.Refresh()
|
||||||
})
|
})
|
||||||
@@ -591,7 +572,7 @@ func main() {
|
|||||||
if correction {
|
if correction {
|
||||||
for i := len(tab.Messages) - 1; i > 0; i-- {
|
for i := len(tab.Messages) - 1; i > 0; i-- {
|
||||||
if tab.Messages[i].Raw.From.String() == msg.From.String() {
|
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() {
|
fyne.Do(func() {
|
||||||
UITabs[mucJidStr].Scroller.Refresh()
|
UITabs[mucJidStr].Scroller.Refresh()
|
||||||
})
|
})
|
||||||
@@ -965,7 +946,7 @@ func main() {
|
|||||||
}, w)
|
}, w)
|
||||||
})
|
})
|
||||||
|
|
||||||
leaveRoom := fyne.NewMenuItem("Leave current room", func() {
|
leaveRoom := fyne.NewMenuItem("disconnect from current room", func() {
|
||||||
selectedScroller, ok := AppTabs.Selected().Content.(*widget.List)
|
selectedScroller, ok := AppTabs.Selected().Content.(*widget.List)
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
@@ -980,15 +961,86 @@ func main() {
|
|||||||
AppTabs.Selected().Text = fmt.Sprintf("%s (disconnected)", AppTabs.Selected().Text)
|
AppTabs.Selected().Text = fmt.Sprintf("%s (disconnected)", AppTabs.Selected().Text)
|
||||||
AppTabs.Items = append(AppTabs.Items[:AppTabs.SelectedIndex()], AppTabs.Items[AppTabs.SelectedIndex()+1:]...)
|
AppTabs.Items = append(AppTabs.Items[:AppTabs.SelectedIndex()], AppTabs.Items[AppTabs.SelectedIndex()+1:]...)
|
||||||
AppTabs.SelectIndex(0)
|
AppTabs.SelectIndex(0)
|
||||||
err1, err2 := client.LeaveMuc(activeMucJid, "cya suckers!", context.TODO())
|
err := client.DisconnectMuc(activeMucJid, "user left on own accord", context.TODO())
|
||||||
if err1 != nil || err2 != nil {
|
if err != nil {
|
||||||
dialog.ShowError(errors.Join(err1, err2), w) // beautiful...
|
dialog.ShowError(err, w)
|
||||||
}
|
}
|
||||||
delete(UITabs, activeMucJid)
|
delete(UITabs, activeMucJid)
|
||||||
})
|
})
|
||||||
|
|
||||||
joinARoom := fyne.NewMenuItem("Join a room", func() {
|
manageBookmarks := fyne.NewMenuItem("manage bookmarks", func() {
|
||||||
dialog.ShowEntryDialog("Join a room", "JID:", func(s string) {
|
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
|
i := resourcePiloadingGif
|
||||||
gif, err := extraWidgets.NewAnimatedGifFromResource(i)
|
gif, err := extraWidgets.NewAnimatedGifFromResource(i)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -1151,7 +1203,7 @@ func main() {
|
|||||||
|
|
||||||
menu_help := fyne.NewMenu("π", mit, reconnect, licensesbtn, savedata)
|
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)
|
menu_configureview := fyne.NewMenu("Β", mia, jtt, jtb)
|
||||||
hafjag := fyne.NewMenuItem("Hafjag", func() {
|
hafjag := fyne.NewMenuItem("Hafjag", func() {
|
||||||
entry.Text = "Hafjag"
|
entry.Text = "Hafjag"
|
||||||
@@ -1390,6 +1442,9 @@ func main() {
|
|||||||
continue // unrecoverable
|
continue // unrecoverable
|
||||||
}
|
}
|
||||||
nickname := userjid.Resourcepart()
|
nickname := userjid.Resourcepart()
|
||||||
|
if nickname == "" {
|
||||||
|
continue // we got the MUC presence, do not include it in the member list
|
||||||
|
}
|
||||||
ii, err := gen.Draw(nickname)
|
ii, err := gen.Draw(nickname)
|
||||||
mention := func() {
|
mention := func() {
|
||||||
entry.SetText(fmt.Sprintf("%s %s", entry.Text, nickname))
|
entry.SetText(fmt.Sprintf("%s %s", entry.Text, nickname))
|
||||||
@@ -1402,7 +1457,7 @@ func main() {
|
|||||||
imageWidget := canvas.NewImageFromImage(im)
|
imageWidget := canvas.NewImageFromImage(im)
|
||||||
imageWidget.FillMode = canvas.ImageFillOriginal
|
imageWidget.FillMode = canvas.ImageFillOriginal
|
||||||
imageWidget.Refresh()
|
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