gte/cmd/android-app/screen/tasks.go

54 lines
1.0 KiB
Go
Raw Normal View History

2022-10-18 16:58:12 +02:00
package screen
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/data/binding"
"fyne.io/fyne/v2/widget"
)
type SyncTasksRequest struct{}
type Tasks struct {
status binding.String
tasks binding.StringList
out chan interface{}
}
func NewTasks(out chan interface{}) *Tasks {
return &Tasks{
status: binding.NewString(),
tasks: binding.NewStringList(),
out: out,
}
}
func (t *Tasks) Refresh(state State) {
2022-10-20 08:50:52 +02:00
t.status.Set(state.Status)
2022-10-18 16:58:12 +02:00
t.tasks.Set(state.Tasks)
}
func (t *Tasks) Content() fyne.CanvasObject {
2022-10-20 08:50:52 +02:00
statusLabel := widget.NewLabelWithData(t.status)
2022-10-18 16:58:12 +02:00
refreshButton := widget.NewButton("refresh", func() {
t.out <- SyncTasksRequest{}
})
list := widget.NewListWithData(
t.tasks,
func() fyne.CanvasObject {
return widget.NewLabel("template")
},
func(i binding.DataItem, o fyne.CanvasObject) {
o.(*widget.Label).Bind(i.(binding.String))
},
)
return container.NewBorder(
2022-10-20 08:50:52 +02:00
container.NewHBox(refreshButton, statusLabel),
2022-10-18 16:58:12 +02:00
nil,
nil,
nil,
list,
)
}