85 lines
2.7 KiB
C++
85 lines
2.7 KiB
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
#include "pch.h"
|
|
#include "SampleAppLogic.h"
|
|
#include "SampleAppLogic.g.cpp"
|
|
|
|
#include <LibraryResources.h>
|
|
|
|
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<winrt::SampleApp::App>() })
|
|
{
|
|
if (auto SampleAppLogicPointer{ winrt::get_self<SampleAppLogic>(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<MyPage>();
|
|
}
|
|
|
|
// 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:
|
|
// - <none>
|
|
// Return Value:
|
|
// - <none>
|
|
void SampleAppLogic::Create()
|
|
{
|
|
_root->Create();
|
|
}
|
|
|
|
UIElement SampleAppLogic::GetRoot() noexcept
|
|
{
|
|
return _root.as<winrt::Windows::UI::Xaml::Controls::Control>();
|
|
}
|
|
|
|
hstring SampleAppLogic::Title()
|
|
{
|
|
return _root->Title();
|
|
}
|
|
|
|
}
|