Organized approach to handle shortcuts based on currently focused panel
This commit is contained in:
25
app/cli.go
25
app/cli.go
@@ -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())
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user