Task rename added. Closes #3

- Moved title of TaskDetail panel to separate component
- Refactored indentation, formatting
- Updated status bar
This commit is contained in:
Anis Ahmad
2020-07-11 07:48:16 +06:00
parent 1508edce6f
commit 533c28f8bc
7 changed files with 116 additions and 23 deletions

View File

@@ -23,21 +23,22 @@ const dateLayoutHuman = "02 Jan, Monday"
// TaskDetailPane displays detailed info of a Task
type TaskDetailPane struct {
*tview.Flex
taskName, taskDateDisplay *tview.TextView
editorHint *tview.TextView
taskDate *tview.InputField
taskStatusToggle *tview.Button
taskDetailView *femto.View
colorScheme femto.Colorscheme
taskRepo repository.TaskRepository
task *model.Task
header *TaskDetailHeader
taskDateDisplay *tview.TextView
editorHint *tview.TextView
taskDate *tview.InputField
taskStatusToggle *tview.Button
taskDetailView *femto.View
colorScheme femto.Colorscheme
taskRepo repository.TaskRepository
task *model.Task
}
// NewTaskDetailPane initializes and configures a TaskDetailPane
func NewTaskDetailPane(taskRepo repository.TaskRepository) *TaskDetailPane {
pane := TaskDetailPane{
Flex: tview.NewFlex().SetDirection(tview.FlexRow),
taskName: tview.NewTextView().SetDynamicColors(true),
header: NewTaskDetailHeader(taskRepo),
taskDateDisplay: tview.NewTextView().SetDynamicColors(true),
taskStatusToggle: makeButton("Complete", nil).SetLabelColor(tcell.ColorLightGray),
taskRepo: taskRepo,
@@ -61,8 +62,7 @@ func NewTaskDetailPane(taskRepo repository.TaskRepository) *TaskDetailPane {
SetTextColor(tcell.ColorDimGray), 0, 1, false)
pane.
AddItem(pane.taskName, 2, 1, true).
AddItem(makeHorizontalLine(tcell.RuneS3, tcell.ColorGray), 1, 1, false).
AddItem(pane.header, 4, 1, true).
AddItem(blankCell, 1, 1, false).
AddItem(pane.makeDateRow(), 1, 1, true).
AddItem(blankCell, 1, 1, false).
@@ -130,8 +130,7 @@ func (td *TaskDetailPane) toggleTaskStatus() {
status := !td.task.Completed
if taskRepo.UpdateField(td.task, "Completed", status) == nil {
td.task.Completed = status
td.SetTask(td.task)
taskPane.list.SetItemText(taskPane.list.GetCurrentItem(), makeTaskListingTitle(*td.task), "")
taskPane.ReloadCurrentTask()
}
}
@@ -299,12 +298,11 @@ func (td *TaskDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey
td.editInExternalEditor()
case 'd':
app.SetFocus(td.taskDate)
case 'h':
app.SetFocus(taskPane)
case 'r':
td.header.ShowRename()
case ' ':
td.toggleTaskStatus()
}
}
return event
@@ -314,7 +312,7 @@ func (td *TaskDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey
func (td *TaskDetailPane) SetTask(task *model.Task) {
td.task = task
td.taskName.SetText(fmt.Sprintf("[%s::b]# %s", getTaskTitleColor(*td.task), td.task.Title))
td.header.SetTask(task)
td.taskDetailView.Buf = makeBufferFromString(td.task.Details)
td.taskDetailView.SetColorscheme(td.colorScheme)
td.taskDetailView.Start()