// Copyright (c) Microsoft Corporation. // Licensed under the MIT license. #include "pch.h" #include "SampleAppLogic.h" #include "SampleAppLogic.g.cpp" #include using namespace winrt::Windows::UI::Xaml; using namespace winrt::Windows::UI::Xaml::Controls; using namespace winrt::Windows::UI::Core; using namespace winrt::Windows::System; namespace winrt { namespace MUX = Microsoft::UI::Xaml; using IInspectable = Windows::Foundation::IInspectable; } namespace winrt::SampleApp::implementation { // Function Description: // - Get the SampleAppLogic for the current active Xaml application, or null if there isn't one. // Return value: // - A pointer (bare) to the SampleAppLogic, or nullptr. The app logic outlives all other objects, // unless the application is in a terrible way, so this is "safe." SampleAppLogic* SampleAppLogic::Current() noexcept try { if (auto currentXamlApp{ winrt::Windows::UI::Xaml::Application::Current().try_as() }) { if (auto SampleAppLogicPointer{ winrt::get_self(currentXamlApp.Logic()) }) { return SampleAppLogicPointer; } } return nullptr; } catch (...) { LOG_CAUGHT_EXCEPTION(); return nullptr; } SampleAppLogic::SampleAppLogic() { // For your own sanity, it's better to do setup outside the ctor. // If you do any setup in the ctor that ends up throwing an exception, // then it might look like App just failed to activate, which will // cause you to chase down the rabbit hole of "why is App not // registered?" when it definitely is. // The MyPage has to be constructed during our construction, to // make sure that there's a terminal page for callers of // SetTitleBarContent _root = winrt::make_self(); } // Method Description: // - Build the UI for the terminal app. Before this method is called, it // should not be assumed that the SampleApp is usable. The Settings // should be loaded before this is called, either with LoadSettings or // GetLaunchDimensions (which will call LoadSettings) // Arguments: // - // Return Value: // - void SampleAppLogic::Create() { _root->Create(); } UIElement SampleAppLogic::GetRoot() noexcept { return _root.as(); } hstring SampleAppLogic::Title() { return _root->Title(); } }