Add the ability to join rooms, as well as join 1:1 DMs inside the app
This commit is contained in:
62
main.go
62
main.go
@@ -83,8 +83,6 @@ func NewCustomMultiLineEntry() *CustomMultiLineEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *CustomMultiLineEntry) TypedShortcut(sc fyne.Shortcut) {
|
func (e *CustomMultiLineEntry) TypedShortcut(sc fyne.Shortcut) {
|
||||||
|
|
||||||
// Custom shortcut: Ctrl+Enter for newline
|
|
||||||
if sc.ShortcutName() == "CustomDesktop:Control+Return" {
|
if sc.ShortcutName() == "CustomDesktop:Control+Return" {
|
||||||
e.Entry.TypedRune('\n')
|
e.Entry.TypedRune('\n')
|
||||||
return
|
return
|
||||||
@@ -286,9 +284,15 @@ func addChatTab(isMuc bool, chatJid jid.JID, nick string) {
|
|||||||
|
|
||||||
chatTabs[chatJidStr] = &myChatTab
|
chatTabs[chatJidStr] = &myChatTab
|
||||||
UITabs[chatJidStr] = &myUITab
|
UITabs[chatJidStr] = &myUITab
|
||||||
|
var icon fyne.Resource
|
||||||
|
if isMuc {
|
||||||
|
icon = theme.HomeIcon()
|
||||||
|
} else{
|
||||||
|
icon = theme.AccountIcon()
|
||||||
|
}
|
||||||
|
|
||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
AppTabs.Append(container.NewTabItem(chatJid.String(), myUITab.Scroller))
|
AppTabs.Append(container.NewTabItemWithIcon(chatJid.String(), icon, myUITab.Scroller))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -539,7 +543,7 @@ func main() {
|
|||||||
case oasisSdk.ChatStatePaused:
|
case oasisSdk.ChatStatePaused:
|
||||||
|
|
||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
statBar.SetText(fmt.Sprintf("%s has stoped typing.", from.Resourcepart()))
|
statBar.SetText(fmt.Sprintf("%s has stopped typing.", from.Resourcepart()))
|
||||||
})
|
})
|
||||||
case oasisSdk.ChatStateInactive:
|
case oasisSdk.ChatStateInactive:
|
||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
@@ -832,6 +836,24 @@ func main() {
|
|||||||
}, w)
|
}, w)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
leaveRoom := fyne.NewMenuItem("Leave current room (experimental)", func() {
|
||||||
|
selectedScroller, ok := AppTabs.Selected().Content.(*widget.List)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var activeMucJid string
|
||||||
|
for jid, tabData := range UITabs {
|
||||||
|
if tabData.Scroller == selectedScroller {
|
||||||
|
activeMucJid = jid
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AppTabs.Selected().Text = fmt.Sprintf("%s (disconnected)", AppTabs.Selected().Text)
|
||||||
|
AppTabs.SelectIndex(0)
|
||||||
|
delete(client.MucChannels, activeMucJid)
|
||||||
|
//delete(chatTabs, activeMucJid)
|
||||||
|
})
|
||||||
|
|
||||||
joinARoom := fyne.NewMenuItem("Join a room", func() {
|
joinARoom := fyne.NewMenuItem("Join a room", func() {
|
||||||
dialog.ShowEntryDialog("Join a room", "JID:", func(s string) {
|
dialog.ShowEntryDialog("Join a room", "JID:", func(s string) {
|
||||||
i := resourcePiloadingGif
|
i := resourcePiloadingGif
|
||||||
@@ -869,6 +891,31 @@ func main() {
|
|||||||
}, w)
|
}, w)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
beginADM := fyne.NewMenuItem("Start a DM", func() {
|
||||||
|
dialog.ShowEntryDialog("Start a DM", "JID:", func(s string) {
|
||||||
|
i := resourcePiloadingGif
|
||||||
|
gif, err := extraWidgets.NewAnimatedGifFromResource(i)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
gif.Start()
|
||||||
|
gif.Show()
|
||||||
|
d := dialog.NewCustom("Please wait", "Close", gif, w)
|
||||||
|
d.Show()
|
||||||
|
go func() {
|
||||||
|
myjid, err := jid.Parse(s)
|
||||||
|
if err != nil {
|
||||||
|
d.Hide()
|
||||||
|
dialog.ShowError(err, w)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
addChatTab(false, myjid, login.DisplayName)
|
||||||
|
d.Hide()
|
||||||
|
}()
|
||||||
|
}, w)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
servDisc := fyne.NewMenuItem("Disco features", func() {
|
servDisc := fyne.NewMenuItem("Disco features", func() {
|
||||||
var search jid.JID
|
var search jid.JID
|
||||||
dialog.ShowEntryDialog("Disco features", "JID: ", func(s string) { // TODO: replace with undeprecated widget
|
dialog.ShowEntryDialog("Disco features", "JID: ", func(s string) { // TODO: replace with undeprecated widget
|
||||||
@@ -878,7 +925,7 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
myBox := container.NewGridWithColumns(1, widget.NewLabel("Items\na\na\na\na\na"))
|
myBox := container.NewGridWithColumns(1, widget.NewLabel("Items"))
|
||||||
info, err := disco.GetInfo(client.Ctx, "", search, client.Session)
|
info, err := disco.GetInfo(client.Ctx, "", search, client.Session)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
dialog.ShowError(err, w)
|
dialog.ShowError(err, w)
|
||||||
@@ -910,7 +957,7 @@ func main() {
|
|||||||
})
|
})
|
||||||
menu_help := fyne.NewMenu("π", mit, reconnect, savedata)
|
menu_help := fyne.NewMenu("π", mit, reconnect, savedata)
|
||||||
|
|
||||||
menu_changeroom := fyne.NewMenu("Α", mic, servDisc, joinARoom)
|
menu_changeroom := fyne.NewMenu("Α", mic, servDisc, beginADM, joinARoom, leaveRoom)
|
||||||
menu_configureview := fyne.NewMenu("Β", mia, mis, jtt, jtb)
|
menu_configureview := fyne.NewMenu("Β", mia, mis, jtt, jtb)
|
||||||
hafjag := fyne.NewMenuItem("Hafjag", func() {
|
hafjag := fyne.NewMenuItem("Hafjag", func() {
|
||||||
entry.Text = "Hafjag"
|
entry.Text = "Hafjag"
|
||||||
@@ -970,7 +1017,7 @@ func main() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
bic := fyne.NewMenuItem("show message XML", func() {
|
bic := fyne.NewMenuItem("show message XML", func() {
|
||||||
pre := widget.NewLabel("")
|
pre := widget.NewMultiLineEntry()
|
||||||
|
|
||||||
selectedScroller, ok := AppTabs.Selected().Content.(*widget.List)
|
selectedScroller, ok := AppTabs.Selected().Content.(*widget.List)
|
||||||
if !ok {
|
if !ok {
|
||||||
@@ -992,7 +1039,6 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
pre.SetText(string(bytes))
|
pre.SetText(string(bytes))
|
||||||
pre.Selectable = true
|
|
||||||
pre.Refresh()
|
pre.Refresh()
|
||||||
dialog.ShowCustom("Message", "Close", pre, w)
|
dialog.ShowCustom("Message", "Close", pre, w)
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user