This repository has been archived on 2024-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
adlin/pkg/login-app/cmd/dialog-checklogin.go

45 lines
1.2 KiB
Go

package main
import (
"math"
"time"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
func CreateCheckDialog(app *tview.Application) *tview.Box {
progress := 0
box := tview.NewBox().
SetBorder(true).
SetTitle(" SRS Adlin - Login ").
SetDrawFunc(func(screen tcell.Screen, x int, y int, width int, height int) (int, int, int, int) {
tview.Print(screen, "Please wait", x, y+2, width-2, tview.AlignCenter, tcell.ColorYellow)
tview.Print(screen, "Connecting to login server...", x, y+3, width-2, tview.AlignCenter, tcell.ColorYellow)
// Draw the progress bar
for cx := x + 2; cx < x+width-2; cx++ {
if (cx-x)*100/(width-2) > progress {
screen.SetContent(cx, y+5, tview.BoxDrawingsLightHorizontal, nil, tcell.StyleDefault.Background(tcell.ColorBlack))
} else {
screen.SetContent(cx, y+5, ' ', nil, tcell.StyleDefault.Background(tcell.ColorBlue))
}
}
return x, y, width, height
})
app.SetRoot(modal(box, 40, 8), true)
app.SetFocus(box)
go func() {
for i := 0; i < 422; i += 1 {
progress = int(math.Floor(math.Log(float64(i)*8)*16 - 30))
time.Sleep(64 * time.Millisecond)
app.Draw()
}
}()
return box
}