Organized approach to handle shortcuts based on currently focused panel

This commit is contained in:
Anis Ahmad
2020-05-30 13:17:20 +06:00
parent 9a6d3c6b30
commit 89624edcba
4 changed files with 43 additions and 15 deletions

View File

@@ -74,24 +74,23 @@ func setKeyboardShortcuts(projectPane *tview.Flex, taskPane *tview.Flex) *tview.
if ignoreKeyEvt() {
return event
}
// Handle based on current focus. Handlers may modify event
switch {
case projectPane.HasFocus():
event = handleProjectPaneShortcuts(event)
case taskPane.HasFocus():
event = handleTaskPaneShortcuts(event)
case detailPane.HasFocus():
event = handleDetailPaneShortcuts(event)
}
// Global shortcuts
switch event.Rune() {
case 'p':
app.SetFocus(projectPane)
case 't':
app.SetFocus(taskPane)
case 'n':
if projectPane.HasFocus() {
app.SetFocus(newProject)
} else if taskPane.HasFocus() {
app.SetFocus(newTask)
}
case 'e':
if detailPane.HasFocus() {
activateEditor()
} else {
// @TODO : Remove
showMessage(reflect.TypeOf(app.GetFocus()).String())
}
case 'f':
// @TODO : Remove
showMessage(reflect.TypeOf(app.GetFocus()).String())

View File

@@ -76,3 +76,12 @@ func loadProject(idx int) {
contents.RemoveItem(detailPane)
}
func handleProjectPaneShortcuts(event *tcell.EventKey) *tcell.EventKey {
switch event.Rune() {
case 'n':
app.SetFocus(newProject)
}
return event
}

View File

@@ -146,11 +146,11 @@ func setTaskDate(unixDate int64, update bool) {
if due.Before(time.Now()) {
color = "red"
}
taskDateDisplay.SetText(fmt.Sprintf("Due: [%s]%s", color, humanDate))
taskDateDisplay.SetText(fmt.Sprintf("[::u]D[::-]ue: [%s]%s", color, humanDate))
taskDate.SetText(due.Format(dateLayoutISO))
} else {
taskDate.SetText("")
taskDateDisplay.SetText("Due: [::d]Not Set")
taskDateDisplay.SetText("[::u]D[::-]ue: [::d]Not Set")
}
}
@@ -210,3 +210,14 @@ func deactivateEditor() {
taskDetailView.SetBorderColor(tcell.ColorLightSlateGray)
app.SetFocus(detailPane)
}
func handleDetailPaneShortcuts(event *tcell.EventKey) *tcell.EventKey {
switch event.Rune() {
case 'e':
activateEditor()
case 'd':
app.SetFocus(taskDate)
}
return event
}

View File

@@ -78,3 +78,12 @@ func makeTaskListingTitle(task model.Task) string {
}
return fmt.Sprintf("[%s]%s %s", getTaskTitleColor(task), checkbox, task.Title)
}
func handleTaskPaneShortcuts(event *tcell.EventKey) *tcell.EventKey {
switch event.Rune() {
case 'n':
app.SetFocus(newTask)
}
return event
}