frontend: combine button-based mini-widgets
Current behaviour
There's a growing list of mini-widgets that are just a single button (fullscreen, edit mode, joystick connection indicator, takeoff, change alt), with an icon (possibly indicating a state) and/or some text. Maintaining and documenting these separately is annoying, and it makes the widgets list needlessly long, which makes it harder to find desired widgets.
Expected or desired behaviour
Combining widgets with similar functionality/interfaces allows users to more easily reason about the application, while also reducing the maintenance load to keep interfaces consistent.
- Similar to the
VeryGenericIndicator, I think the button widgets should be combined into a set of presets for the Action Button widget, and allow specifying the button icon/colour depending on the state of a data-lake variable. - We could potentially even add Action functionality to the
VeryGenericIndicatorand turn it into a more genericViewDowidget. This would combine a bunch of display logic, while also making it easier for existing indicator widgets to have some logical function associated with them (e.g. centring the camera, toggling input hold, toggling the lights, etc).
Prerequisites
- [x] I have checked to make sure that a similar request has not already been filed or fixed.
Totally!
This concept could also be extended to include switches and checkboxes, which could be used as either inputs or (non-interactive) indicators depending on which kind of variable they're tied to (or tied to a configuration, if necessary).
This concept could also be extended to include switches and checkboxes, which could be used as either inputs or (non-interactive) indicators depending on which kind of variable they're tied to (or tied to a configuration, if necessary).
To make things simpler and more clear, I think they should always be tied to data-lake variables, but they should have a read-only option in the configuration, to act as pure indicators.
In the case of variables that have allowUserToChangeValue as true, the read-only would be enforced.