diff --git a/app/projects.go b/app/projects.go index 12d7f5e..2562f3a 100644 --- a/app/projects.go +++ b/app/projects.go @@ -58,7 +58,7 @@ func (pane *ProjectPane) addNewProject() { if err != nil { statusBar.showForSeconds("[red::]Failed to create Project:"+err.Error(), 5) } else { - statusBar.showForSeconds(fmt.Sprintf("[yellow::]Project %s created. Press n to start adding new tasks.", name), 5) + statusBar.showForSeconds(fmt.Sprintf("[yellow::]Project %s created. Press n to start adding new tasks.", name), 10) pane.projects = append(pane.projects, project) pane.addProjectToList(len(pane.projects)-1, true) pane.newProject.SetText("") diff --git a/app/tasks.go b/app/tasks.go index 1f577bf..cf1b158 100644 --- a/app/tasks.go +++ b/app/tasks.go @@ -20,6 +20,7 @@ type TaskPane struct { newTask *tview.InputField projectRepo repository.ProjectRepository taskRepo repository.TaskRepository + hint *tview.TextView } func NewTaskPane(projectRepo repository.ProjectRepository, taskRepo repository.TaskRepository) *TaskPane { @@ -29,6 +30,7 @@ func NewTaskPane(projectRepo repository.ProjectRepository, taskRepo repository.T newTask: makeLightTextInput("+[New Task]"), projectRepo: projectRepo, taskRepo: taskRepo, + hint: tview.NewTextView().SetTextColor(tcell.ColorYellow).SetTextAlign(tview.AlignCenter), } pane.list.SetDoneFunc(func() { @@ -47,11 +49,13 @@ func NewTaskPane(projectRepo repository.ProjectRepository, taskRepo repository.T task, err := taskRepo.Create(*projectPane.activeProject, name, "", "", 0) if err != nil { statusBar.showForSeconds("[red::]Could not create Task:"+err.Error(), 5) + return } pane.tasks = append(pane.tasks, task) pane.addTaskToList(len(pane.tasks) - 1) pane.newTask.SetText("") + statusBar.showForSeconds("[yellow::]Task created. Add another task or press Esc.", 5) case tcell.KeyEsc: app.SetFocus(pane) } @@ -60,9 +64,10 @@ func NewTaskPane(projectRepo repository.ProjectRepository, taskRepo repository.T pane. AddItem(pane.list, 0, 1, true). - AddItem(pane.newTask, 1, 0, false) + AddItem(pane.hint, 0, 1, false) pane.SetBorder(true).SetTitle("[::u]T[::-]asks") + pane.setHintMessage() return &pane } @@ -70,6 +75,8 @@ func NewTaskPane(projectRepo repository.ProjectRepository, taskRepo repository.T func (pane *TaskPane) ClearList() { pane.list.Clear() pane.tasks = nil + + pane.RemoveItem(pane.newTask) } func (pane *TaskPane) SetList(tasks []model.Task) { @@ -105,6 +112,9 @@ func (pane *TaskPane) LoadProjectTasks(project model.Project) { } else { pane.SetList(tasks) } + + pane.RemoveItem(pane.hint) + pane.AddItem(pane.newTask, 1, 0, false) } func (pane *TaskPane) ActivateTask(idx int) { @@ -127,3 +137,11 @@ func (pane *TaskPane) ClearCompletedTasks() { statusBar.showForSeconds(fmt.Sprintf("[yellow]%d tasks cleared!", count), 5) } + +func (pane TaskPane) setHintMessage() { + if len(projectPane.projects) == 0 { + pane.hint.SetText("Welcome to the organized life!\n------------------------------\n Create TaskList/Project at the bottom of Projects pane.\n (Press p,n)") + } else { + pane.hint.SetText("Select a TaskList/Project to load tasks.\nPress p,n to create new Project.") + } +}