Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/samples/winrt/ImageManipulations/common/LayoutAwarePage.h
16339 views
1
//*********************************************************
2
//
3
// Copyright (c) Microsoft. All rights reserved.
4
// THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
5
// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
6
// IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
7
// PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
8
//
9
//*********************************************************
10
11
#pragma once
12
13
#include <collection.h>
14
15
namespace SDKSample
16
{
17
namespace Common
18
{
19
/// <summary>
20
/// Typical implementation of Page that provides several important conveniences:
21
/// <list type="bullet">
22
/// <item>
23
/// <description>Application view state to visual state mapping</description>
24
/// </item>
25
/// <item>
26
/// <description>GoBack, GoForward, and GoHome event handlers</description>
27
/// </item>
28
/// <item>
29
/// <description>Mouse and keyboard shortcuts for navigation</description>
30
/// </item>
31
/// <item>
32
/// <description>State management for navigation and process lifetime management</description>
33
/// </item>
34
/// <item>
35
/// <description>A default view model</description>
36
/// </item>
37
/// </list>
38
/// </summary>
39
[Windows::Foundation::Metadata::WebHostHidden]
40
public ref class LayoutAwarePage : Windows::UI::Xaml::Controls::Page
41
{
42
internal:
43
LayoutAwarePage();
44
45
public:
46
void StartLayoutUpdates(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
47
void StopLayoutUpdates(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
48
void InvalidateVisualState();
49
static property Windows::UI::Xaml::DependencyProperty^ DefaultViewModelProperty
50
{
51
Windows::UI::Xaml::DependencyProperty^ get();
52
};
53
property Windows::Foundation::Collections::IObservableMap<Platform::String^, Platform::Object^>^ DefaultViewModel
54
{
55
Windows::Foundation::Collections::IObservableMap<Platform::String^, Platform::Object^>^ get();
56
void set(Windows::Foundation::Collections::IObservableMap<Platform::String^, Platform::Object^>^ value);
57
}
58
59
protected:
60
virtual void GoHome(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
61
virtual void GoBack(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
62
virtual void GoForward(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
63
virtual Platform::String^ DetermineVisualState(Windows::UI::ViewManagement::ApplicationViewState viewState);
64
virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
65
virtual void OnNavigatedFrom(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override;
66
virtual void LoadState(Platform::Object^ navigationParameter,
67
Windows::Foundation::Collections::IMap<Platform::String^, Platform::Object^>^ pageState);
68
virtual void SaveState(Windows::Foundation::Collections::IMap<Platform::String^, Platform::Object^>^ pageState);
69
70
private:
71
Platform::String^ _pageKey;
72
bool _navigationShortcutsRegistered;
73
Platform::Collections::Map<Platform::String^, Platform::Object^>^ _defaultViewModel;
74
Windows::Foundation::EventRegistrationToken _windowSizeEventToken,
75
_acceleratorKeyEventToken, _pointerPressedEventToken;
76
Platform::Collections::Vector<Windows::UI::Xaml::Controls::Control^>^ _layoutAwareControls;
77
void WindowSizeChanged(Platform::Object^ sender, Windows::UI::Core::WindowSizeChangedEventArgs^ e);
78
void OnLoaded(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
79
void OnUnloaded(Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
80
81
void CoreDispatcher_AcceleratorKeyActivated(Windows::UI::Core::CoreDispatcher^ sender,
82
Windows::UI::Core::AcceleratorKeyEventArgs^ args);
83
void CoreWindow_PointerPressed(Windows::UI::Core::CoreWindow^ sender,
84
Windows::UI::Core::PointerEventArgs^ args);
85
LayoutAwarePage^ _this; // Strong reference to self, cleaned up in OnUnload
86
};
87
}
88
}
89
90