Files
geek-life/app/project_detail.go

60 lines
1.4 KiB
Go

package main
import (
"unicode"
"github.com/gdamore/tcell/v2"
"github.com/rivo/tview"
"github.com/ajaxray/geek-life/model"
)
// ProjectDetailPane Displays relevant actions of current project
type ProjectDetailPane struct {
*tview.Flex
project *model.Project
}
// NewProjectDetailPane Initializes ProjectDetailPane
func NewProjectDetailPane() *ProjectDetailPane {
pane := ProjectDetailPane{
Flex: tview.NewFlex().SetDirection(tview.FlexRow),
}
deleteBtn := makeButton("[::u]D[::-]elete Project", projectPane.RemoveActivateProject)
clearBtn := makeButton("[::u]C[::-]lear Completed Tasks", taskPane.ClearCompletedTasks)
deleteBtn.SetBackgroundColor(tcell.ColorRed)
pane.
AddItem(deleteBtn, 3, 1, false).
AddItem(blankCell, 1, 1, false).
AddItem(clearBtn, 3, 1, false).
AddItem(blankCell, 0, 1, false)
pane.SetBorder(true).SetTitle("[::u]A[::-]ctions")
return &pane
}
// SetProject Sets the active Project
func (pd *ProjectDetailPane) SetProject(project *model.Project) {
pd.project = project
pd.SetTitle("[::b]" + pd.project.Title)
}
func (pd *ProjectDetailPane) isShowing() bool {
return taskPane.activeTask == nil && projectPane.activeProject != nil
}
func (pd *ProjectDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey {
switch unicode.ToLower(event.Rune()) {
case 'd':
projectPane.RemoveActivateProject()
return nil
case 'c':
taskPane.ClearCompletedTasks()
return nil
}
return event
}