// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. #pragma once namespace CalculatorApp { namespace ViewModel { [Windows::UI::Xaml::Data::Bindable] public ref class HistoryItemViewModel sealed : Windows::UI::Xaml::Data::ICustomPropertyProvider { internal: HistoryItemViewModel(Platform::String^ expression, Platform::String^ result, _In_ std::shared_ptr>> const &spTokens, _In_ std::shared_ptr>> const &spCommands); std::shared_ptr>> const& GetTokens() { return m_spTokens; } std::shared_ptr>> const& GetCommands() { return m_spCommands; } public: property Platform::String^ Expression { Platform::String^ get() { return m_expression; } } property Platform::String^ AccExpression { Platform::String^ get() { return m_accExpression; } } property Platform::String^ Result { Platform::String^ get() { return m_result; } } property Platform::String^ AccResult { Platform::String^ get() { return m_accResult; } } virtual Windows::UI::Xaml::Data::ICustomProperty^ GetCustomProperty(Platform::String^ name) { return nullptr; } virtual Windows::UI::Xaml::Data::ICustomProperty^ GetIndexedProperty(Platform::String^ name, Windows::UI::Xaml::Interop::TypeName type) { return nullptr; } virtual property Windows::UI::Xaml::Interop::TypeName Type { Windows::UI::Xaml::Interop::TypeName get() { return this->GetType(); } } virtual Platform::String^ GetStringRepresentation() { return m_accExpression + " " + m_accResult; } private: static Platform::String^ GetAccessibleExpressionFromTokens( _In_ std::shared_ptr>> const &spTokens, _In_ Platform::String^ fallbackExpression); private: Platform::String^ m_expression; Platform::String^ m_accExpression; Platform::String^ m_accResult; Platform::String^ m_result; std::shared_ptr>> m_spTokens; std::shared_ptr>> m_spCommands; }; } }