diff --git a/app/cli.go b/app/cli.go index 1361ce7..0692f19 100644 --- a/app/cli.go +++ b/app/cli.go @@ -89,6 +89,9 @@ func setKeyboardShortcuts() *tview.Application { event = projectPane.handleShortcuts(event) case taskPane.HasFocus(): event = taskPane.handleShortcuts(event) + if event != nil && projectDetailPane.isShowing() { + event = projectDetailPane.handleShortcuts(event) + } case taskDetailPane.HasFocus(): event = taskDetailPane.handleShortcuts(event) } diff --git a/app/project_detail.go b/app/project_detail.go index 9ba7769..0557433 100644 --- a/app/project_detail.go +++ b/app/project_detail.go @@ -18,8 +18,8 @@ func NewProjectDetailPane() *ProjectDetailPane { pane := ProjectDetailPane{ Flex: tview.NewFlex().SetDirection(tview.FlexRow), } - deleteBtn := makeButton("Delete Project", projectPane.RemoveActivateProject) - clearBtn := makeButton("Clear Completed Tasks", taskPane.ClearCompletedTasks) + deleteBtn := makeButton("[::u]D[::-]elete Project", projectPane.RemoveActivateProject) + clearBtn := makeButton("[::u]C[::-]lear Completed Tasks", taskPane.ClearCompletedTasks) deleteBtn.SetBackgroundColor(tcell.ColorRed) pane. @@ -38,3 +38,20 @@ 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 event.Rune() { + case 'd': + projectPane.RemoveActivateProject() + return nil + case 'c': + taskPane.ClearCompletedTasks() + return nil + } + + return event +} diff --git a/app/tasks.go b/app/tasks.go index 2da2a76..acde0df 100644 --- a/app/tasks.go +++ b/app/tasks.go @@ -80,6 +80,7 @@ func NewTaskPane(projectRepo repository.ProjectRepository, taskRepo repository.T func (pane *TaskPane) ClearList() { pane.list.Clear() pane.tasks = nil + pane.activeTask = nil pane.RemoveItem(pane.newTask) } @@ -160,6 +161,8 @@ func (pane *TaskPane) LoadDynamicList(logic string) { } projectPane.activeProject = nil + taskPane.ClearList() + if err == storm.ErrNotFound { statusBar.showForSeconds("[yellow]No Task was scheduled for "+rangeDesc, 5) pane.SetList(tasks)