More Progress

* List by default, UI only if specified
* Archive tasks to done list
* Fix filter
This commit is contained in:
Brian Buller 2019-02-20 07:49:41 -06:00
parent 9bc8de8700
commit d11bf67196
6 changed files with 45 additions and 33 deletions

View File

@ -5,7 +5,7 @@ import (
"os"
"strings"
todotxt "github.com/JamesClonk/go-todotxt"
todotxt "github.com/br0xen/go-todotxt"
"github.com/br0xen/user-config"
)

View File

@ -18,8 +18,8 @@ func main() {
if len(os.Args) > 1 {
parms = os.Args[1:]
} else {
// If no parameters were passed, just do an ls
parms = append(parms, "ui")
// If no parameters were passed, do a list
parms = append(parms, "ls")
}
os.Exit(app.run(parms))
}

View File

@ -4,7 +4,7 @@ import (
"strings"
"time"
todotxt "github.com/JamesClonk/go-todotxt"
todotxt "github.com/br0xen/go-todotxt"
)
func (a *AppState) addTask(taskString string) error {
@ -39,9 +39,11 @@ func (a *AppState) archiveTask(id int) error {
if task, err = a.TaskList.GetTask(id); err != nil {
return err
}
a.TaskList.RemoveTask(*task)
task.Completed = true
a.DoneList.AddTask(task)
if err := a.TaskList.ArchiveTaskToFile(*task, app.getDoneFile()); err != nil {
return err
}
a.TaskList.RemoveTask(*task)
return nil
}

View File

@ -5,7 +5,7 @@ import (
"strings"
"time"
todotxt "github.com/JamesClonk/go-todotxt"
todotxt "github.com/br0xen/go-todotxt"
"github.com/br0xen/termbox-util"
termbox "github.com/nsf/termbox-go"
)
@ -159,15 +159,15 @@ func (screen *MainScreen) handleConfirmKeyEvent(event termbox.Event) int {
}
func (screen *MainScreen) handleInputKeyEvent(event termbox.Event) int {
screen.inputField.SetID("add task")
id := screen.inputField.GetID()
if id == "filter" {
if event.Key == termbox.KeyEnter {
// Apply the filter
screen.backspaceDoes = MainBackspaceFilter
screen.reloadList(screen.buildBundle(screen.currentList, screen.inputField.GetValue()))
filter := screen.inputField.GetValue()
screen.inputField.SetID("")
screen.inputField.SetValue("")
screen.backspaceDoes = MainBackspaceFilter
screen.reloadList(screen.buildBundle(screen.currentList, filter))
return ScreenMain
}
} else if id == "add task" {
@ -177,13 +177,13 @@ func (screen *MainScreen) handleInputKeyEvent(event termbox.Event) int {
if err != nil {
screen.setMessage(err.Error())
}
screen.inputField.SetID("")
screen.inputField.SetValue("")
if err = app.WriteList(); err != nil {
screen.setMessage(err.Error())
return ScreenMain
}
screen.reloadList(screen.buildBundle(screen.currentList, screen.currentFilter))
screen.inputField.SetID("")
screen.inputField.SetValue("")
return ScreenMain
}
}
@ -211,12 +211,20 @@ func (screen *MainScreen) drawScreen() {
screen.setMessageWithTimeout("Press '?' for help", -1)
}
screen.drawHeader()
topId := 0
for _, v := range screen.displayList {
if v.Id > topId {
topId = v.Id
}
}
padCnt := fmt.Sprintf("%d", topId)
for k, v := range screen.displayList {
pad := strings.Repeat(" ", len(padCnt)-len(fmt.Sprintf("%d", v.Id)))
useFg, useBg := DefaultFg, DefaultBg
if k == screen.viewPort.cursor {
useFg, useBg = CursorFg, CursorBg
}
termboxUtil.DrawStringAtPoint(app.getTaskString(v), 0, k+1, useFg, useBg)
termboxUtil.DrawStringAtPoint(pad+app.getTaskString(v), 0, k+1, useFg, useBg)
}
screen.drawFooter()
}
@ -249,25 +257,27 @@ func (screen *MainScreen) drawFooter() {
}
func (screen *MainScreen) archiveCurrentItem() int {
/*
// Find the task under the cursor
if len(screen.displayList) > screen.viewPort.cursor {
t := screen.displayList[screen.viewPort.cursor]
// Load the task screen with this task
if err := a.archiveTask(t.Id); err != nil {
screen.setMessage(error.Error())
}
b := Bundle{}
b.setValue(TaskBundleTaskIdKey, t.Id)
if err := app.screens[ScreenTask].initialize(b); err != nil {
screen.setMessage(err.Error())
}
return ScreenTask
if screen.currentList != MainBundleListTodo {
screen.setMessage("Task is already archived")
return ScreenMain
}
// Find the task under the cursor
if len(screen.displayList) > screen.viewPort.cursor {
t := screen.displayList[screen.viewPort.cursor]
if err := app.archiveTask(t.Id); err != nil {
screen.setMessage(err.Error())
return ScreenMain
}
*/
if err := app.WriteList(); err != nil {
screen.setMessage(err.Error())
return ScreenMain
}
// Reload the list
b := screen.buildBundle(screen.currentList, screen.currentFilter)
if err := screen.reloadList(b); err != nil {
screen.setMessage(err.Error())
}
}
return ScreenMain
}

View File

@ -6,7 +6,7 @@ import (
"strings"
"time"
todotxt "github.com/JamesClonk/go-todotxt"
todotxt "github.com/br0xen/go-todotxt"
"github.com/br0xen/termbox-util"
termbox "github.com/nsf/termbox-go"
)

View File

@ -5,7 +5,7 @@ import (
"strconv"
"strings"
todotxt "github.com/JamesClonk/go-todotxt"
todotxt "github.com/br0xen/go-todotxt"
)
func (a *AppState) opListTasks(args []string) int {