58 lines
1006 B
Go
58 lines
1006 B
Go
package tui
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/jroimartin/gocui"
|
|
)
|
|
|
|
// LAYOUT
|
|
func layoutSidebar(g *gocui.Gui, maxY int) error {
|
|
if v, err := g.SetView("users", 0, 0, 20, maxY-1); err != nil {
|
|
if err != gocui.ErrUnknownView {
|
|
return err
|
|
}
|
|
v.Title = "Users"
|
|
v.Clear()
|
|
for _, u := range users {
|
|
fmt.Fprintln(v, u+"\n")
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func updateUsersView(g *gocui.Gui) error {
|
|
v, err := g.View("users")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
v.Clear()
|
|
for i, u := range users {
|
|
if i == selectedUserIdx {
|
|
fmt.Fprintln(v, fmt.Sprintf(">%s\n", u))
|
|
} else {
|
|
fmt.Fprintln(v, u+"\n")
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// KEYBINDINGS
|
|
func nextContact(g *gocui.Gui, v *gocui.View) error {
|
|
if len(users) == 0 {
|
|
return nil
|
|
}
|
|
selectedUserIdx = (selectedUserIdx + 1) % len(users)
|
|
return updateUsersView(g)
|
|
}
|
|
|
|
func prevContact(g *gocui.Gui, v *gocui.View) error {
|
|
if len(users) == 0 {
|
|
return nil
|
|
}
|
|
selectedUserIdx = (selectedUserIdx - 1 + len(users)) % len(users)
|
|
return updateUsersView(g)
|
|
}
|