Source access enforcement (the catalog): 10-source catalog + per-scene access matrix enforced by SceneAccessPolicy; Add-Source menu is one ItemsSource rebuilt per scene (Screen = Live-only, BG/Image/Text every scene), webcam row always present + greys out; Chatbox/Alerts/Socials are inert SourceType rows ready for their features; Text queued as a ship step (countdown + credits modes); Monetization notes socialBar free = YouTube + 1, unlimited with the paid key (79 tests passing)
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace ytLive.ViewModels;
|
||||
|
||||
/// <summary>
|
||||
/// One Add-Source menu entry: a label, its action, and an optional command
|
||||
/// parameter. The collection is rebuilt per scene from
|
||||
/// <see cref="Services.SceneAccessPolicy"/> so only the sources the active
|
||||
/// scene allows appear in the menu.
|
||||
/// </summary>
|
||||
public sealed class SourceMenuItem
|
||||
{
|
||||
public SourceMenuItem(string header, ICommand command, object? parameter = null,
|
||||
bool isEnabled = true, string? toolTip = null)
|
||||
{
|
||||
Header = header;
|
||||
Command = command;
|
||||
Parameter = parameter;
|
||||
IsEnabled = isEnabled;
|
||||
ToolTip = toolTip;
|
||||
}
|
||||
|
||||
public string Header { get; }
|
||||
public ICommand Command { get; }
|
||||
public object? Parameter { get; }
|
||||
public bool IsEnabled { get; }
|
||||
public string? ToolTip { get; }
|
||||
}
|
||||
Reference in New Issue
Block a user