Dan Anglin
db65a51c66
- Rename UI to App - Rename NewUI to NewApp - Move init functions to internal/ui/ui.go - Call app's initialisation function from main. - Move the keybinding functionality to internal/ui/keymappings.go - Add documentation for updateColumn and updateAllColumns
106 lines
2.3 KiB
Go
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)
|
|
}
|