supportedPanelTypes

Specifies which Panel types this system UI implementation is able to present to the user when a Frontend offers it.

All of the Panels present in frontendMetadata (which by default includes all Panel types offered by the TomTom Digital Cockpit platform) must be specified either here or in unsupportedPanelTypes as a way for the system UI implementation to acknowledge them, preventing situations where a newly added Panel type is forgotten and simply doesn't show up when a Frontend uses it. Ideally all of the platform's Panels are supported and specific here, ensuring that common Frontend plugins will work as intended. If a system UI implementation does not support certain Panel types, they can be specified in unsupportedPanelTypes instead. This may however lead to situations where a Frontend's UX flow crosses various Panel types and users face unexpected scenarios where trying to open the next step in the UX flow has no effect.

If a Frontend adds a Panel that is not supported, a warning will be logged.

Hardware back presses.

Some Panel types support hardware back presses out of the box, see IviOnBackPressedCallbackOwner to know more. If Panels of these types need to handle hardware back presses, then they must add their IviOnBackPressedCallbacks to the iviOnBackPressedDispatcher provided by their type. If a custom Panel type needs to support hardware back presses, then it must:

  1. Implement the IviOnBackPressedCallbackOwner interface.

  2. Provide an implementation of the IviOnBackPressedCallback.

  3. Be attached to one of PanelContainers that implements the IviOnBackPressedCallbackOwner interface and is registered to handle back presses with setIviOnBackPressedCallbacks.