VoiceOverDesigner icon indicating copy to clipboard operation
VoiceOverDesigner copied to clipboard

Containers for elements

Open akaDuality opened this issue 3 years ago • 3 comments

VoiceOver can group elements to containers. We should support that.

Container has label and controls inside.

Designer

  • [x] #142

Navigator

  • [x] #146
  • [x] #147
  • [x] #145
  • [x] #156
  • [x] Recognize text even when select from navigator. Probably recognition should be moved to settings
  • [ ] Add grouping action to menu
  • [ ] #226
  • [x] Remove rearranging after grouping
  • [ ] Allow to rename container by double click on it in Navigator

Canvas

  • [x] #148
  • [x] Rework saving. After drawing update elements in document
  • [x] Draw container to make it visible
  • [x] #158
  • [ ] Select several element with hold shift or command. #179
  • [x] #173

Settings

  • [x] #150
  • [x] Label
  • [x] #151
  • [x] #157
  • [x] #168
  • [x] Undo for element deletion inside container
  • [x] Insets for element's settings are broken
  • [x] #174

Refactoring

  • [x] Simplify any AccessibilityView subclasses switch

Preview

  • [x] #154
  • [x] #157
  • [ ] Enumerate elements at Preview

Acceptance criteria:

How to create:

  • [x] Group elements by containers in text area
  • [x] Show group in document area
  • [x] Give a name to area
  • [x] Read area name by Preview
  • [x] Also, this containers can be marked as modal
  • [ ] Select several elements in text area and group via context menu (or Command+G shortcut)

Discussion

akaDuality avatar Aug 06 '22 18:08 akaDuality

I'd like to try that one. What do you mean for "Show group in document area"? Is it rectangle that contains all controls in group?

drucelweisse avatar Aug 07 '22 15:08 drucelweisse

Is it rectangle that contains all controls in group?

Yeah, like that. You can ask @bbsody for help

akaDuality avatar Aug 07 '22 18:08 akaDuality

Possible protocol:

import Document
protocol AccessibileView {
    var label: String { get set }
    var frame: CGRect { get set }
}

protocol AccessibilityContainer: AccessibilityView {
    var elements: [AccessibilityElement] { get set }
}

protocol AccessibilityElement: AccessibilityView {
    var isAccessibilityElement: Bool  { get set }
    var value: String  { get set }
    var hint: String  { get set }
    var trait: A11yTraits { get set }
}

akaDuality avatar Nov 06 '22 13:11 akaDuality