refactor(ui): вынести панель «Список задач» (TaskListPanel) из монолита окна
Спеца 12.10: интерфейс + Nil + TaskTitle в internal/ui/task_list_panel.go, Fyne-реализация в internal/ui/desktop/task_list_panel.go. Состояние выбора живёт в окне; выбранная строка подсвечивается (Select/Unselect).
This commit is contained in:
@@ -178,6 +178,19 @@
|
||||
- Обновление содержимого — на потоке Fyne (внутри панели `fyne.Do`), не из
|
||||
горутины Hub.
|
||||
|
||||
### 12.10. Контракт виджета «Список задач» (TaskListPanel)
|
||||
|
||||
Список задач — левая панель окна: все задачи (`storage.Task`) строками.
|
||||
|
||||
- `SetTasks(tasks)` — заменить снимок списка и перерисовать виджет. Данные —
|
||||
копии из Store (спец 12.5).
|
||||
- `OnSelect(fn)` — колбэк клика по строке; окно грузит детали выбранной задачи
|
||||
(это `task_detail`, отдельный компонент). Состояние выбора живёт в окне.
|
||||
- Выбранная строка подсвечивается (`Select`/`Unselect`), окно управляет ею.
|
||||
- Строка = `taskTitle(t)` (pure-функция, тестируется без Fyne).
|
||||
- Обновление — на потоке Fyne; вызывающий уже внутри `fyne.Do`, панель сама
|
||||
виджет не трогает из горутин Hub.
|
||||
|
||||
---
|
||||
|
||||
## Открытые пункты (TODO)
|
||||
|
||||
Reference in New Issue
Block a user