Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SwiftUI: navigation panel #329

Open
6 of 28 tasks
akaDuality opened this issue Jan 15, 2024 · 0 comments
Open
6 of 28 tasks

SwiftUI: navigation panel #329

akaDuality opened this issue Jan 15, 2024 · 0 comments
Labels
refactoring Technical improvements
Milestone

Comments

@akaDuality
Copy link
Collaborator

akaDuality commented Jan 15, 2024

Надо переписать левую панель со структурой проекта на SwiftUI. Так мы сможем показывать ее не только в приложении для мака, но и на айпаде и в очках на visionOS.

Сначала делаем копию для айфона-айпада, а когда все напишем, то можно и на маке будет использовать.

Повторить плоскую структуру

  • Сделать базовую инфраструктуру для фичи: на айпаде она слева, можно показывать и скрывать
    • Использовать UISplitViewController и понять подходит ли supplementary-стиль для настроек
  • Прокинуть объект Frame, относительно которого надо рисовать.
    • Перерисовывать NavigatorView когда добавляют или удаляют элементы
  • Научиться рисовать содержимое одного из фреймов в виде плоского списка.
  • В качестве описания использовать раскрашенное описание элемента
    • Проверить, что тинт правильно срабатывает: когда окно неактивно, то все раскрашенные элементы должны превратиться в серые. Не знаю насколько правильно это ваще умеет работать в SwiftUI
  • Переписать на SwiftUI классы из VoiceOver Designer -> Features -> Navigator в Shared -> Sources -> Navigator. Можно начать изучать от NavigatorController, для него есть заглушка NavigatorView.
  • Проверить как работает на айфоне. Наверно, поведение нужно хитрое: при открытии документа показывать канвас, но добавить кнопку открытия списка элементов в навбар. Ну или просто никогда не показывать :D
  • Выбор элемента в навигаторе должен открывать настройка элемента (наверно, так на маке работает, но не уверен, что это паттерн для айпада)
    • Выбор фрейма должен загружать фрейм в канвас, потому что сейчас айпад работает только с одним фреймом за раз. Возможно, в будущем это стоит переделать, но пока проще так

Иерархическая структура

  • Можем показать всю вложенность: фреймы, контейнеры, элементы. Наверно, фрейм должен переключаться через кнопка в навигейшен-баре (про это задачка ниже), а вот список должен показывать все элементы. Контейнеры можно сделать отдельными секциями, а вложенности контейнеров в контейнеры у нас нет пока.
    Какая-то статья про collapsable

Несколько фреймвов

  • В артборде может быть несколько фреймов, надо переключать их с помощью кнопок < и > в навигейшен баре.
    • Рядом сделать кнопку добавления нового фрейма через добавление картинки

Поддержка перетаскивания

  • Документация Apple
  • Kodeko
  • Medium
  • После перетаскивания надо вызывать метод у presenter, который правильно разложить объект в структуре
    • Если переместить строку после или перед элементом, то она должен переместиться туда
    • Если перетащить одну строчку на другую, то они завернутся в контейнер
    • Можно переность элементы между фреймами
  • Поддержать редактирование списка:
    • Могу удалять элементы или выдели
    • Могу выбрать несколько элементов, должен появиться тулбар, в котором будет кнопка «объединить»
  • Интегрировать в macOS версию и удалить старый пакет Navigator

Баги для Миши

  • Обновлять канвас после изменений в настройках
  • Визуально не выделяется выбранный элемент в канвасе
  • После добавления элемента он не появляется в навигаторе
  • Добавленный элемент сохраняется после закрытия документа, а вот изменение его свойств — нет
  • Окно настроек нельзя интерактивно закрыть
  • Углы у настроек не скруглились (но виновата в этом NavigationView в SwiftUI, лол)
  • Распознавание текста не запускается при выборе элемента
@akaDuality akaDuality added the refactoring Technical improvements label Jan 15, 2024
@akaDuality akaDuality added this to the 2.0 Artboards milestone Jan 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactoring Technical improvements
Projects
Development

When branches are created from issues, their pull requests are automatically linked.

1 participant