Webcam menu gates on the app-wide identity (TASK 26)

This commit is contained in:
2026-08-24 08:56:17 -07:00
parent d774799138
commit ef710c5537
6 changed files with 163 additions and 49 deletions
+8 -8
View File
@@ -212,7 +212,7 @@ public class MainViewModel : ViewModelBase
OnPropertyChanged(nameof(ShowPreviewPlaceholder));
OnPropertyChanged(nameof(ShowSourcesEmptyHint));
OnPropertyChanged(nameof(CanChangeBackground));
OnPropertyChanged(nameof(CanAddWebcamToStagedScene));
OnPropertyChanged(nameof(CanAddWebcam));
OnPropertyChanged(nameof(CanShowWebcamInStagedScene));
OnPropertyChanged(nameof(IsCountdownAvailable));
UpdateActiveBackground();
@@ -303,8 +303,9 @@ public class MainViewModel : ViewModelBase
}
}
/// <summary>The Add → Webcam menu item: enabled when the active scene doesn't show the webcam yet.</summary>
public bool CanAddWebcamToStagedScene => StagedScene?.WebcamConfig == null;
/// <summary>The Add → Webcam menu item: enabled only while no webcam exists anywhere —
/// one camera identity app-wide; re-adding always opens the picker.</summary>
public bool CanAddWebcam => StagedScene != null && _webcam == null;
// ─── Transitions (TASK 19/23) ───
@@ -344,8 +345,6 @@ public class MainViewModel : ViewModelBase
_transition.Start(SelectedTransitionType, TransitionDurationMs, null);
}
/// <summary>The Add → Webcam menu item: enabled when the active scene doesn't show the webcam yet.</summary>
/// <summary>
/// Right-click-on-preview → "Show Webcam": offered when the active scene has no
/// webcam config (add one) or hides it (unhide — keeps the config row).
@@ -1815,7 +1814,7 @@ public class MainViewModel : ViewModelBase
_ = _cameraManager.ReleaseAllAsync(previousDevice);
OnPropertyChanged(nameof(CanChangeWebcam));
OnPropertyChanged(nameof(CanAddWebcamToStagedScene));
OnPropertyChanged(nameof(CanAddWebcam));
if (_webcam == null || string.IsNullOrWhiteSpace(newDevice)) return;
if (previousDevice != newDevice)
@@ -2264,7 +2263,7 @@ public class MainViewModel : ViewModelBase
if (e.OldItems != null)
foreach (SceneElement element in e.OldItems)
element.PropertyChanged -= OnElementPropertyChanged;
OnPropertyChanged(nameof(CanAddWebcamToStagedScene));
OnPropertyChanged(nameof(CanAddWebcam));
ScheduleSave();
}
@@ -2459,6 +2458,7 @@ public class MainViewModel : ViewModelBase
{
_webcam = new Webcam { DeviceId = device.Id, Name = device.DisplayName };
OnPropertyChanged(nameof(CanChangeWebcam));
OnPropertyChanged(nameof(CanAddWebcam));
}
else if (_webcam.DeviceId != device.Id)
{
@@ -2690,7 +2690,7 @@ public class MainViewModel : ViewModelBase
{
_webcam = null;
OnPropertyChanged(nameof(CanChangeWebcam));
OnPropertyChanged(nameof(CanAddWebcamToStagedScene));
OnPropertyChanged(nameof(CanAddWebcam));
OnPropertyChanged(nameof(CanShowWebcamInStagedScene));
}