Files
ytLlive/ViewModels/index.md
T

2.0 KiB
Raw Blame History

ViewModels — index

MVVM layer. See schema.md for the memory-map conventions.

File Purpose
MainViewModel.cs The app brain: scenes/elements collections + commands, stream state (IsLive/IsOffline/IsConnected), chat feed, overlays, layout save/open, resolution dropdown (QualityOptions, SelectedQuality, ResolutionHelp, ApplyStreamQuality) that computes the output rect over the 1920×1080 master (OutputRectX/Y/W/H, DimRects, IsOutputCropped, ResolutionBadgeText). Auth: loads the saved DPAPI session at startup (LoadSavedSessionAsync), SignInAsync feeds the GoLive dialog; End Livestream signs out (StopStream clears session + token — crash-safe). Webcam: owns CameraManager (MediaCapture), AddWebcamToActiveSceneAsync (picker → default 480×270 bottom-right placement → acquire; greys out when the active scene already has a config via CanAddWebcamToActiveScene), ChangeWebcamAsync (device swap — ReleaseAllAsync old + re-acquire), ShowWebcamInActiveScene (reveal hidden config / empty-canvas right-click), ReacquireWebcam after layout load, OnCameraPreviewBitmapChanged forwards the shared bitmap into every WebcamSceneConfig.VideoImageSource; SelectedElement drives the preview overlay + internal ClampWebcamToBounds (50% cap seam)
GoLiveViewModel.cs Start Stream dialog: account row (saved channel shown with Change Account, or Sign in to YouTube; Start gated on IsSignedIn/IsBusy) + title/description/visibility, start/cancel requests
ReuseImageViewModel.cs Add Image dialog: candidate list (ReuseImageCandidate), reuse/new/cancel
CameraPickerViewModel.cs Add Webcam dialog: async camera list (loading / has / none states), UseRequested(CameraDeviceInfo)/CancelRequested

Related: Models/index.md for the data; Services/index.md for what the ViewModels drive; base class in Helpers/ViewModelBase.cs.