From e466e2f801238ebc0283d6aeba64c3d5835f29a3 Mon Sep 17 00:00:00 2001 From: Kuprijanov Roman Date: Fri, 7 Jan 2022 15:01:52 +0200 Subject: [PATCH] Show confirmation popup for delete project and clear completed tasks (#35) --- app/cli.go | 22 ++++++++++++++++++++++ app/project_detail.go | 12 ++++++++---- app/task_detail.go | 1 + 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/app/cli.go b/app/cli.go index 2804513..ed4f818 100644 --- a/app/cli.go +++ b/app/cli.go @@ -88,9 +88,12 @@ func setKeyboardShortcuts() *tview.Application { switch unicode.ToLower(event.Rune()) { case 'p': app.SetFocus(projectPane) + contents.RemoveItem(taskDetailPane) return nil + case 'q': case 't': app.SetFocus(taskPane) + contents.RemoveItem(taskDetailPane) return nil } @@ -133,3 +136,22 @@ func makeTitleBar() *tview.Flex { AddItem(titleText, 0, 2, false). AddItem(versionInfo, 0, 1, false) } + +func AskYesNo(text string, f func()) { + + modal := tview.NewModal(). + SetText(text). + AddButtons([]string{"Yes", "No"}). + SetDoneFunc(func(buttonIndex int, buttonLabel string) { + if buttonLabel == "Yes" { + f() + } + pages := tview.NewPages(). + AddPage("background", layout, true, true) + _ = app.SetRoot(pages, true).EnableMouse(true).Run() + }) + pages := tview.NewPages(). + AddPage("background", layout, true, true). + AddPage("modal", modal, true, true) + _ = app.SetRoot(pages, true).EnableMouse(true).Run() +} diff --git a/app/project_detail.go b/app/project_detail.go index 2e97790..60a7995 100644 --- a/app/project_detail.go +++ b/app/project_detail.go @@ -20,8 +20,12 @@ func NewProjectDetailPane() *ProjectDetailPane { pane := ProjectDetailPane{ Flex: tview.NewFlex().SetDirection(tview.FlexRow), } - deleteBtn := makeButton("[::u]D[::-]elete Project", projectPane.RemoveActivateProject) - clearBtn := makeButton("[::u]C[::-]lear Completed Tasks", taskPane.ClearCompletedTasks) + deleteBtn := makeButton("[::u]D[::-]elete Project", func() { + AskYesNo("Do you want to delete Project?", func() { projectPane.RemoveActivateProject() }) + }) + clearBtn := makeButton("[::u]C[::-]lear Completed Tasks", func() { + AskYesNo("Do you want to clear completed tasks?", func() { taskPane.ClearCompletedTasks() }) + }) deleteBtn.SetBackgroundColor(tcell.ColorRed) pane. @@ -48,10 +52,10 @@ func (pd *ProjectDetailPane) isShowing() bool { func (pd *ProjectDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey { switch unicode.ToLower(event.Rune()) { case 'd': - projectPane.RemoveActivateProject() + AskYesNo("Do you want to delete Project?", func() { projectPane.RemoveActivateProject() }) return nil case 'c': - taskPane.ClearCompletedTasks() + AskYesNo("Do you want to clear completed tasks?", func() { taskPane.ClearCompletedTasks() }) return nil } diff --git a/app/task_detail.go b/app/task_detail.go index bb3f911..7952938 100644 --- a/app/task_detail.go +++ b/app/task_detail.go @@ -290,6 +290,7 @@ func (td *TaskDetailPane) handleShortcuts(event *tcell.EventKey) *tcell.EventKey switch event.Key() { case tcell.KeyEsc: app.SetFocus(taskPane) + contents.RemoveItem(taskDetailPane) return nil case tcell.KeyDown: td.taskDetailView.ScrollDown(1)