pelican/internal/ui/init.go
Dan Anglin dbb37a1060
refactor: a lil bit of refactoring
Changes:

- Rename the UI type to App.
- Rename NewUI() to NewApp().
- Move init functions to internal/ui/ui.go.
- Call app's initialisation function from main.
- Move the keymapping functionalities to internal/ui/keymappings.go.
- Add documentation for updateColumn() and updateAllColumns().
- Applied gofmt.

Also:

- Build(mage): optionally include -a and/or -v during go build.
2024-01-14 13:46:42 +00:00

106 lines
2.3 KiB
Go

package ui
import (
"fmt"
"github.com/gdamore/tcell/v2"
)
// initColumns initialises the columns of the Kanban board.
func (a *App) initColumns() error {
a.columnFlex.Clear()
statusList, err := a.board.StatusList()
if err != nil {
return fmt.Errorf("unable to retrieve the list of statuses; %w", err)
}
columns := make([]*column, len(statusList))
for i := range statusList {
column := newColumn(statusList[i].ID, statusList[i].Name, a.boardMode)
a.columnFlex.AddItem(column, 50, 1, true)
columns[i] = column
}
a.columns = columns
return nil
}
// initCardForm initialises the card form.
func (a *App) initCardForm() {
doneFunc := func(title, description string, success bool, mode cardFormMode) {
if success {
switch mode {
case create:
a.saveCard(title, description)
case edit:
a.editFocusedCard(title, description)
}
}
a.pages.HidePage(cardFormPage)
a.setColumnFocus()
}
a.cardForm.setDoneFunc(doneFunc)
}
// initDeleteCardModal initialises the modal for deleting cards.
func (a *App) initDeleteCardModal() {
doneFunc := func(_ int, buttonLabel string) {
if buttonLabel == "Confirm" {
a.deleteFocusedCard()
a.refresh(true)
}
a.pages.HidePage(deleteCardModalPage)
a.setColumnFocus()
}
a.deleteCardModal.AddButtons([]string{"Confirm", "Cancel"}).SetDoneFunc(doneFunc)
a.deleteCardModal.SetBorder(true).SetBorderColor(tcell.ColorOrangeRed)
a.deleteCardModal.SetBackgroundColor(tcell.ColorBlack.TrueColor())
a.deleteCardModal.SetButtonBackgroundColor(tcell.ColorBlueViolet.TrueColor())
a.deleteCardModal.SetTextColor(tcell.ColorWhite.TrueColor())
}
// initQuitModal initialises the quit modal.
func (a *App) initQuitModal() {
doneFunc := func(_ int, buttonLabel string) {
switch buttonLabel {
case "Quit":
a.shutdown()
default:
a.pages.HidePage(quitPage)
a.setColumnFocus()
}
}
a.quitModal.SetText("Do you want to quit the application?").
AddButtons([]string{"Quit", "Cancel"}).
SetDoneFunc(doneFunc)
}
// initView initialises the view window for displaying the card.
func (a *App) initView() {
doneFunc := func(key tcell.Key) {
if key == tcell.KeyEsc {
a.pages.HidePage(viewPage)
a.view.Clear()
a.setColumnFocus()
}
}
a.view.setDoneFunc(doneFunc)
}
func (a *App) initStatusbar() {
changedFunc := func() {
a.Draw()
}
a.statusbar.SetChangedFunc(changedFunc)
}