From 84b81badbb4fab7a735b82e28d5cd47ecfbecb64 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Fri, 9 Jul 2021 09:17:26 +0300 Subject: Implemented a very basic chats window --- go-src/ui/ui.go | 8 ++++++++ go-src/windows.go | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 54 insertions(+), 3 deletions(-) (limited to 'go-src') diff --git a/go-src/ui/ui.go b/go-src/ui/ui.go index 2886fff..a35eac0 100644 --- a/go-src/ui/ui.go +++ b/go-src/ui/ui.go @@ -120,3 +120,11 @@ func GetInput() string { scanner.Scan() return scanner.Text() } + +func PageField(current int, max int) string { + return fmt.Sprintf("├─Page %v/%v─┘", current, max) +} + +func EmptyLine() string { + return string(boxVertLine) +} diff --git a/go-src/windows.go b/go-src/windows.go index 983d450..a92d239 100644 --- a/go-src/windows.go +++ b/go-src/windows.go @@ -89,9 +89,52 @@ func registerWindow(values ...string) { } } -func chatsWindow(...string) { - fmt.Println("Works!") - fmt.Println(loggedInUser) +func chatsWindow(values ...string) { + clearScreen() + + fmt.Println(ui.NormalBox(true, "Direct Messages", "Account", "Logout")) + fmt.Println(ui.PageField(0, 0)) + fmt.Println(ui.EmptyLine()) + + if len(values) > 0 { + if values[len(values)-1] == "ShowHelp" { + fmt.Println(ui.TextField("Chats page options: [(D)irect messages/(A)ccount/(L)ogout/(<) for previous page/(>) for next page/(C) for create chat/(name) for go to chat room by name/(number) for go to chat room by number/(H)elp]")) + } + } + fmt.Print(ui.InputField("[D/A/L//C/E/name/number/H]")) + + val := ui.GetInput() + + handled := handleInputActions(val, true, + inputAction{"H", chatsWindow, []string{"ShowHelp"}}, + ) + if !handled { + defer showError(invalidCommand, chatsWindow) + } +} + +type inputAction struct { + value string + execute func(...string) + args []string +} + +func handleInputActions(input string, handleNav bool, ia ...inputAction) bool { + if handleNav { + ia = append(ia, + inputAction{"C", chatsWindow, nil}, + inputAction{"D", chatsWindow, nil}, + inputAction{"A", chatsWindow, nil}, + inputAction{"L", chatsWindow, nil}, + ) + } + for _, v := range ia { + if input == v.value { + defer v.execute(v.args...) + return true + } + } + return false } var clearNext = true -- cgit v1.2.3