checkpoint: mode view added
All checks were successful
/ test (pull_request) Successful in 34s
/ lint (pull_request) Successful in 35s

- replaced baseFlex with a grid to prevent the need to add more flex
  primitive.
- Added first iteration of the mode view.
This commit is contained in:
Dan Anglin 2024-01-15 21:54:21 +00:00
parent dbb37a1060
commit 70238291e7
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
4 changed files with 62 additions and 22 deletions

View file

@ -84,17 +84,17 @@ func (a *App) initQuitModal() {
SetDoneFunc(doneFunc)
}
// initView initialises the view window for displaying the card.
func (a *App) initView() {
// initCardView initialises the view window for displaying the card.
func (a *App) initCardView() {
doneFunc := func(key tcell.Key) {
if key == tcell.KeyEsc {
a.pages.HidePage(viewPage)
a.view.Clear()
a.cardView.Clear()
a.setColumnFocus()
}
}
a.view.setDoneFunc(doneFunc)
a.cardView.setDoneFunc(doneFunc)
}
func (a *App) initStatusbar() {

View file

@ -50,6 +50,7 @@ func (a *App) move() {
a.statusSelection.cardID = a.focusedCardID()
a.statusSelection.currentStatusID = a.focusedStatusID()
a.mode = selection
a.modeView.update(a.mode)
}
}
@ -99,9 +100,9 @@ func (a *App) selected() {
}
status := a.focusedStatusName()
a.view.setText(card.ID, card.Title, status, card.Created, card.Description)
a.cardView.setText(card.ID, card.Title, status, card.Created, card.Description)
a.pages.ShowPage(viewPage)
a.SetFocus(a.view)
a.SetFocus(a.cardView)
case selection:
a.statusSelection.nextStatusID = a.focusedStatusID()
if a.statusSelection.currentStatusID != a.statusSelection.nextStatusID {
@ -127,5 +128,6 @@ func (a *App) selected() {
func (a *App) escape() {
if a.mode != normal {
a.mode = normal
a.modeView.update(a.mode)
}
}

35
internal/ui/modeview.go Normal file
View file

@ -0,0 +1,35 @@
package ui
import (
"fmt"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
)
type modeView struct {
*tview.TextView
format string
}
func newModeView() *modeView {
format := "[white::b]%s[-:-:-:-]"
textView := tview.NewTextView()
textView.SetBackgroundColor(tcell.ColorGrey.TrueColor())
textView.SetTextAlign(tview.AlignLeft)
textView.SetDynamicColors(true)
obj := modeView{
TextView: textView,
format: format,
}
return &obj
}
func (m *modeView) update(mode boardMode) {
m.Clear()
fmt.Fprintf(m, m.format, mode)
}

View file

@ -9,7 +9,7 @@ import (
type (
boardMovement int
boardMode int
boardMode string
)
const (
@ -17,34 +17,33 @@ const (
previous
)
const (
normal boardMode = iota
selection
)
const (
mainPage string = "main"
quitPage string = "quit"
cardFormPage string = "card form"
deleteCardModalPage string = "delete card modal"
viewPage string = "view"
normal boardMode = "NORMAL"
selection boardMode = "SELECTION"
)
type App struct {
*tview.Application
columns []*column
baseFlex *tview.Flex
grid *tview.Grid
columnFlex *tview.Flex
pages *tview.Pages
focusedColumn int
board board.Board
mode boardMode
modeView *modeView
quitModal *tview.Modal
cardForm *cardForm
deleteCardModal *tview.Modal
statusSelection statusSelection
view *cardView
cardView *cardView
statusbar *statusbar
}
@ -58,7 +57,7 @@ func NewApp(path string) (App, error) {
app := App{
Application: tview.NewApplication(),
pages: tview.NewPages(),
baseFlex: tview.NewFlex(),
grid: tview.NewGrid(),
columnFlex: tview.NewFlex(),
quitModal: tview.NewModal(),
cardForm: newCardForm(),
@ -67,8 +66,9 @@ func NewApp(path string) (App, error) {
board: kanban,
deleteCardModal: tview.NewModal(),
mode: normal,
modeView: newModeView(),
statusSelection: statusSelection{0, 0, 0},
view: newCardView(),
cardView: newCardView(),
statusbar: newStatusbar(),
}
@ -85,11 +85,14 @@ func (a *App) Init() error {
a.initStatusbar()
a.baseFlex.SetDirection(tview.FlexRow)
a.baseFlex.AddItem(a.columnFlex, 0, 1, true)
a.baseFlex.AddItem(a.statusbar, 2, 1, false)
a.modeView.update(a.mode)
a.pages.AddPage(mainPage, a.baseFlex, true, true)
a.grid.SetColumns(10, 0).SetRows(0, 1).SetBorders(false)
a.grid.AddItem(a.columnFlex, 0, 0, 1, 2, 0, 0, true)
a.grid.AddItem(a.modeView, 1, 0, 1, 1, 0, 0, false)
a.grid.AddItem(a.statusbar, 1, 1, 1, 1, 0, 0, false)
a.pages.AddPage(mainPage, a.grid, true, true)
a.initQuitModal()
a.pages.AddPage(quitPage, a.quitModal, false, false)
@ -100,8 +103,8 @@ func (a *App) Init() error {
a.initDeleteCardModal()
a.pages.AddPage(deleteCardModalPage, a.deleteCardModal, false, false)
a.initView()
a.pages.AddPage(viewPage, a.view, false, false)
a.initCardView()
a.pages.AddPage(viewPage, a.cardView, false, false)
a.SetRoot(a.pages, true)