From f298662fb38e2f3c12dc27a0465602604d4f2bdc Mon Sep 17 00:00:00 2001 From: Matt Cooley Date: Fri, 1 Feb 2019 13:30:36 -0800 Subject: [PATCH] Remove PLM code from MainPage --- src/Calculator/Views/MainPage.xaml.cpp | 105 ++++--------------------- src/Calculator/Views/MainPage.xaml.h | 6 +- 2 files changed, 18 insertions(+), 93 deletions(-) diff --git a/src/Calculator/Views/MainPage.xaml.cpp b/src/Calculator/Views/MainPage.xaml.cpp index e8bf8d30..1872fef8 100644 --- a/src/Calculator/Views/MainPage.xaml.cpp +++ b/src/Calculator/Views/MainPage.xaml.cpp @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #include "pch.h" @@ -85,105 +85,32 @@ MainPage::MainPage() : } } -/// -/// Populates the page with content passed during navigation. Any saved state is also -/// provided when recreating a page from a prior session. -/// -/// The parameter value passed to -/// when this page was initially requested. -/// -/// A map of state preserved by this page during an earlier -/// session. This will be null the first time a page is visited. -void MainPage::LoadState(_In_ Object^ navigationParameter, _In_ IMap^ pageState) +void MainPage::OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) { - if (pageState != nullptr) + if (m_model->CalculatorViewModel) { - if (pageState->HasKey("ConverterViewModelState")) + m_model->CalculatorViewModel->HistoryVM->ClearHistory(); + } + + ViewMode initialMode = ViewMode::Standard; + if (e->Parameter != nullptr) + { + String^ stringParameter = dynamic_cast(e->Parameter); + if (stringParameter != nullptr) { - auto converterViewModelState = safe_cast(pageState->Lookup("ConverterViewModelState")); - - m_model->ConverterViewModel->Deserialize(converterViewModelState); + initialMode = (ViewMode)stoi(stringParameter->Data()); } - - //Moving these below the converter view model deserialize, since the converter modes are also displayed in the MainPage NavBar and thus need to be deserialized before setting the current mode - if (pageState->HasKey(ApplicationViewModelProperties::Mode)) - { - m_model->Mode = NavCategory::Deserialize(pageState->Lookup(ApplicationViewModelProperties::Mode)); - } - - if (pageState->HasKey(ApplicationViewModelProperties::PreviousMode)) - { - m_model->PreviousMode = NavCategory::Deserialize(pageState->Lookup(ApplicationViewModelProperties::PreviousMode)); - } - - // rehydrate - if (pageState->HasKey("CalculatorViewModelState")) - { - auto calculatorViewModelState = safe_cast^>(pageState->Lookup("CalculatorViewModelState")); - - m_model->CalculatorViewModel->Deserialize(calculatorViewModelState); - } - - m_model->CalculatorViewModel->HistoryVM->RestoreCompleteHistory(); - m_model->CalculatorViewModel->HistoryVM->ReloadHistory(m_model->Mode); } else { - // initialize - if (m_model->CalculatorViewModel) + ApplicationDataContainer^ localSettings = ApplicationData::Current->LocalSettings; + if (localSettings->Values->HasKey(ApplicationViewModelProperties::Mode)) { - m_model->CalculatorViewModel->HistoryVM->ClearHistory(); + initialMode = NavCategory::Deserialize(localSettings->Values->Lookup(ApplicationViewModelProperties::Mode)); } - - ViewMode initialMode = ViewMode::Standard; - if (navigationParameter != nullptr) - { - String^ stringParameter = dynamic_cast(navigationParameter); - if (stringParameter != nullptr) - { - initialMode = (ViewMode)stoi(stringParameter->Data()); - } - } - else - { - ApplicationDataContainer^ localSettings = ApplicationData::Current->LocalSettings; - if (localSettings->Values->HasKey(ApplicationViewModelProperties::Mode)) - { - initialMode = NavCategory::Deserialize(localSettings->Values->Lookup(ApplicationViewModelProperties::Mode)); - } - } - - m_model->Initialize(initialMode); - } -} - -/// -/// Preserves state associated with this page in case the application is suspended or the -/// page is discarded from the navigation cache. Values must conform to the serialization -/// requirements of . -/// -/// An empty map to be populated with serializable state. -void MainPage::SaveState(_In_ IMap^ pageState) -{ - int serializedCurrentMode = NavCategory::Serialize(m_model->Mode); - - pageState->Insert(ApplicationViewModelProperties::Mode, serializedCurrentMode); - pageState->Insert(ApplicationViewModelProperties::PreviousMode, NavCategory::Serialize(m_model->PreviousMode)); - - ApplicationDataContainer^ localSettings = ApplicationData::Current->LocalSettings; - localSettings->Values->Insert(ApplicationViewModelProperties::Mode, serializedCurrentMode); - - auto serializedCalculatorData = m_model->CalculatorViewModel->Serialize(); - auto serializedConverterData = m_model->ConverterViewModel->Serialize(); - if (serializedCalculatorData->Length > 0) - { - pageState->Insert("CalculatorViewModelState", serializedCalculatorData); } - if (serializedConverterData != nullptr) - { - pageState->Insert("ConverterViewModelState", serializedConverterData); - } + m_model->Initialize(initialMode); } void MainPage::WindowSizeChanged(_In_ Platform::Object^ /*sender*/, _In_ Windows::UI::Core::WindowSizeChangedEventArgs^ e) diff --git a/src/Calculator/Views/MainPage.xaml.h b/src/Calculator/Views/MainPage.xaml.h index 902328be..82453dae 100644 --- a/src/Calculator/Views/MainPage.xaml.h +++ b/src/Calculator/Views/MainPage.xaml.h @@ -1,4 +1,4 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once @@ -40,9 +40,7 @@ namespace CalculatorApp Windows::Foundation::Collections::IObservableVector^ CreateUIElementsForCategories(_In_ Windows::Foundation::Collections::IObservableVector^ categories); protected: - virtual void LoadState(_In_ Platform::Object^ navigationParameter, - _In_ Windows::Foundation::Collections::IMap^ pageState) override; - virtual void SaveState(_In_ Windows::Foundation::Collections::IMap^ pageState) override; + virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; private: void WindowSizeChanged(_In_ Platform::Object^ sender, _In_ Windows::UI::Core::WindowSizeChangedEventArgs^ e);