#include "pch.h" #include "LayeredVideoPage.xaml.h" #if __has_include("LayeredVideoPage.g.cpp") #include "LayeredVideoPage.g.cpp" #endif using namespace winrt; using namespace winrt::Microsoft::UI::Xaml; namespace winrt::Vav2Player::implementation { LayeredVideoPage::LayeredVideoPage() { InitializeComponent(); UpdateActiveLayerCount(); UpdateStatus(L"Layered Video - Ready"); } // File load handlers void LayeredVideoPage::LoadBackground_Click(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::RoutedEventArgs const&) { LoadVideoFileForLayer(1); } void LayeredVideoPage::LoadOverlay_Click(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::RoutedEventArgs const&) { LoadVideoFileForLayer(2); } void LayeredVideoPage::LoadPiP_Click(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::RoutedEventArgs const&) { LoadVideoFileForLayer(3); } // Opacity control handlers void LayeredVideoPage::Layer1Opacity_Changed(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs const& e) { Layer1().Opacity(e.NewValue()); } void LayeredVideoPage::Layer2Opacity_Changed(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs const& e) { Layer2().Opacity(e.NewValue()); } void LayeredVideoPage::Layer3Opacity_Changed(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs const& e) { Layer3().Opacity(e.NewValue()); } // Playback control handlers void LayeredVideoPage::PlayAllLayers_Click(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::RoutedEventArgs const&) { VideoLayer1().Play(); VideoLayer2().Play(); VideoLayer3().Play(); UpdateStatus(L"Playing all layers"); } void LayeredVideoPage::PauseAllLayers_Click(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::RoutedEventArgs const&) { VideoLayer1().Pause(); VideoLayer2().Pause(); VideoLayer3().Pause(); UpdateStatus(L"Paused all layers"); } void LayeredVideoPage::StopAllLayers_Click(winrt::Windows::Foundation::IInspectable const&, winrt::Microsoft::UI::Xaml::RoutedEventArgs const&) { VideoLayer1().Stop(); VideoLayer2().Stop(); VideoLayer3().Stop(); UpdateStatus(L"Stopped all layers"); } // Helper methods void LayeredVideoPage::UpdateActiveLayerCount() { // TODO: Implement proper layer counting ActiveLayerCount().Text(L"0/3"); } winrt::Windows::Foundation::IAsyncAction LayeredVideoPage::LoadVideoFileForLayer(int layerIndex) { // TODO: Implement file loading for specific layer co_await resume_background(); // Update status based on layer switch (layerIndex) { case 1: UpdateStatus(L"Loading background video - Coming soon"); break; case 2: UpdateStatus(L"Loading overlay video - Coming soon"); break; case 3: UpdateStatus(L"Loading PiP video - Coming soon"); break; default: UpdateStatus(L"Invalid layer index"); break; } } void LayeredVideoPage::UpdateStatus(winrt::hstring const& message) { try { if (LayeredVideoStatusText()) { LayeredVideoStatusText().Text(message); } } catch (...) { // Ignore if UI not ready yet } OutputDebugStringA((winrt::to_string(message) + "\n").c_str()); } }