Keyboard shortcuts for Project related actions added. Closes #13

This commit is contained in:
Anis Ahmad
2021-03-09 00:28:07 +06:00
parent ae2dc575b1
commit 0087d6ea1f
3 changed files with 25 additions and 2 deletions

View File

@@ -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)
}

View File

@@ -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
}

View File

@@ -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)