From 22f57aab3fc4c40c7cfcdc810c7544cfe665bf67 Mon Sep 17 00:00:00 2001 From: Rudy Huyn Date: Mon, 6 Jan 2020 14:36:45 -0800 Subject: [PATCH 1/5] Take windows setting into account to Disable/Enable animations (#748) --- src/Calculator/App.xaml.cpp | 13 ------------- src/Calculator/App.xaml.h | 5 +---- src/Calculator/Views/Calculator.xaml.cpp | 3 ++- src/Calculator/Views/UnitConverter.xaml.cpp | 9 +++------ src/Calculator/Views/UnitConverter.xaml.h | 1 - 5 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/Calculator/App.xaml.cpp b/src/Calculator/App.xaml.cpp index 0f6898c..2936680 100644 --- a/src/Calculator/App.xaml.cpp +++ b/src/Calculator/App.xaml.cpp @@ -83,16 +83,6 @@ App::App() #endif } -bool App::m_isAnimationEnabled = true; - -/// -/// Return True if animation is enabled by user setting. -/// -bool App::IsAnimationEnabled() -{ - return App::m_isAnimationEnabled; -} - void App::AddWindowToMap(_In_ WindowFrameService ^ frameService) { reader_writer_lock::scoped_lock lock(m_windowsMapLock); @@ -218,9 +208,6 @@ void App::OnAppLaunch(IActivatedEventArgs ^ args, String ^ argument) // } //#endif - auto userSettings = ref new Windows::UI::ViewManagement::UISettings(); - m_isAnimationEnabled = userSettings->AnimationsEnabled; - args->SplashScreen->Dismissed += ref new TypedEventHandler(this, &App::DismissedEventHandler); auto rootFrame = dynamic_cast(Window::Current->Content); diff --git a/src/Calculator/App.xaml.h b/src/Calculator/App.xaml.h index bc6a4eb..f11ebef 100644 --- a/src/Calculator/App.xaml.h +++ b/src/Calculator/App.xaml.h @@ -29,8 +29,7 @@ namespace CalculatorApp virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs ^ args) override; virtual void OnActivated(Windows::ApplicationModel::Activation::IActivatedEventArgs ^ args) override; - internal : - static bool IsAnimationEnabled(); + internal: void RemoveWindow(_In_ WindowFrameService ^ frameService); void RemoveSecondaryWindow(_In_ WindowFrameService ^ frameService); @@ -88,7 +87,5 @@ namespace CalculatorApp bool m_preLaunched; Windows::UI::Xaml::Controls::Primitives::Popup ^ m_aboutPopup; - - static bool m_isAnimationEnabled; }; } diff --git a/src/Calculator/Views/Calculator.xaml.cpp b/src/Calculator/Views/Calculator.xaml.cpp index bf90756..af854d6 100644 --- a/src/Calculator/Views/Calculator.xaml.cpp +++ b/src/Calculator/Views/Calculator.xaml.cpp @@ -195,7 +195,8 @@ void Calculator::UpdateViewState() void Calculator::AnimateCalculator(bool resultAnimate) { - if (App::IsAnimationEnabled()) + static auto uiSettings = ref new UISettings(); + if (uiSettings->AnimationsEnabled) { m_doAnimate = true; m_resultAnimate = resultAnimate; diff --git a/src/Calculator/Views/UnitConverter.xaml.cpp b/src/Calculator/Views/UnitConverter.xaml.cpp index f74d0a5..f1bafde 100644 --- a/src/Calculator/Views/UnitConverter.xaml.cpp +++ b/src/Calculator/Views/UnitConverter.xaml.cpp @@ -46,7 +46,6 @@ static const long long DURATION_500_MS = 10000 * 500; UnitConverter::UnitConverter() : m_meteredConnectionOverride(false) - , m_isAnimationEnabled(false) { m_layoutDirection = LocalizationService::GetInstance()->GetFlowDirection(); m_FlowDirectionHorizontalAlignment = m_layoutDirection == ::FlowDirection::RightToLeft ? ::HorizontalAlignment::Right : ::HorizontalAlignment::Left; @@ -60,9 +59,6 @@ UnitConverter::UnitConverter() bool preferRight = LocalizationSettings::GetInstance().GetCurrencySymbolPrecedence() == 0; VisualStateManager::GoToState(this, preferRight ? "CurrencySymbolRightState" : "CurrencySymbolLeftState", false); - auto userSettings = ref new UISettings(); - m_isAnimationEnabled = userSettings->AnimationsEnabled; - auto resLoader = AppResourceProvider::GetInstance(); m_chargesMayApplyText = resLoader->GetResourceString(L"DataChargesMayApply"); m_failedToRefreshText = resLoader->GetResourceString(L"FailedToRefresh"); @@ -250,7 +246,8 @@ void UnitConverter::OnPasteMenuItemClicked(_In_ Object ^ sender, _In_ RoutedEven void UnitConverter::AnimateConverter() { - if (App::IsAnimationEnabled()) + static auto uiSettings = ref new UISettings(); + if (uiSettings->AnimationsEnabled) { AnimationStory->Begin(); } @@ -332,7 +329,7 @@ void UnitConverter::OnIsDisplayVisibleChanged() if (Model->IsCurrencyCurrentCategory && !Model->CurrencyTimestamp->IsEmpty()) { - VisualStateManager::GoToState(this, L"CurrencyLoadedState", m_isAnimationEnabled); + VisualStateManager::GoToState(this, L"CurrencyLoadedState", true); } } } diff --git a/src/Calculator/Views/UnitConverter.xaml.h b/src/Calculator/Views/UnitConverter.xaml.h index dacb24a..5b460fa 100644 --- a/src/Calculator/Views/UnitConverter.xaml.h +++ b/src/Calculator/Views/UnitConverter.xaml.h @@ -87,7 +87,6 @@ namespace CalculatorApp Windows::UI::Xaml::DispatcherTimer ^ m_delayTimer; - bool m_isAnimationEnabled; void SupplementaryResultsPanelInGrid_SizeChanged(Platform::Object ^ sender, Windows::UI::Xaml::SizeChangedEventArgs ^ e); void OnVisualStateChanged(Platform::Object ^ sender, Windows::UI::Xaml::VisualStateChangedEventArgs ^ e); }; From 7f2c300e3757f71564ef7a96c115ae47f000e9ab Mon Sep 17 00:00:00 2001 From: Rudy Huyn Date: Mon, 6 Jan 2020 15:21:29 -0800 Subject: [PATCH 2/5] remove the useless code related to the management of the focus in CalculationResult (#700) --- src/Calculator/Controls/CalculationResult.cpp | 17 ----------------- src/Calculator/Controls/CalculationResult.h | 8 +------- 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/src/Calculator/Controls/CalculationResult.cpp b/src/Calculator/Controls/CalculationResult.cpp index c0b7a5b..844f1f5 100644 --- a/src/Calculator/Controls/CalculationResult.cpp +++ b/src/Calculator/Controls/CalculationResult.cpp @@ -52,9 +52,6 @@ DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, DisplayStringExpression); // and no events are launched when they scroll again in the same direction #define SCROLL_BUTTONS_APPROXIMATION_RANGE 4 -StringReference CalculationResult::s_FocusedState(L"Focused"); -StringReference CalculationResult::s_UnfocusedState(L"Unfocused"); - CalculationResult::CalculationResult() : m_isScalingText(false) , m_haveCalculatedMax(false) @@ -139,7 +136,6 @@ void CalculationResult::OnApplyTemplate() } UpdateVisualState(); UpdateTextState(); - VisualStateManager::GoToState(this, s_UnfocusedState, false); } void CalculationResult::OnTextContainerLayoutUpdated(Object ^ /*sender*/, Object ^ /*e*/) @@ -392,19 +388,6 @@ void CalculationResult::OnRightTapped(RightTappedRoutedEventArgs ^ e) } } -void CalculationResult::OnGotFocus(RoutedEventArgs ^ e) -{ - if (this->FocusState == ::FocusState::Keyboard) - { - VisualStateManager::GoToState(this, s_FocusedState, true); - } -} - -void CalculationResult::OnLostFocus(RoutedEventArgs ^ e) -{ - VisualStateManager::GoToState(this, s_UnfocusedState, true); -} - AutomationPeer ^ CalculationResult::OnCreateAutomationPeer() { return ref new CalculationResultAutomationPeer(this); diff --git a/src/Calculator/Controls/CalculationResult.h b/src/Calculator/Controls/CalculationResult.h index 8d2b6ca..b029703 100644 --- a/src/Calculator/Controls/CalculationResult.h +++ b/src/Calculator/Controls/CalculationResult.h @@ -43,9 +43,7 @@ namespace CalculatorApp virtual void OnApplyTemplate() override; virtual void OnTapped(Windows::UI::Xaml::Input::TappedRoutedEventArgs ^ e) override; virtual void OnRightTapped(Windows::UI::Xaml::Input::RightTappedRoutedEventArgs ^ e) override; - virtual void OnGotFocus(Windows::UI::Xaml::RoutedEventArgs ^ e) override; - virtual void OnLostFocus(Windows::UI::Xaml::RoutedEventArgs ^ e) override; - + virtual Windows::UI::Xaml::Automation::Peers::AutomationPeer ^ OnCreateAutomationPeer() override; private: @@ -67,10 +65,6 @@ namespace CalculatorApp void ScrollRight(); void RaiseSelectedEvent(); - // Visual states for focused - static Platform::StringReference s_FocusedState; - static Platform::StringReference s_UnfocusedState; - Windows::UI::Xaml::Controls::ScrollViewer ^ m_textContainer; Windows::UI::Xaml::Controls::TextBlock ^ m_textBlock; Windows::UI::Xaml::Controls::HyperlinkButton ^ m_scrollLeft; From f1863c0eb2e81f5ae6aa3946053f5e4f5b529892 Mon Sep 17 00:00:00 2001 From: Stephanie Anderl <46726333+sanderl@users.noreply.github.com> Date: Mon, 6 Jan 2020 16:07:22 -0800 Subject: [PATCH 3/5] Updated internal build version to 0.0.31 (#900) --- build/pipelines/templates/build-app-internal.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/pipelines/templates/build-app-internal.yaml b/build/pipelines/templates/build-app-internal.yaml index d776c21..51eb1d2 100644 --- a/build/pipelines/templates/build-app-internal.yaml +++ b/build/pipelines/templates/build-app-internal.yaml @@ -29,7 +29,7 @@ jobs: downloadDirectory: $(Build.SourcesDirectory) vstsFeed: WindowsApps vstsFeedPackage: calculator-internals - vstsPackageVersion: 0.0.22 + vstsPackageVersion: 0.0.31 - template: ./build-single-architecture.yaml parameters: From 712bdb1b7c1ad0689a4c555ccc84d6ed2c27c246 Mon Sep 17 00:00:00 2001 From: Rudy Huyn Date: Tue, 7 Jan 2020 11:03:47 -0800 Subject: [PATCH 4/5] Code cleaning: Remove all properties/functions not used in CalculationResult (#649) --- .../StandardCalculatorViewModel.h | 1 - src/Calculator/Controls/CalculationResult.cpp | 40 ++++++------------- src/Calculator/Controls/CalculationResult.h | 12 +++--- src/Calculator/Views/Calculator.xaml | 5 --- src/Calculator/Views/UnitConverter.xaml | 2 - .../StandardViewModelUnitTests.cpp | 33 +++++---------- 6 files changed, 28 insertions(+), 65 deletions(-) diff --git a/src/CalcViewModel/StandardCalculatorViewModel.h b/src/CalcViewModel/StandardCalculatorViewModel.h index d9c0ce3..909e32c 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.h +++ b/src/CalcViewModel/StandardCalculatorViewModel.h @@ -57,7 +57,6 @@ namespace CalculatorApp PROPERTY_R(Platform::String ^, SelectedExpressionLastData); OBSERVABLE_NAMED_PROPERTY_R(bool, IsInError); OBSERVABLE_PROPERTY_R(bool, IsOperatorCommand); - OBSERVABLE_PROPERTY_R(Platform::String ^, DisplayStringExpression); OBSERVABLE_PROPERTY_R(Windows::Foundation::Collections::IObservableVector ^, ExpressionTokens); OBSERVABLE_PROPERTY_R(Platform::String ^, DecimalDisplayValue); OBSERVABLE_PROPERTY_R(Platform::String ^, HexDisplayValue); diff --git a/src/Calculator/Controls/CalculationResult.cpp b/src/Calculator/Controls/CalculationResult.cpp index 844f1f5..ed092fa 100644 --- a/src/Calculator/Controls/CalculationResult.cpp +++ b/src/Calculator/Controls/CalculationResult.cpp @@ -26,16 +26,12 @@ using namespace Windows::UI::Xaml::Automation::Peers; using namespace std; DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, IsActive); -DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, AccentColor); DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, MinFontSize); DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, MaxFontSize); DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, DisplayMargin); -DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, MaxExpressionHistoryCharacters); -DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, ExpressionVisibility); DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, DisplayValue); DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, IsInError); DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, IsOperatorCommand); -DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, DisplayStringExpression); #define SCALEFACTOR 0.357143 #define SMALLHEIGHTSCALEFACTOR 0 @@ -46,6 +42,7 @@ DEPENDENCY_PROPERTY_INITIALIZATION(CalculationResult, DisplayStringExpression); #define WIDTHTOFONTOFFSET 3 #define WIDTHCUTOFF 50 #define FONTTOLERANCE 0.001 +#define SCROLL_RATIO 0.7 // We need a safety margin to guarantee we correctly always show/hide ScrollLeft and ScrollRight buttons when necessary. // In rare cases, ScrollViewer::HorizontalOffset is a little low by a few (sub)pixels when users scroll to one of the extremity @@ -120,12 +117,12 @@ void CalculationResult::OnApplyTemplate() m_scrollLeft = dynamic_cast(GetTemplateChild("ScrollLeft")); if (m_scrollLeft) { - m_scrollLeftClickToken = m_scrollLeft->Click += ref new RoutedEventHandler(this, &CalculationResult::OnScrollClick); + m_scrollLeftClickToken = m_scrollLeft->Click += ref new RoutedEventHandler(this, &CalculationResult::OnScrollLeftClick); } m_scrollRight = dynamic_cast(GetTemplateChild("ScrollRight")); if (m_scrollRight) { - m_scrollRightClickToken = m_scrollRight->Click += ref new RoutedEventHandler(this, &CalculationResult::OnScrollClick); + m_scrollRightClickToken = m_scrollRight->Click += ref new RoutedEventHandler(this, &CalculationResult::OnScrollRightClick); } m_textBlock = dynamic_cast(GetTemplateChild("NormalOutput")); if (m_textBlock) @@ -156,16 +153,6 @@ void CalculationResult::OnIsActivePropertyChanged(bool /*oldValue*/, bool /*newV UpdateVisualState(); } -void CalculationResult::OnAccentColorPropertyChanged(Brush ^ /*oldValue*/, Brush ^ /*newValue*/) -{ - // Force the "Active" transition to happen again - if (IsActive) - { - VisualStateManager::GoToState(this, "Normal", true); - VisualStateManager::GoToState(this, "Active", true); - } -} - void CalculationResult::OnDisplayValuePropertyChanged(String ^ /*oldValue*/, String ^ /*newValue*/) { UpdateTextState(); @@ -287,7 +274,7 @@ void CalculationResult::ScrollLeft() } if (m_textContainer->HorizontalOffset > 0) { - double offset = m_textContainer->HorizontalOffset - (scrollRatio * m_textContainer->ViewportWidth); + double offset = m_textContainer->HorizontalOffset - (SCROLL_RATIO * m_textContainer->ViewportWidth); m_textContainer->ChangeView(offset, nullptr, nullptr); } } @@ -301,7 +288,7 @@ void CalculationResult::ScrollRight() if (m_textContainer->HorizontalOffset < m_textContainer->ExtentWidth - m_textContainer->ViewportWidth) { - double offset = m_textContainer->HorizontalOffset + (scrollRatio * m_textContainer->ViewportWidth); + double offset = m_textContainer->HorizontalOffset + (SCROLL_RATIO * m_textContainer->ViewportWidth); m_textContainer->ChangeView(offset, nullptr, nullptr); } } @@ -319,17 +306,14 @@ void CalculationResult::OnKeyDown(KeyRoutedEventArgs ^ e) } } -void CalculationResult::OnScrollClick(Object ^ sender, RoutedEventArgs ^ /*e*/) +void CalculationResult::OnScrollLeftClick(Object ^ sender, RoutedEventArgs ^ /*e*/) { - auto clicked = dynamic_cast(sender); - if (clicked == m_scrollLeft) - { - this->ScrollLeft(); - } - else - { - this->ScrollRight(); - } + ScrollLeft(); +} + +void CalculationResult::OnScrollRightClick(Object ^ sender, RoutedEventArgs ^ /*e*/) +{ + ScrollRight(); } void CalculationResult::UpdateScrollButtons() diff --git a/src/Calculator/Controls/CalculationResult.h b/src/Calculator/Controls/CalculationResult.h index b029703..2db9fdb 100644 --- a/src/Calculator/Controls/CalculationResult.h +++ b/src/Calculator/Controls/CalculationResult.h @@ -20,15 +20,11 @@ namespace CalculatorApp DEPENDENCY_PROPERTY_OWNER(CalculationResult); - DEPENDENCY_PROPERTY(Windows::UI::Xaml::Visibility, ExpressionVisibility); DEPENDENCY_PROPERTY_WITH_DEFAULT_AND_CALLBACK(double, MinFontSize, 0.0); DEPENDENCY_PROPERTY_WITH_DEFAULT_AND_CALLBACK(double, MaxFontSize, 30.0); DEPENDENCY_PROPERTY(Windows::UI::Xaml::Thickness, DisplayMargin); - DEPENDENCY_PROPERTY(int, MaxExpressionHistoryCharacters); DEPENDENCY_PROPERTY_WITH_CALLBACK(bool, IsActive); - DEPENDENCY_PROPERTY_WITH_CALLBACK(Windows::UI::Xaml::Media::Brush ^, AccentColor); DEPENDENCY_PROPERTY_WITH_CALLBACK(Platform::String ^, DisplayValue); - DEPENDENCY_PROPERTY(Platform::String ^, DisplayStringExpression); DEPENDENCY_PROPERTY_WITH_CALLBACK(bool, IsInError); DEPENDENCY_PROPERTY_WITH_DEFAULT(bool, IsOperatorCommand, false); @@ -48,7 +44,6 @@ namespace CalculatorApp private: void OnIsActivePropertyChanged(bool oldValue, bool newValue); - void OnAccentColorPropertyChanged(Windows::UI::Xaml::Media::Brush ^ oldValue, Windows::UI::Xaml::Media::Brush ^ newValue); void OnDisplayValuePropertyChanged(Platform::String ^ oldValue, Platform::String ^ newValue); void OnIsInErrorPropertyChanged(bool oldValue, bool newValue); void OnMinFontSizePropertyChanged(double oldValue, double newValue); @@ -58,7 +53,11 @@ namespace CalculatorApp void OnTextContainerLayoutUpdated(Object ^ sender, Object ^ e); void OnTextContainerOnViewChanged(Object ^ sender, Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs ^ e); void UpdateVisualState(); - void OnScrollClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void UpdateAllState(); + void OnScrollLeftClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void OnScrollRightClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void OnPointerEntered(Platform::Object ^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs ^ e); + void OnPointerExited(Platform::Object ^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs ^ e); void ModifyFontAndMargin(Windows::UI::Xaml::Controls::TextBlock ^ textBlock, double fontChange); void UpdateScrollButtons(); void ScrollLeft(); @@ -69,7 +68,6 @@ namespace CalculatorApp Windows::UI::Xaml::Controls::TextBlock ^ m_textBlock; Windows::UI::Xaml::Controls::HyperlinkButton ^ m_scrollLeft; Windows::UI::Xaml::Controls::HyperlinkButton ^ m_scrollRight; - double scrollRatio = 0.7; bool m_isScalingText; bool m_haveCalculatedMax; Windows::Foundation::EventRegistrationToken m_textContainerLayoutChangedToken; diff --git a/src/Calculator/Views/Calculator.xaml b/src/Calculator/Views/Calculator.xaml index 8469206..71dddef 100644 --- a/src/Calculator/Views/Calculator.xaml +++ b/src/Calculator/Views/Calculator.xaml @@ -547,7 +547,6 @@ - @@ -558,7 +557,6 @@ - @@ -569,7 +567,6 @@ - @@ -615,9 +612,7 @@ AutomationProperties.Name="{x:Bind Model.CalculationResultAutomationName, Mode=OneWay}" ContextCanceled="OnContextCanceled" ContextRequested="OnContextRequested" - DisplayStringExpression="{x:Bind Model.DisplayStringExpression, Mode=OneWay}" DisplayValue="{x:Bind Model.DisplayValue, Mode=OneWay}" - ExpressionVisibility="Visible" IsInError="{x:Bind Model.IsInError, Mode=OneWay}" IsOperatorCommand="{x:Bind Model.IsOperatorCommand, Mode=OneWay}" TabIndex="1" diff --git a/src/Calculator/Views/UnitConverter.xaml b/src/Calculator/Views/UnitConverter.xaml index 0e15b92..21c6403 100644 --- a/src/Calculator/Views/UnitConverter.xaml +++ b/src/Calculator/Views/UnitConverter.xaml @@ -559,7 +559,6 @@ ContextCanceled="OnContextCanceled" ContextRequested="OnContextRequested" DisplayValue="{x:Bind Model.Value1, Mode=OneWay}" - ExpressionVisibility="Collapsed" FlowDirection="{x:Bind LayoutDirection}" IsActive="{Binding Value1Active, Mode=TwoWay}" KeyDown="OnValueKeyDown" @@ -610,7 +609,6 @@ ContextCanceled="OnContextCanceled" ContextRequested="OnContextRequested" DisplayValue="{x:Bind Model.Value2, Mode=OneWay}" - ExpressionVisibility="Collapsed" FlowDirection="{x:Bind LayoutDirection}" IsActive="{Binding Value2Active, Mode=TwoWay}" KeyDown="OnValueKeyDown" diff --git a/src/CalculatorUnitTests/StandardViewModelUnitTests.cpp b/src/CalculatorUnitTests/StandardViewModelUnitTests.cpp index 6bf7dff..1f9d40d 100644 --- a/src/CalculatorUnitTests/StandardViewModelUnitTests.cpp +++ b/src/CalculatorUnitTests/StandardViewModelUnitTests.cpp @@ -103,10 +103,6 @@ namespace CalculatorUnitTests { VERIFY_ARE_EQUAL(Platform::StringReference(currentItem->expectedPrimaryDisplay.c_str()), viewModel->DisplayValue); } - if (currentItem->expectedExpressions != L"N/A" && viewModel->DisplayStringExpression != nullptr) - { - VERIFY_ARE_EQUAL(Platform::StringReference(currentItem->expectedExpressions.c_str()), viewModel->DisplayStringExpression); - } currentItem++; } } @@ -122,19 +118,13 @@ namespace CalculatorUnitTests m_decimalSeparator = ref new Platform::String(m_engineResourceProvider->GetCEngineString(L"sDecimal").c_str()); } - void ValidateViewModelValueAndExpression(String ^ value, String ^ expression = nullptr) + void ValidateViewModelValue(String ^ value) { String ^ displayValue = m_viewModel->DisplayValue; - String ^ displayExpression = m_viewModel->DisplayStringExpression; if (value != nullptr) { VERIFY_ARE_EQUAL(value, displayValue); } - - if (expression != nullptr) - { - VERIFY_ARE_EQUAL(expression, displayExpression); - } } void ValidateViewModelValueAndSecondaryExpression(String ^ value, String ^ expression = nullptr) @@ -167,7 +157,6 @@ namespace CalculatorUnitTests StandardCalculatorViewModel ^ vmconstructortest = ref new StandardCalculatorViewModel(); vmconstructortest->IsStandard = true; String ^ displayValue = vmconstructortest->DisplayValue; - String ^ displayExpression = vmconstructortest->DisplayStringExpression; String ^ calculationResultAutomationName = vmconstructortest->CalculationResultAutomationName; VERIFY_ARE_EQUAL(StringReference(L"0"), displayValue); @@ -401,18 +390,18 @@ namespace CalculatorUnitTests m_viewModel->IsScientific = false; m_viewModel->OnPaste("-0.99"); - ValidateViewModelValueAndExpression("-0" + m_decimalSeparator + "99", ""); + ValidateViewModelValue("-0" + m_decimalSeparator + "99"); m_viewModel->OnPaste("1+1="); - ValidateViewModelValueAndExpression("2", ""); + ValidateViewModelValue("2"); // This result is not obvious: it's the result of the previous operation m_viewModel->OnPaste("0="); - ValidateViewModelValueAndExpression("1", ""); + ValidateViewModelValue("1"); // Negative value m_viewModel->OnPaste("-1"); - ValidateViewModelValueAndExpression("-1", ""); + ValidateViewModelValue("-1"); // Negated expression m_viewModel->OnPaste("-(1+1)"); @@ -429,24 +418,24 @@ namespace CalculatorUnitTests //// Positive exponent m_viewModel->OnPaste("1.23e+10"); - ValidateViewModelValueAndExpression("1" + m_decimalSeparator + "23e+10", ""); + ValidateViewModelValue("1" + m_decimalSeparator + "23e+10"); m_viewModel->OnPaste("1.23e10"); - ValidateViewModelValueAndExpression("1" + m_decimalSeparator + "23e+10", ""); + ValidateViewModelValue("1" + m_decimalSeparator + "23e+10"); m_viewModel->OnPaste("135e10"); - ValidateViewModelValueAndExpression("135" + m_decimalSeparator + "e+10", ""); + ValidateViewModelValue("135" + m_decimalSeparator + "e+10"); //// Negative exponent m_viewModel->OnPaste("1.23e-10"); - ValidateViewModelValueAndExpression("1" + m_decimalSeparator + "23e-10", ""); + ValidateViewModelValue("1" + m_decimalSeparator + "23e-10"); //// Uppercase E (for exponent) m_viewModel->OnPaste("1.23E-10"); - ValidateViewModelValueAndExpression("1" + m_decimalSeparator + "23e-10", ""); + ValidateViewModelValue("1" + m_decimalSeparator + "23e-10"); m_viewModel->OnPaste("135E10"); - ValidateViewModelValueAndExpression("135" + m_decimalSeparator + "e+10", ""); + ValidateViewModelValue("135" + m_decimalSeparator + "e+10"); } // Verify Calculator CalculationResultAutomationName is set correctly From 2d177e51605874fb264ef8dd03564a1b9d6aa03a Mon Sep 17 00:00:00 2001 From: Rudy Huyn Date: Tue, 7 Jan 2020 13:59:51 -0800 Subject: [PATCH 5/5] CalcViewModel code cleaning (#754) * move KeyboardShortcutManager, ValidationConverter and ViewState to Calculator * remove dead code listed in #753 * remove Microsoft.UI.Xaml nuget package from CalcViewModel --- src/CalcViewModel/CalcViewModel.vcxproj | 19 +------- .../CalcViewModel.vcxproj.filters | 34 ++------------ src/CalcViewModel/Common/BindableBase.cpp | 34 -------------- src/CalcViewModel/Common/BindableBase.h | 38 ---------------- .../Common/ConversionResultTaskHelper.cpp | 41 ----------------- .../Common/ConversionResultTaskHelper.h | 24 ---------- src/CalcViewModel/Common/TraceActivity.h | 5 +-- src/CalcViewModel/HistoryViewModel.cpp | 6 --- src/CalcViewModel/HistoryViewModel.h | 1 - .../StandardCalculatorViewModel.cpp | 44 ------------------- .../StandardCalculatorViewModel.h | 8 ---- src/CalcViewModel/UnitConverterViewModel.cpp | 32 +++----------- src/CalcViewModel/UnitConverterViewModel.h | 5 --- src/CalcViewModel/packages.config | 4 -- src/Calculator/Calculator.vcxproj | 7 ++- src/Calculator/Calculator.vcxproj.filters | 20 ++++++--- src/Calculator/Common/AppLifecycleLogger.cpp | 2 +- src/Calculator/Common/BindableBase.cpp | 34 -------------- src/Calculator/Common/BindableBase.h | 38 ---------------- .../Common/KeyboardShortcutManager.cpp | 6 +-- .../Common/KeyboardShortcutManager.h | 4 +- .../Common/ValidatingConverters.h | 0 src/Calculator/Common/ViewState.cpp | 19 ++++++++ src/Calculator/Common/ViewState.h | 15 +++++++ .../CalculatorScientificOperators.xaml.cpp | 2 +- src/Calculator/Views/DateCalculator.xaml | 2 +- src/Calculator/Views/MainPage.xaml.cpp | 3 +- src/Calculator/Views/NumberPad.xaml.h | 2 +- src/Calculator/Views/UnitConverter.xaml.cpp | 2 +- src/Calculator/Views/UnitConverter.xaml.h | 2 +- src/Calculator/WindowFrameService.cpp | 2 +- 31 files changed, 77 insertions(+), 378 deletions(-) delete mode 100644 src/CalcViewModel/Common/BindableBase.cpp delete mode 100644 src/CalcViewModel/Common/BindableBase.h delete mode 100644 src/CalcViewModel/Common/ConversionResultTaskHelper.cpp delete mode 100644 src/CalcViewModel/Common/ConversionResultTaskHelper.h delete mode 100644 src/CalcViewModel/packages.config delete mode 100644 src/Calculator/Common/BindableBase.cpp delete mode 100644 src/Calculator/Common/BindableBase.h rename src/{CalcViewModel => Calculator}/Common/KeyboardShortcutManager.cpp (99%) rename src/{CalcViewModel => Calculator}/Common/KeyboardShortcutManager.h (97%) rename src/{CalcViewModel => Calculator}/Common/ValidatingConverters.h (100%) create mode 100644 src/Calculator/Common/ViewState.cpp create mode 100644 src/Calculator/Common/ViewState.h diff --git a/src/CalcViewModel/CalcViewModel.vcxproj b/src/CalcViewModel/CalcViewModel.vcxproj index 49bc036..c00baff 100644 --- a/src/CalcViewModel/CalcViewModel.vcxproj +++ b/src/CalcViewModel/CalcViewModel.vcxproj @@ -313,16 +313,13 @@ - - - @@ -330,7 +327,6 @@ - @@ -341,7 +337,6 @@ - @@ -361,16 +356,13 @@ - - - @@ -420,16 +412,7 @@ - - - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - + \ No newline at end of file diff --git a/src/CalcViewModel/CalcViewModel.vcxproj.filters b/src/CalcViewModel/CalcViewModel.vcxproj.filters index ac5d41d..051808a 100644 --- a/src/CalcViewModel/CalcViewModel.vcxproj.filters +++ b/src/CalcViewModel/CalcViewModel.vcxproj.filters @@ -23,18 +23,12 @@ Common - - Common - Common Common - - Common - Common @@ -50,9 +44,6 @@ Common - - Common - Common @@ -94,15 +85,9 @@ - - Common - Common - - Common - Common @@ -112,18 +97,12 @@ Common - - Common - Common Common - - Common - Common @@ -136,9 +115,6 @@ Common - - Common - Common @@ -163,9 +139,6 @@ Common - - Common - Common\Automation @@ -199,14 +172,13 @@ Common + + Common + DataLoaders - - - - \ No newline at end of file diff --git a/src/CalcViewModel/Common/BindableBase.cpp b/src/CalcViewModel/Common/BindableBase.cpp deleted file mode 100644 index ccba798..0000000 --- a/src/CalcViewModel/Common/BindableBase.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#include "pch.h" -#include "BindableBase.h" - -using namespace CalculatorApp::Common; - -using namespace Platform; -using namespace Windows::UI::Xaml::Data; - -/// -/// Notifies listeners that a property value has changed. -/// -/// Name of the property used to notify listeners. -void BindableBase::OnPropertyChanged(String ^ propertyName) -{ - PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); -} - -Windows::UI::Xaml::Data::ICustomProperty ^ BindableBase::GetCustomProperty(Platform::String ^ name) -{ - return nullptr; -} - -Windows::UI::Xaml::Data::ICustomProperty ^ BindableBase::GetIndexedProperty(Platform::String ^ name, Windows::UI::Xaml::Interop::TypeName type) -{ - return nullptr; -} - -Platform::String ^ BindableBase::GetStringRepresentation() -{ - return this->ToString(); -} diff --git a/src/CalcViewModel/Common/BindableBase.h b/src/CalcViewModel/Common/BindableBase.h deleted file mode 100644 index d1f958f..0000000 --- a/src/CalcViewModel/Common/BindableBase.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#pragma once - -namespace CalculatorApp -{ - namespace Common - { - /// - /// Implementation of to simplify models. - /// - [Windows::Foundation::Metadata::WebHostHidden] public ref class BindableBase : Windows::UI::Xaml::DependencyObject, - Windows::UI::Xaml::Data::INotifyPropertyChanged, - Windows::UI::Xaml::Data::ICustomPropertyProvider - { - public: - virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler ^ PropertyChanged; - - public: - // ICustomPropertyProvider - virtual Windows::UI::Xaml::Data::ICustomProperty ^ GetCustomProperty(Platform::String ^ name); - virtual Windows::UI::Xaml::Data::ICustomProperty ^ GetIndexedProperty(Platform::String ^ name, Windows::UI::Xaml::Interop::TypeName type); - virtual Platform::String ^ GetStringRepresentation(); - - property Windows::UI::Xaml::Interop::TypeName Type - { - virtual Windows::UI::Xaml::Interop::TypeName get() - { - return this->GetType(); - } - } - - protected: - virtual void OnPropertyChanged(Platform::String ^ propertyName); - }; - } -} diff --git a/src/CalcViewModel/Common/ConversionResultTaskHelper.cpp b/src/CalcViewModel/Common/ConversionResultTaskHelper.cpp deleted file mode 100644 index ec90228..0000000 --- a/src/CalcViewModel/Common/ConversionResultTaskHelper.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#include "pch.h" -#include "ConversionResultTaskHelper.h" - -using namespace CalculatorApp::Common; -using namespace concurrency; -using namespace std; - -ConversionResultTaskHelper::ConversionResultTaskHelper(unsigned int delay, const function functionToRun) - : m_delay{ delay } - , m_storedFunction{ functionToRun } -{ - auto token = m_cts.get_token(); - auto delayTask = CompleteAfter(delay); - delayTask.then( - [this, token]() { - if (!token.is_canceled()) - { - m_storedFunction(); - } - }, - task_continuation_context::use_current()); -} - -ConversionResultTaskHelper::~ConversionResultTaskHelper() -{ - m_cts.cancel(); -} - -#pragma optimize("", off) -// Creates a task that completes after the specified delay. -// -// Taken from: How to: Create a Task that Completes After a Delay -// https://msdn.microsoft.com/en-us/library/hh873170.aspx -task ConversionResultTaskHelper::CompleteAfter(unsigned int timeout) -{ - co_await winrt::resume_after(winrt::Windows::Foundation::TimeSpan{ std::chrono::duration(timeout) }); -}; -#pragma optimize("", on) diff --git a/src/CalcViewModel/Common/ConversionResultTaskHelper.h b/src/CalcViewModel/Common/ConversionResultTaskHelper.h deleted file mode 100644 index 2fe543c..0000000 --- a/src/CalcViewModel/Common/ConversionResultTaskHelper.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#pragma once - -namespace CalculatorApp -{ - namespace Common - { - class ConversionResultTaskHelper - { - public: - ConversionResultTaskHelper(unsigned int delay, const std::function functionToRun); - ~ConversionResultTaskHelper(); - - private: - concurrency::task CompleteAfter(unsigned int timeout); - - unsigned int m_delay; - concurrency::cancellation_token_source m_cts; - const std::function m_storedFunction; - }; - } -} diff --git a/src/CalcViewModel/Common/TraceActivity.h b/src/CalcViewModel/Common/TraceActivity.h index 41046a6..003bf6b 100644 --- a/src/CalcViewModel/Common/TraceActivity.h +++ b/src/CalcViewModel/Common/TraceActivity.h @@ -1,12 +1,11 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. +// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once +#include namespace CalculatorApp { - constexpr int64_t WINEVENT_KEYWORD_RESPONSE_TIME = 0x1000000000000; - // RAII wrapper that automatically sends the Stop event when the class gets destructed. class TraceActivity { diff --git a/src/CalcViewModel/HistoryViewModel.cpp b/src/CalcViewModel/HistoryViewModel.cpp index 58bd726..473322e 100644 --- a/src/CalcViewModel/HistoryViewModel.cpp +++ b/src/CalcViewModel/HistoryViewModel.cpp @@ -36,12 +36,6 @@ HistoryViewModel::HistoryViewModel(_In_ CalculationManager::CalculatorManager* c ItemSize = 0; } -void HistoryViewModel::RestoreCompleteHistory() -{ - RestoreHistory(CalculationManager::CALCULATOR_MODE::CM_STD); - RestoreHistory(CalculationManager::CALCULATOR_MODE::CM_SCI); -} - // this will reload Items with the history list based on current mode void HistoryViewModel::ReloadHistory(_In_ ViewMode currentMode) { diff --git a/src/CalcViewModel/HistoryViewModel.h b/src/CalcViewModel/HistoryViewModel.h index 75321d3..c1c3773 100644 --- a/src/CalcViewModel/HistoryViewModel.h +++ b/src/CalcViewModel/HistoryViewModel.h @@ -41,7 +41,6 @@ namespace CalculatorApp event HistoryItemClickedHandler ^ HistoryItemClicked; void ShowItem(_In_ CalculatorApp::ViewModel::HistoryItemViewModel ^ e); void ClearHistory(); - void RestoreCompleteHistory(); internal : HistoryViewModel(_In_ CalculationManager::CalculatorManager* calculatorManager); void SetCalculatorDisplay(CalculatorDisplay& calculatorDisplay); diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index 3b3647d..2bfeb52 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -903,21 +903,6 @@ void StandardCalculatorViewModel::OnClearMemoryCommand(Object ^ parameter) Announcement = CalculatorAnnouncement::GetMemoryClearedAnnouncement(m_localizedMemoryCleared); } -void StandardCalculatorViewModel::OnPinUnpinCommand(Object ^ parameter) -{ - SetViewPinnedState(!IsViewPinned()); -} - -bool StandardCalculatorViewModel::IsViewPinned() -{ - return m_IsCurrentViewPinned; -} - -void StandardCalculatorViewModel::SetViewPinnedState(bool pinned) -{ - IsCurrentViewPinned = pinned; -} - ButtonInfo StandardCalculatorViewModel::MapCharacterToButtonId(char16 ch) { ButtonInfo result; @@ -1476,15 +1461,6 @@ void StandardCalculatorViewModel::Recalculate(bool fromHistory) } } -CommandType StandardCalculatorViewModel::GetSelectedTokenType(_In_ unsigned int tokenPosition) -{ - const pair& token = m_tokens->at(tokenPosition); - unsigned int tokenCommandIndex = token.second; - const shared_ptr& tokenCommand = m_commands->at(tokenCommandIndex); - - return tokenCommand->GetCommandType(); -} - bool StandardCalculatorViewModel::IsOpnd(Command command) { static constexpr Command opnd[] = { Command::Command0, Command::Command1, Command::Command2, Command::Command3, Command::Command4, Command::Command5, @@ -1626,26 +1602,6 @@ void StandardCalculatorViewModel::SwitchAngleType(NumbersAndOperatorsEnum num) OnButtonPressed(num); } -NumbersAndOperatorsEnum StandardCalculatorViewModel::ConvertIntegerToNumbersAndOperatorsEnum(unsigned int parameter) -{ - NumbersAndOperatorsEnum angletype; - switch (parameter) - { - case 321: - angletype = NumbersAndOperatorsEnum::Degree; - break; - case 322: - angletype = NumbersAndOperatorsEnum::Radians; - break; - case 323: - angletype = NumbersAndOperatorsEnum::Grads; - break; - default: - angletype = NumbersAndOperatorsEnum::Degree; - }; - return angletype; -} - void StandardCalculatorViewModel::UpdateOperand(int pos, String ^ text) { pair p = m_tokens->at(pos); diff --git a/src/CalcViewModel/StandardCalculatorViewModel.h b/src/CalcViewModel/StandardCalculatorViewModel.h index 909e32c..38584b5 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.h +++ b/src/CalcViewModel/StandardCalculatorViewModel.h @@ -71,7 +71,6 @@ namespace CalculatorApp OBSERVABLE_PROPERTY_R(bool, IsUnaryOperatorEnabled); OBSERVABLE_PROPERTY_R(bool, IsNegateEnabled); OBSERVABLE_PROPERTY_RW(bool, IsDecimalEnabled); - OBSERVABLE_PROPERTY_R(bool, IsCurrentViewPinned); OBSERVABLE_PROPERTY_R(Windows::Foundation::Collections::IVector ^, MemorizedNumbers); OBSERVABLE_NAMED_PROPERTY_RW(bool, IsMemoryEmpty); OBSERVABLE_PROPERTY_R(bool, IsFToEChecked); @@ -209,7 +208,6 @@ namespace CalculatorApp { if (m_isEditingEnabled != value) { - // Numbers::Common::KeyboardShortcutManager::IsCalculatorInEditingMode = value; m_isEditingEnabled = value; bool currentEditToggleValue = !m_isEditingEnabled; IsBinaryOperatorEnabled = currentEditToggleValue; @@ -262,7 +260,6 @@ namespace CalculatorApp void OnMemoryAdd(Platform::Object ^ memoryItemPosition); void OnMemorySubtract(Platform::Object ^ memoryItemPosition); void OnMemoryClear(_In_ Platform::Object ^ memoryItemPosition); - void OnPinUnpinCommand(Platform::Object ^ parameter); void OnInputChanged(); void DisplayPasteError(); @@ -332,7 +329,6 @@ namespace CalculatorApp Platform::String ^ m_localizedOpenParenthesisCountChangedAutomationFormat; Platform::String ^ m_localizedNoRightParenthesisAddedFormat; - bool m_pinned; bool m_isOperandEnabled; bool m_isEditingEnabled; bool m_isStandard; @@ -372,12 +368,8 @@ namespace CalculatorApp bool IsOpnd(CalculationManager::Command command); bool IsRecoverableCommand(CalculationManager::Command command); - CalculationManager::CommandType GetSelectedTokenType(_In_ unsigned int); void SaveEditedCommand(_In_ unsigned int index, _In_ CalculationManager::Command command); - bool IsViewPinned(); - void SetViewPinnedState(bool pinned); - CalculatorApp::Common::ViewMode GetCalculatorMode(); friend class CalculatorDisplay; diff --git a/src/CalcViewModel/UnitConverterViewModel.cpp b/src/CalcViewModel/UnitConverterViewModel.cpp index bab3c78..ecf4f80 100644 --- a/src/CalcViewModel/UnitConverterViewModel.cpp +++ b/src/CalcViewModel/UnitConverterViewModel.cpp @@ -478,21 +478,11 @@ void UnitConverterViewModel::OnButtonPressed(Platform::Object ^ parameter) static constexpr UCM::Command OPERANDS[] = { UCM::Command::Zero, UCM::Command::One, UCM::Command::Two, UCM::Command::Three, UCM::Command::Four, UCM::Command::Five, UCM::Command::Six, UCM::Command::Seven, UCM::Command::Eight, UCM::Command::Nine }; - - if (find(begin(OPERANDS), end(OPERANDS), command) != end(OPERANDS)) - { - if (m_isInputBlocked) - { - return; - } - - if (m_IsCurrencyCurrentCategory) - { - StartConversionResultTimer(); - } - } - - m_model->SendCommand(command); + if (m_isInputBlocked) + { + return; + } + m_model->SendCommand(command); TraceLogger::GetInstance()->LogConverterInputReceived(Mode); } @@ -998,18 +988,6 @@ bool UnitConverterViewModel::UnitsAreValid() return UnitFrom != nullptr && !UnitFrom->Abbreviation->IsEmpty() && UnitTo != nullptr && !UnitTo->Abbreviation->IsEmpty(); } -void UnitConverterViewModel::StartConversionResultTimer() -{ - auto that(this); - m_conversionResultTaskHelper = make_unique(CONVERSION_FINALIZED_DELAY_IN_MS, [that]() { - if (that->UnitsAreValid()) - { - String ^ valueFrom = that->m_Value1Active ? that->m_Value1 : that->m_Value2; - String ^ valueTo = that->m_Value1Active ? that->m_Value2 : that->m_Value1; - } - }); -} - String ^ SupplementaryResult::GetLocalizedAutomationName() { auto format = AppResourceProvider::GetInstance()->GetResourceString("SupplementaryUnit_AutomationName"); diff --git a/src/CalcViewModel/UnitConverterViewModel.h b/src/CalcViewModel/UnitConverterViewModel.h index 6a8761a..5891f03 100644 --- a/src/CalcViewModel/UnitConverterViewModel.h +++ b/src/CalcViewModel/UnitConverterViewModel.h @@ -7,7 +7,6 @@ #include "Common/Utils.h" #include "Common/NetworkManager.h" #include "Common/Automation/NarratorAnnouncement.h" -#include "Common/ConversionResultTaskHelper.h" #include "Common/CalculatorButtonUser.h" #include "Common/NavCategory.h" @@ -264,8 +263,6 @@ namespace CalculatorApp void OnButtonPressed(Platform::Object ^ parameter); Platform::String ^ ConvertToLocalizedString(const std::wstring& stringToLocalize, bool allowPartialStrings); - void StartConversionResultTimer(); - std::shared_ptr m_model; wchar_t m_decimalSeparator; @@ -326,8 +323,6 @@ namespace CalculatorApp Platform::String ^ m_lastAnnouncedConversionResult; bool m_isCurrencyDataLoaded; - - std::unique_ptr m_conversionResultTaskHelper; }; class UnitConverterVMCallback : public UnitConversionManager::IUnitConverterVMCallback diff --git a/src/CalcViewModel/packages.config b/src/CalcViewModel/packages.config deleted file mode 100644 index c148e5d..0000000 --- a/src/CalcViewModel/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/Calculator/Calculator.vcxproj b/src/Calculator/Calculator.vcxproj index 2490855..14ab603 100644 --- a/src/Calculator/Calculator.vcxproj +++ b/src/Calculator/Calculator.vcxproj @@ -230,10 +230,12 @@ AboutFlyout.xaml + + + - @@ -363,9 +365,10 @@ App.xaml + + - diff --git a/src/Calculator/Calculator.vcxproj.filters b/src/Calculator/Calculator.vcxproj.filters index ee5ce92..328c8ba 100644 --- a/src/Calculator/Calculator.vcxproj.filters +++ b/src/Calculator/Calculator.vcxproj.filters @@ -225,9 +225,6 @@ - - Common - Controls @@ -308,6 +305,10 @@ Controls + + Common + + @@ -315,9 +316,6 @@ Common - - Common - Controls @@ -398,6 +396,13 @@ Controls + + Common + + + Common + + @@ -465,6 +470,7 @@ Views + @@ -1510,4 +1516,4 @@ - + \ No newline at end of file diff --git a/src/Calculator/Common/AppLifecycleLogger.cpp b/src/Calculator/Common/AppLifecycleLogger.cpp index 0df9136..bc4b760 100644 --- a/src/Calculator/Common/AppLifecycleLogger.cpp +++ b/src/Calculator/Common/AppLifecycleLogger.cpp @@ -3,7 +3,7 @@ #include "pch.h" #include "AppLifecycleLogger.h" -#include "CalcViewModel/Common/TraceActivity.h" +#include using namespace std; using namespace winrt; diff --git a/src/Calculator/Common/BindableBase.cpp b/src/Calculator/Common/BindableBase.cpp deleted file mode 100644 index ccba798..0000000 --- a/src/Calculator/Common/BindableBase.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#include "pch.h" -#include "BindableBase.h" - -using namespace CalculatorApp::Common; - -using namespace Platform; -using namespace Windows::UI::Xaml::Data; - -/// -/// Notifies listeners that a property value has changed. -/// -/// Name of the property used to notify listeners. -void BindableBase::OnPropertyChanged(String ^ propertyName) -{ - PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName)); -} - -Windows::UI::Xaml::Data::ICustomProperty ^ BindableBase::GetCustomProperty(Platform::String ^ name) -{ - return nullptr; -} - -Windows::UI::Xaml::Data::ICustomProperty ^ BindableBase::GetIndexedProperty(Platform::String ^ name, Windows::UI::Xaml::Interop::TypeName type) -{ - return nullptr; -} - -Platform::String ^ BindableBase::GetStringRepresentation() -{ - return this->ToString(); -} diff --git a/src/Calculator/Common/BindableBase.h b/src/Calculator/Common/BindableBase.h deleted file mode 100644 index d1f958f..0000000 --- a/src/Calculator/Common/BindableBase.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -#pragma once - -namespace CalculatorApp -{ - namespace Common - { - /// - /// Implementation of to simplify models. - /// - [Windows::Foundation::Metadata::WebHostHidden] public ref class BindableBase : Windows::UI::Xaml::DependencyObject, - Windows::UI::Xaml::Data::INotifyPropertyChanged, - Windows::UI::Xaml::Data::ICustomPropertyProvider - { - public: - virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler ^ PropertyChanged; - - public: - // ICustomPropertyProvider - virtual Windows::UI::Xaml::Data::ICustomProperty ^ GetCustomProperty(Platform::String ^ name); - virtual Windows::UI::Xaml::Data::ICustomProperty ^ GetIndexedProperty(Platform::String ^ name, Windows::UI::Xaml::Interop::TypeName type); - virtual Platform::String ^ GetStringRepresentation(); - - property Windows::UI::Xaml::Interop::TypeName Type - { - virtual Windows::UI::Xaml::Interop::TypeName get() - { - return this->GetType(); - } - } - - protected: - virtual void OnPropertyChanged(Platform::String ^ propertyName); - }; - } -} diff --git a/src/CalcViewModel/Common/KeyboardShortcutManager.cpp b/src/Calculator/Common/KeyboardShortcutManager.cpp similarity index 99% rename from src/CalcViewModel/Common/KeyboardShortcutManager.cpp rename to src/Calculator/Common/KeyboardShortcutManager.cpp index 8990d5e..d828a86 100644 --- a/src/CalcViewModel/Common/KeyboardShortcutManager.cpp +++ b/src/Calculator/Common/KeyboardShortcutManager.cpp @@ -3,9 +3,9 @@ #include "pch.h" #include "KeyboardShortcutManager.h" -#include "AppResourceProvider.h" -#include "ApplicationViewModel.h" -#include "LocalizationSettings.h" +#include "CalcViewModel/Common/AppResourceProvider.h" +#include "CalcViewModel/ApplicationViewModel.h" +#include "CalcViewModel/Common/LocalizationSettings.h" using namespace Concurrency; using namespace Platform; diff --git a/src/CalcViewModel/Common/KeyboardShortcutManager.h b/src/Calculator/Common/KeyboardShortcutManager.h similarity index 97% rename from src/CalcViewModel/Common/KeyboardShortcutManager.h rename to src/Calculator/Common/KeyboardShortcutManager.h index 6663f2c..0d6fce5 100644 --- a/src/CalcViewModel/Common/KeyboardShortcutManager.h +++ b/src/Calculator/Common/KeyboardShortcutManager.h @@ -3,8 +3,8 @@ #pragma once -#include "Utils.h" -#include "MyVirtualKey.h" +#include "CalcViewModel/Common/Utils.h" +#include "CalcViewModel/Common/MyVirtualKey.h" namespace CalculatorApp { diff --git a/src/CalcViewModel/Common/ValidatingConverters.h b/src/Calculator/Common/ValidatingConverters.h similarity index 100% rename from src/CalcViewModel/Common/ValidatingConverters.h rename to src/Calculator/Common/ValidatingConverters.h diff --git a/src/Calculator/Common/ViewState.cpp b/src/Calculator/Common/ViewState.cpp new file mode 100644 index 0000000..63a5d30 --- /dev/null +++ b/src/Calculator/Common/ViewState.cpp @@ -0,0 +1,19 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#include "pch.h" +#include "ViewState.h" + +namespace CalculatorApp +{ + namespace ViewState + { + Platform::StringReference Snap(L"Snap"); + Platform::StringReference DockedView(L"DockedView"); + + bool IsValidViewState(Platform::String ^ viewState) + { + return viewState->Equals(ViewState::Snap) || viewState->Equals(ViewState::DockedView); + } + } +} diff --git a/src/Calculator/Common/ViewState.h b/src/Calculator/Common/ViewState.h new file mode 100644 index 0000000..0a103d0 --- /dev/null +++ b/src/Calculator/Common/ViewState.h @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#pragma once + +namespace CalculatorApp +{ + namespace ViewState + { + extern Platform::StringReference Snap; + extern Platform::StringReference DockedView; + + bool IsValidViewState(Platform::String ^ viewState); + } +} diff --git a/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp b/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp index 45f0643..5b7b612 100644 --- a/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp +++ b/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp @@ -8,7 +8,7 @@ #include "pch.h" #include "CalculatorScientificOperators.xaml.h" -#include "CalcViewModel/Common/KeyboardShortcutManager.h" +#include "Common/KeyboardShortcutManager.h" #include "CalcViewModel/Common/TraceLogger.h" #include "Controls/CalculatorButton.h" #include "CalcViewModel/StandardCalculatorViewModel.h" diff --git a/src/Calculator/Views/DateCalculator.xaml b/src/Calculator/Views/DateCalculator.xaml index 37e007d..43ae80a 100644 --- a/src/Calculator/Views/DateCalculator.xaml +++ b/src/Calculator/Views/DateCalculator.xaml @@ -403,7 +403,7 @@ Grid.Row="2" Visibility="{Binding IsDateDiffMode, Converter={StaticResource BooleanToVisibilityConverter}}"> - + diff --git a/src/Calculator/Views/MainPage.xaml.cpp b/src/Calculator/Views/MainPage.xaml.cpp index e9b29fe..c7ba04e 100644 --- a/src/Calculator/Views/MainPage.xaml.cpp +++ b/src/Calculator/Views/MainPage.xaml.cpp @@ -4,7 +4,6 @@ #include "pch.h" #include "MainPage.xaml.h" #include "CalcViewModel/Common/TraceLogger.h" -#include "CalcViewModel/Common/KeyboardShortcutManager.h" #include "CalcViewModel/Common/LocalizationService.h" #include "CalcViewModel/Common/Automation/NarratorNotifier.h" #include "CalcViewModel/Common/AppResourceProvider.h" @@ -12,6 +11,8 @@ #include "Converters/BooleanToVisibilityConverter.h" #include "CalcViewModel/Common/LocalizationStringUtil.h" #include "Common/AppLifecycleLogger.h" +#include "Common/KeyboardShortcutManager.h" + using namespace CalculatorApp; using namespace CalculatorApp::Common; using namespace CalculatorApp::Common::Automation; diff --git a/src/Calculator/Views/NumberPad.xaml.h b/src/Calculator/Views/NumberPad.xaml.h index 1dc10ce..806da99 100644 --- a/src/Calculator/Views/NumberPad.xaml.h +++ b/src/Calculator/Views/NumberPad.xaml.h @@ -9,7 +9,7 @@ #pragma once #include "Views/NumberPad.g.h" -#include "CalcViewModel/Common/KeyboardShortcutManager.h" +#include "Common/KeyboardShortcutManager.h" #include "CalcViewModel/Common/NumberBase.h" #include "CalcManager/Header Files/RadixType.h" diff --git a/src/Calculator/Views/UnitConverter.xaml.cpp b/src/Calculator/Views/UnitConverter.xaml.cpp index f1bafde..88ff8f3 100644 --- a/src/Calculator/Views/UnitConverter.xaml.cpp +++ b/src/Calculator/Views/UnitConverter.xaml.cpp @@ -11,9 +11,9 @@ #include "Controls/CalculationResult.h" #include "Controls/CalculatorButton.h" #include "CalcViewModel/Common/CopyPasteManager.h" -#include "CalcViewModel/Common/KeyboardShortcutManager.h" #include "CalcViewModel/Common/LocalizationService.h" #include "CalcViewModel/Common/LocalizationSettings.h" +#include "Common/KeyboardShortcutManager.h" using namespace std; using namespace CalculatorApp; diff --git a/src/Calculator/Views/UnitConverter.xaml.h b/src/Calculator/Views/UnitConverter.xaml.h index 5b460fa..16c669c 100644 --- a/src/Calculator/Views/UnitConverter.xaml.h +++ b/src/Calculator/Views/UnitConverter.xaml.h @@ -8,7 +8,7 @@ #include "Views/UnitConverter.g.h" #include "Common/AlwaysSelectedCollectionView.h" -#include "CalcViewModel/Common/ValidatingConverters.h" +#include "Common/ValidatingConverters.h" #include "Converters/BooleanToVisibilityConverter.h" #include "Converters/VisibilityNegationConverter.h" #include "CalcViewModel/UnitConverterViewModel.h" diff --git a/src/Calculator/WindowFrameService.cpp b/src/Calculator/WindowFrameService.cpp index 37ad911..5d39c5f 100644 --- a/src/Calculator/WindowFrameService.cpp +++ b/src/Calculator/WindowFrameService.cpp @@ -3,7 +3,7 @@ #include "pch.h" #include "WindowFrameService.h" -#include "CalcViewModel/Common/KeyboardShortcutManager.h" +#include "Common/KeyboardShortcutManager.h" #include "CalcViewModel/Common/TraceLogger.h" using namespace concurrency;