The current code does not differenciate between input and
output, and thus it shows the same icon for muting outputs
and inputs. As per design suggesion [1], the input row
should use the "microphone-sensitivity-muted-symbolic" icon.
In order to achieve that, move the CcLevelBarStreamType enum
to a separate header, and rename it to CcStreamType. And also
pass the stream type to the volume slider.
In CcVolumeSlider, update the code to switch to the correct
mute icon depending on the stream type.
[1] https://gitlab.gnome.org/GNOME/gnome-control-center/issues/539
Fixes https://gitlab.gnome.org/GNOME/gnome-control-center/issues/539
Some streams may give us an icon name that doesn't exist in the
icon theme (e.g. Spotify giving "audio"). While it's fundamentally
an application problem, we can deal with this case a bit better
than showing the ugly "image-missing" icon.
Detect when an icon doesn't exist by performing an icon theme
lookup and, if the icon really doesn't exist, use a proper fallback
icon.
It also avoids a small GIcon leak.
Fixes https://gitlab.gnome.org/GNOME/gnome-control-center/issues/548