Sound Panel: UX Papercuts
As discussed in !1116 (merged) the input preference group could use some ux love.
The current behaviour:
If no input device has been detected all of the widgets within the group are greyed out as shown here.
In accessibility scenarios where the user needs to use a screenreader I suspect that showing an empty state for the preference group when no input device is detected and notifying the user that "No internal or external microphone has been detected" would probably be a better strategy.
It also imparts greater confidence with the user that everything is working correctly compared to greying out all widgets contained within the group.
On top of that, it will be much easier for users to communicate problems within written bug reports or orally in the event that something is not working correctly e.g. internal microphone on the device is not detected.
As a rule of thumb I would say that greying out widgets would be acceptable if at least one widget in the preference group has not been greyed out. If all widgets in the preference group are greyed out then an empty state would be imho the more appropriate pattern to convey to the user quickly and concisely the current state of the group.
The second ux issue that I have spotted that I haven't seen discussed anywhere yet is the device drop-down's themselves. According to the HIG drop-down's should only be used when you have greater than three items, checkboxes or toggle buttons should be used if you have two items. In the case of the sound panel, it is not rare that a user may have more than 3 devices or even just a single device.
This introduces the following problem:
In the following screenshot the device is styled in such a way as to imply more than one choice.
And when the user clicks on the drop-down list to see the alternative choices they see this.
Ideally if only one device is available it would not be displayed in a drop-down list, it would not invite the user to click on it because there is no choice to present.
I don't think there is an issue with using a drop-down list to present > 1 choices, especially if you do not know ahead of time how many choices will be displayed. The main issue that needs to be resolved is how to convey to the user that there are no other choices.
That pretty much sums up my observations, sorry about the noise in that merge request again. Thanks for taking the time to read this.