blob: 5d60058f6b0f4851ea42e9bd811166c490945304 [file] [log] [blame]
mistachkin7aa3ebe2016-02-24 21:42:03 +00001//
2// App.xaml.cpp
3// Implementation of the App class.
4//
5
6#include "pch.h"
7#include "MainPage.xaml.h"
8
9using namespace vsixtest;
10
11using namespace Platform;
12using namespace Windows::ApplicationModel;
13using namespace Windows::ApplicationModel::Activation;
14using namespace Windows::Foundation;
15using namespace Windows::Foundation::Collections;
16using namespace Windows::UI::Xaml;
17using namespace Windows::UI::Xaml::Controls;
18using namespace Windows::UI::Xaml::Controls::Primitives;
19using namespace Windows::UI::Xaml::Data;
20using namespace Windows::UI::Xaml::Input;
21using namespace Windows::UI::Xaml::Interop;
22using namespace Windows::UI::Xaml::Media;
23using namespace Windows::UI::Xaml::Navigation;
24
25/// <summary>
26/// Initializes the singleton application object. This is the first line of authored code
27/// executed, and as such is the logical equivalent of main() or WinMain().
28/// </summary>
29App::App()
30{
31 InitializeComponent();
32 Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending);
33}
34
35/// <summary>
36/// Invoked when the application is launched normally by the end user. Other entry points
37/// will be used such as when the application is launched to open a specific file.
38/// </summary>
39/// <param name="e">Details about the launch request and process.</param>
40void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ e)
41{
42
43#if _DEBUG
44 // Show graphics profiling information while debugging.
45 if (IsDebuggerPresent())
46 {
47 // Display the current frame rate counters
48 DebugSettings->EnableFrameRateCounter = true;
49 }
50#endif
51
52 auto rootFrame = dynamic_cast<Frame^>(Window::Current->Content);
53
54 // Do not repeat app initialization when the Window already has content,
55 // just ensure that the window is active
56 if (rootFrame == nullptr)
57 {
58 // Create a Frame to act as the navigation context and associate it with
59 // a SuspensionManager key
60 rootFrame = ref new Frame();
61
62 rootFrame->NavigationFailed += ref new Windows::UI::Xaml::Navigation::NavigationFailedEventHandler(this, &App::OnNavigationFailed);
63
64 if (e->PreviousExecutionState == ApplicationExecutionState::Terminated)
65 {
66 // TODO: Restore the saved session state only when appropriate, scheduling the
67 // final launch steps after the restore is complete
68
69 }
70
71 if (rootFrame->Content == nullptr)
72 {
73 // When the navigation stack isn't restored navigate to the first page,
74 // configuring the new page by passing required information as a navigation
75 // parameter
76 rootFrame->Navigate(TypeName(MainPage::typeid), e->Arguments);
77 }
78 // Place the frame in the current Window
79 Window::Current->Content = rootFrame;
80 // Ensure the current window is active
81 Window::Current->Activate();
82 }
83 else
84 {
85 if (rootFrame->Content == nullptr)
86 {
87 // When the navigation stack isn't restored navigate to the first page,
88 // configuring the new page by passing required information as a navigation
89 // parameter
90 rootFrame->Navigate(TypeName(MainPage::typeid), e->Arguments);
91 }
92 // Ensure the current window is active
93 Window::Current->Activate();
94 }
95}
96
97/// <summary>
98/// Invoked when application execution is being suspended. Application state is saved
99/// without knowing whether the application will be terminated or resumed with the contents
100/// of memory still intact.
101/// </summary>
102/// <param name="sender">The source of the suspend request.</param>
103/// <param name="e">Details about the suspend request.</param>
104void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e)
105{
106 (void) sender; // Unused parameter
107 (void) e; // Unused parameter
108
109 //TODO: Save application state and stop any background activity
110}
111
112/// <summary>
113/// Invoked when Navigation to a certain page fails
114/// </summary>
115/// <param name="sender">The Frame which failed navigation</param>
116/// <param name="e">Details about the navigation failure</param>
117void App::OnNavigationFailed(Platform::Object ^sender, Windows::UI::Xaml::Navigation::NavigationFailedEventArgs ^e)
118{
119 throw ref new FailureException("Failed to load Page " + e->SourcePageType.Name);
120}