Added shortcuts '+', '-' and 'o' for date selection shortcuts, underlining for those and 'e' (#26)

* added shortcuts '+', '-' and 'o' for date selection shortcut
* underlining shortcut key for  those and 'e' (Edit description)
* Moved set due date logic in separate functions
This commit is contained in:
Patrick Euerle
2021-10-07 10:57:55 +02:00
committed by GitHub
parent 0208277ce1
commit eaba2373d3
2 changed files with 29 additions and 17 deletions

View File

@@ -102,11 +102,14 @@ In case writing in a text input (e,g, new project/task, due date), you have to `
| Task Detail | `Esc`/`h` | Go back to Tasks Pane | | Task Detail | `Esc`/`h` | Go back to Tasks Pane |
| Task Detail | `Space` | Toggle task as done/pending | | Task Detail | `Space` | Toggle task as done/pending |
| Task Detail | `d` | Set Due date | | Task Detail | `d` | Set Due date |
| Task Detail | `o` | Set Due date to today |
| Task Detail | `+` | Due date plus 1 |
| Task Detail | `-` | Due date minus 1 |
| Task Detail | `↓`/`↑` | Scroll Up/Down the note editor | | Task Detail | `↓`/`↑` | Scroll Up/Down the note editor |
| Task Detail | `e` | Activate note editor for modification | | Task Detail | `e` | Activate note editor for modification |
| Task Detail | `v` | Edit task details in external editor (default `vim`) | | Task Detail | `v` | Edit task details in external editor (default `vim`) |
| Task Detail | `r` | Rename Task Title | | Task Detail | `r` | Rename Task Title |
| Task Detail | `x` | Export Task to clipboard | | Task Detail | `x` | Export Task to clipboard |
| Active Note Editor | `Esc` | Deactivate note editor and save content | | Active Note Editor | `Esc` | Deactivate note editor and save content |
**Tips about using shortcuts efficiently:** **Tips about using shortcuts efficiently:**

View File

@@ -56,7 +56,7 @@ func NewTaskDetailPane(taskRepo repository.TaskRepository) *TaskDetailPane {
// Prepare static (no external interaction) elements // Prepare static (no external interaction) elements
editorLabel := tview.NewFlex(). editorLabel := tview.NewFlex().
AddItem(tview.NewTextView().SetText("Task Not[::u]e[::-]:").SetDynamicColors(true), 0, 1, false). AddItem(tview.NewTextView().SetText("Task Not[::u]e[::-]:").SetDynamicColors(true), 0, 1, false).
AddItem(makeButton("edit", func() { pane.activateEditor() }), 6, 0, false) AddItem(makeButton("[::u]e[::-]dit", func() { pane.activateEditor() }), 6, 0, false)
editorHelp := tview.NewFlex(). editorHelp := tview.NewFlex().
AddItem(pane.editorHint, 0, 1, false). AddItem(pane.editorHint, 0, 1, false).
AddItem(tview.NewTextView().SetTextAlign(tview.AlignRight). AddItem(tview.NewTextView().SetTextAlign(tview.AlignRight).
@@ -111,27 +111,15 @@ func (td *TaskDetailPane) makeDateRow() *tview.Flex {
app.SetFocus(td) app.SetFocus(td)
}) })
todaySelector := func() {
td.setTaskDate(parseDateInputOrCurrent("").Unix(), true)
}
nextDaySelector := func() {
td.setTaskDate(parseDateInputOrCurrent(td.taskDate.GetText()).AddDate(0, 0, 1).Unix(), true)
}
prevDaySelector := func() {
td.setTaskDate(parseDateInputOrCurrent(td.taskDate.GetText()).AddDate(0, 0, -1).Unix(), true)
}
return tview.NewFlex(). return tview.NewFlex().
AddItem(td.taskDateDisplay, 0, 2, true). AddItem(td.taskDateDisplay, 0, 2, true).
AddItem(td.taskDate, 14, 0, true). AddItem(td.taskDate, 14, 0, true).
AddItem(blankCell, 1, 0, false). AddItem(blankCell, 1, 0, false).
AddItem(makeButton("today", todaySelector), 8, 1, false). AddItem(makeButton("t[::u]o[::-]day", td.todaySelector), 8, 1, false).
AddItem(blankCell, 1, 0, false). AddItem(blankCell, 1, 0, false).
AddItem(makeButton("+1", nextDaySelector), 4, 1, false). AddItem(makeButton("[::u]+[::-]1", td.nextDaySelector), 4, 1, false).
AddItem(blankCell, 1, 0, false). AddItem(blankCell, 1, 0, false).
AddItem(makeButton("-1", prevDaySelector), 4, 1, false) AddItem(makeButton("[::u]-[::-]1", td.prevDaySelector), 4, 1, false)
} }
func (td *TaskDetailPane) updateToggleDisplay() { func (td *TaskDetailPane) updateToggleDisplay() {
@@ -328,6 +316,15 @@ func (td *TaskDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey
case 'x': case 'x':
td.Export() td.Export()
return nil return nil
case 'o':
td.todaySelector()
return nil
case '+':
td.nextDaySelector()
return nil
case '-':
td.prevDaySelector()
return nil
} }
} }
@@ -346,3 +343,15 @@ func (td *TaskDetailPane) SetTask(task *model.Task) {
td.updateToggleDisplay() td.updateToggleDisplay()
td.deactivateEditor() td.deactivateEditor()
} }
func (td *TaskDetailPane) todaySelector() {
td.setTaskDate(parseDateInputOrCurrent("").Unix(), true)
}
func (td *TaskDetailPane) nextDaySelector() {
td.setTaskDate(parseDateInputOrCurrent(td.taskDate.GetText()).AddDate(0, 0, 1).Unix(), true)
}
func (td *TaskDetailPane) prevDaySelector() {
td.setTaskDate(parseDateInputOrCurrent(td.taskDate.GetText()).AddDate(0, 0, -1).Unix(), true)
}