screenshot: Split out disabling cast button
Screencasts can be disabled for various reasons:
- the service is not available (missing plugin etc.)
- screencasts are not allowed by the session mode (lock screen etc.)
- the UI is invoked in screenshot-only mode (portal)
Currently each of those conditions is handled in a different code path, which means that later conditions can re-enable the button.
There's also an inconsistency whether disabling the button is done via visibility or reactivity, which still allows toggling the hidden button via shortcuts (although a hidden button means that screencasts aren't supported at all, so nothing will be recorded in that case).
Address this by updating the button from a dedicated function.
Fixes: 671df28a ("screenshot: Only handle mode-switch shortcut when supported") Closes: #7358 (closed)