VoiceOverDesigner
VoiceOverDesigner copied to clipboard
SwiftUI: navigation panel
Надо переписать левую панель со структурой проекта на SwiftUI. Так мы сможем показывать ее не только в приложении для мака, но и на айпаде и в очках на visionOS.
Сначала делаем копию для айфона-айпада, а когда все напишем, то можно и на маке будет использовать.
Повторить плоскую структуру
- [x] Сделать базовую инфраструктуру для фичи: на айпаде она слева, можно показывать и скрывать
- [x] Использовать UISplitViewController и понять подходит ли supplementary-стиль для настроек
- [x] Прокинуть объект Frame, относительно которого надо рисовать.
- [ ] Перерисовывать NavigatorView когда добавляют или удаляют элементы
- [x] Научиться рисовать содержимое одного из фреймов в виде плоского списка.
- [ ] В качестве описания использовать раскрашенное описание элемента
- [ ] Проверить, что тинт правильно срабатывает: когда окно неактивно, то все раскрашенные элементы должны превратиться в серые. Не знаю насколько правильно это ваще умеет работать в SwiftUI
- [ ] Переписать на SwiftUI классы из
VoiceOver Designer -> Features -> NavigatorвShared -> Sources -> Navigator. Можно начать изучать отNavigatorController, для него есть заглушкаNavigatorView. - [ ] Проверить как работает на айфоне. Наверно, поведение нужно хитрое: при открытии документа показывать канвас, но добавить кнопку открытия списка элементов в навбар. Ну или просто никогда не показывать :D
- [ ] Выбор элемента в навигаторе должен открывать настройка элемента (наверно, так на маке работает, но не уверен, что это паттерн для айпада)
- [ ] Выбор фрейма должен загружать фрейм в канвас, потому что сейчас айпад работает только с одним фреймом за раз. Возможно, в будущем это стоит переделать, но пока проще так
Иерархическая структура
- [ ] Можем показать всю вложенность: фреймы, контейнеры, элементы. Наверно, фрейм должен переключаться через кнопка в навигейшен-баре (про это задачка ниже), а вот список должен показывать все элементы. Контейнеры можно сделать отдельными секциями, а вложенности контейнеров в контейнеры у нас нет пока. Какая-то статья про collapsable
Несколько фреймвов
- [ ] В артборде может быть несколько фреймов, надо переключать их с помощью кнопок < и > в навигейшен баре.
- [ ] Рядом сделать кнопку добавления нового фрейма через добавление картинки
Поддержка перетаскивания
- Документация Apple
- Kodeko
- Medium
- [ ] После перетаскивания надо вызывать метод у presenter, который правильно разложить объект в структуре
- [ ] Если переместить строку после или перед элементом, то она должен переместиться туда
- [ ] Если перетащить одну строчку на другую, то они завернутся в контейнер
- [ ] Можно переность элементы между фреймами
- Поддержать редактирование списка:
- [ ] Могу удалять элементы или выдели
- [ ] Могу выбрать несколько элементов, должен появиться тулбар, в котором будет кнопка «объединить»
- [ ] Интегрировать в macOS версию и удалить старый пакет Navigator
Баги для Миши
- [x] Обновлять канвас после изменений в настройках
- [x] Визуально не выделяется выбранный элемент в канвасе
- [ ] После добавления элемента он не появляется в навигаторе
- [ ] Добавленный элемент сохраняется после закрытия документа, а вот изменение его свойств — нет
- [ ] Окно настроек нельзя интерактивно закрыть
- [ ] Углы у настроек не скруглились (но виновата в этом NavigationView в SwiftUI, лол)
- [ ] Распознавание текста не запускается при выборе элемента