refactor(guildstree): move help keymap to keymap.go
This commit is contained in:
parent
3de72a697d
commit
2b651a1459
2 changed files with 80 additions and 73 deletions
80
internal/ui/chat/guildstree/keymap.go
Normal file
80
internal/ui/chat/guildstree/keymap.go
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
package guildstree
|
||||
|
||||
import (
|
||||
"github.com/ayn2op/arikawa/v3/discord"
|
||||
"github.com/ayn2op/tview/help"
|
||||
"github.com/ayn2op/tview/keybind"
|
||||
"github.com/ayn2op/tview/tree"
|
||||
)
|
||||
|
||||
var _ help.KeyMap = Model{}
|
||||
|
||||
func (m *Model) selectCurrentKeybind() keybind.Keybind {
|
||||
selectCurrent := m.cfg.Keybinds.GuildsTree.SelectCurrent.Keybind
|
||||
selectHelp := selectCurrent.Help()
|
||||
selectDesc := selectHelp.Desc
|
||||
if node := m.selectionState.CurrentNode(); node != nil {
|
||||
if len(node.Children()) > 0 {
|
||||
if node.Expanded() {
|
||||
selectDesc = "collapse"
|
||||
} else {
|
||||
selectDesc = "expand"
|
||||
}
|
||||
} else {
|
||||
switch node.Reference().(type) {
|
||||
case discord.GuildID, dmNode:
|
||||
selectDesc = "expand"
|
||||
}
|
||||
}
|
||||
}
|
||||
return selectCurrent.WithHelp(selectHelp.Key, selectDesc)
|
||||
}
|
||||
|
||||
func (m Model) ShortHelp() []keybind.Keybind {
|
||||
cfg := m.cfg.Keybinds.GuildsTree
|
||||
shortHelp := []keybind.Keybind{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, m.selectCurrentKeybind()}
|
||||
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
||||
shortHelp = append(shortHelp, cfg.CollapseParentNode.Keybind)
|
||||
}
|
||||
return shortHelp
|
||||
}
|
||||
|
||||
func (m Model) FullHelp() [][]keybind.Keybind {
|
||||
cfg := m.cfg.Keybinds.GuildsTree
|
||||
selectGroup := []keybind.Keybind{m.selectCurrentKeybind(), cfg.MoveToParentNode.Keybind}
|
||||
selectGroup = append(selectGroup, m.collapseKeybinds()...)
|
||||
|
||||
return [][]keybind.Keybind{
|
||||
{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, cfg.SelectTop.Keybind, cfg.SelectBottom.Keybind},
|
||||
selectGroup,
|
||||
{cfg.YankID.Keybind},
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Model) collapseKeybinds() []keybind.Keybind {
|
||||
cfg := m.cfg.Keybinds.GuildsTree
|
||||
|
||||
var keybinds []keybind.Keybind
|
||||
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
||||
keybinds = append(keybinds, cfg.CollapseParentNode.Keybind)
|
||||
}
|
||||
if m.canCollapseAll() {
|
||||
keybinds = append(keybinds, cfg.CollapseAll.Keybind)
|
||||
}
|
||||
return keybinds
|
||||
}
|
||||
|
||||
func (m *Model) canCollapseParent(node *tree.Node) bool {
|
||||
return node != nil && len(m.root.PathTo(node)) >= 3
|
||||
}
|
||||
|
||||
func (m *Model) canCollapseAll() bool {
|
||||
var can bool
|
||||
for _, node := range m.root.Children() {
|
||||
if node.Expanded() {
|
||||
can = true
|
||||
break
|
||||
}
|
||||
}
|
||||
return can
|
||||
}
|
||||
|
|
@ -11,7 +11,6 @@ import (
|
|||
"github.com/ayn2op/ningen/v3"
|
||||
"github.com/ayn2op/ningen/v3/states/read"
|
||||
"github.com/ayn2op/tview"
|
||||
"github.com/ayn2op/tview/help"
|
||||
"github.com/ayn2op/tview/keybind"
|
||||
"github.com/ayn2op/tview/tree"
|
||||
"github.com/gdamore/tcell/v3"
|
||||
|
|
@ -433,78 +432,6 @@ func (m *Model) expandPathToNode(node *tree.Node) {
|
|||
}
|
||||
}
|
||||
|
||||
var _ help.KeyMap = Model{}
|
||||
|
||||
func (m *Model) selectCurrentKeybind() keybind.Keybind {
|
||||
selectCurrent := m.cfg.Keybinds.GuildsTree.SelectCurrent.Keybind
|
||||
selectHelp := selectCurrent.Help()
|
||||
selectDesc := selectHelp.Desc
|
||||
if node := m.selectionState.CurrentNode(); node != nil {
|
||||
if len(node.Children()) > 0 {
|
||||
if node.Expanded() {
|
||||
selectDesc = "collapse"
|
||||
} else {
|
||||
selectDesc = "expand"
|
||||
}
|
||||
} else {
|
||||
switch node.Reference().(type) {
|
||||
case discord.GuildID, dmNode:
|
||||
selectDesc = "expand"
|
||||
}
|
||||
}
|
||||
}
|
||||
return selectCurrent.WithHelp(selectHelp.Key, selectDesc)
|
||||
}
|
||||
|
||||
func (m Model) ShortHelp() []keybind.Keybind {
|
||||
cfg := m.cfg.Keybinds.GuildsTree
|
||||
shortHelp := []keybind.Keybind{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, m.selectCurrentKeybind()}
|
||||
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
||||
shortHelp = append(shortHelp, cfg.CollapseParentNode.Keybind)
|
||||
}
|
||||
return shortHelp
|
||||
}
|
||||
|
||||
func (m Model) FullHelp() [][]keybind.Keybind {
|
||||
cfg := m.cfg.Keybinds.GuildsTree
|
||||
selectGroup := []keybind.Keybind{m.selectCurrentKeybind(), cfg.MoveToParentNode.Keybind}
|
||||
selectGroup = append(selectGroup, m.collapseKeybinds()...)
|
||||
|
||||
return [][]keybind.Keybind{
|
||||
{cfg.SelectUp.Keybind, cfg.SelectDown.Keybind, cfg.SelectTop.Keybind, cfg.SelectBottom.Keybind},
|
||||
selectGroup,
|
||||
{cfg.YankID.Keybind},
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Model) collapseKeybinds() []keybind.Keybind {
|
||||
cfg := m.cfg.Keybinds.GuildsTree
|
||||
|
||||
var keybinds []keybind.Keybind
|
||||
if m.canCollapseParent(m.selectionState.CurrentNode()) {
|
||||
keybinds = append(keybinds, cfg.CollapseParentNode.Keybind)
|
||||
}
|
||||
if m.canCollapseAll() {
|
||||
keybinds = append(keybinds, cfg.CollapseAll.Keybind)
|
||||
}
|
||||
return keybinds
|
||||
}
|
||||
|
||||
func (m *Model) canCollapseParent(node *tree.Node) bool {
|
||||
return node != nil && len(m.root.PathTo(node)) >= 3
|
||||
}
|
||||
|
||||
func (m *Model) canCollapseAll() bool {
|
||||
var can bool
|
||||
for _, node := range m.root.Children() {
|
||||
if node.Expanded() {
|
||||
can = true
|
||||
break
|
||||
}
|
||||
}
|
||||
return can
|
||||
}
|
||||
|
||||
func unreadStyle(indication ningen.UnreadIndication) tcell.Style {
|
||||
var style tcell.Style
|
||||
switch indication {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue