66 lines
1.2 KiB
Go
66 lines
1.2 KiB
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()
|
|
updateUsersView(g)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func updateUsersView(g *gocui.Gui) error {
|
|
v, err := g.View("users")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
v.Clear()
|
|
|
|
// TODO: Render profile image of users and change colors of each user maybe?
|
|
for i, u := range users {
|
|
|
|
// Change Selected User In The TUI Window
|
|
if i == selectedUserIdx {
|
|
fmt.Fprintf(v, "%s%s%s\n", Colors.base06, u, Colors.base16)
|
|
_, y := v.Size()
|
|
if i == 0 {
|
|
v.SetOrigin(0, 0)
|
|
} else {
|
|
v.SetOrigin(0, i-y+1)
|
|
}
|
|
|
|
} else {
|
|
fmt.Fprintln(v, u)
|
|
}
|
|
}
|
|
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)
|
|
}
|