71 lines
1.7 KiB
Go
71 lines
1.7 KiB
Go
package chat
|
|
|
|
import (
|
|
"github.com/ayn2op/tview/help"
|
|
"github.com/ayn2op/tview/keybind"
|
|
)
|
|
|
|
var _ help.KeyMap = (*Model)(nil)
|
|
|
|
func (v *Model) ShortHelp() []keybind.Keybind {
|
|
short := make([]keybind.Keybind, 0, 16)
|
|
if active := v.activeKeyMap(); active != nil {
|
|
short = append(short, active.ShortHelp()...)
|
|
}
|
|
short = append(short, v.baseShortHelp()...)
|
|
return short
|
|
}
|
|
|
|
func (v *Model) FullHelp() [][]keybind.Keybind {
|
|
full := make([][]keybind.Keybind, 0, 8)
|
|
if active := v.activeKeyMap(); active != nil {
|
|
full = append(full, active.FullHelp()...)
|
|
}
|
|
full = append(full, v.baseFullHelp()...)
|
|
return full
|
|
}
|
|
|
|
func (v *Model) activeKeyMap() help.KeyMap {
|
|
if v.GetVisible(channelsPickerLayerName) {
|
|
return v.channelsPicker
|
|
}
|
|
|
|
if v.app == nil {
|
|
return nil
|
|
}
|
|
|
|
switch v.app.GetFocus() {
|
|
case v.guildsTree:
|
|
return v.guildsTree
|
|
case v.messagesList:
|
|
return v.messagesList
|
|
case v.messageInput:
|
|
return v.messageInput
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func (v *Model) baseShortHelp() []keybind.Keybind {
|
|
cfg := v.cfg.Keybinds
|
|
short := []keybind.Keybind{cfg.FocusGuildsTree.Keybind, cfg.FocusMessagesList.Keybind}
|
|
if !v.messageInput.GetDisabled() {
|
|
short = append(short, cfg.FocusMessageInput.Keybind)
|
|
}
|
|
short = append(short, cfg.ToggleGuildsTree.Keybind, cfg.ToggleChannelsPicker.Keybind)
|
|
return short
|
|
}
|
|
|
|
func (v *Model) baseFullHelp() [][]keybind.Keybind {
|
|
cfg := v.cfg.Keybinds
|
|
focus := []keybind.Keybind{cfg.FocusGuildsTree.Keybind, cfg.FocusMessagesList.Keybind}
|
|
if !v.messageInput.GetDisabled() {
|
|
focus = append(focus, cfg.FocusMessageInput.Keybind)
|
|
}
|
|
return [][]keybind.Keybind{
|
|
focus,
|
|
{cfg.FocusPrevious.Keybind, cfg.FocusNext.Keybind},
|
|
{cfg.ToggleGuildsTree.Keybind, cfg.ToggleChannelsPicker.Keybind},
|
|
{cfg.Logout.Keybind},
|
|
}
|
|
}
|