subsonic-tui/internal/tui/views/login.go
Sagi Dayan 26e526f07e
initial commit
Signed-off-by: Sagi Dayan <sagidayan@gmail.com>
2024-02-20 19:10:14 +02:00

74 lines
1.4 KiB
Go

package views
import (
"github.com/rivo/tview"
)
var _ View = &login{}
const (
ViewEventLoginClicked = "login-clicked"
)
type login struct {
view *tview.Flex
form *tview.Form
username string
password string
url string
loginFunc func(u, p, url string)
exitFunc func()
}
func (l *login) GetView() tview.Primitive {
return l.view
}
func (l *login) onFormLogin() {
l.loginFunc(l.username, l.password, l.url)
}
func NewLoginView(loginFunc func(u, p, url string), exitFunc func()) View {
l := &login{}
l.loginFunc = loginFunc
l.exitFunc = exitFunc
form := tview.NewForm().
AddInputField("Server URL", "https://", 20, nil, func(text string) {
l.url = text
}).
AddInputField("Username", "", 20, nil, func(text string) {
l.username = text
}).
AddPasswordField("Password", "", 20, '*', func(text string) {
l.password = text
}).
AddButton("Login", l.onFormLogin).
AddButton("Quit", func() {
l.exitFunc()
})
form.SetBorder(true).SetTitle(" Login ").SetTitleAlign(tview.AlignCenter)
width := 50
height := 20
wrapper := tview.NewFlex().
AddItem(nil, 0, 1, false).
AddItem(tview.NewFlex().SetDirection(tview.FlexRow).
AddItem(nil, 0, 1, false).
AddItem(form, height, 1, true).
AddItem(nil, 0, 1, false), width, 1, true).
AddItem(nil, 0, 1, false)
l.view = wrapper
l.form = form
l.GetView().Focus(func(p tview.Primitive) {})
form.SetFocus(0)
return l
}
func (l *login) Update() {
}