100 lines
3.5 KiB
C++
100 lines
3.5 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
//
|
|
// NumberPad.xaml.cpp
|
|
// Implementation of the NumberPad class
|
|
//
|
|
|
|
#include "pch.h"
|
|
#include "NumberPad.xaml.h"
|
|
#include "Controls/CalculatorButton.h"
|
|
#include "CalcViewModel/StandardCalculatorViewModel.h"
|
|
#include "CalcViewModel/Common/LocalizationSettings.h"
|
|
|
|
using namespace CalculatorApp;
|
|
using namespace CalculatorApp::ViewModel;
|
|
|
|
using namespace Platform;
|
|
using namespace Windows::Foundation;
|
|
using namespace Windows::Foundation::Collections;
|
|
using namespace Windows::UI::Xaml;
|
|
using namespace Windows::UI::Xaml::Controls;
|
|
using namespace Windows::UI::Xaml::Controls::Primitives;
|
|
using namespace Windows::UI::Xaml::Data;
|
|
using namespace Windows::UI::Xaml::Input;
|
|
using namespace Windows::UI::Xaml::Media;
|
|
using namespace Windows::UI::Xaml::Navigation;
|
|
using namespace CalculatorApp::Common;
|
|
|
|
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
|
|
|
|
DEPENDENCY_PROPERTY_INITIALIZATION(NumberPad, ButtonStyle);
|
|
DEPENDENCY_PROPERTY_INITIALIZATION(NumberPad, CurrentRadixType);
|
|
|
|
NumberPad::NumberPad()
|
|
: m_isErrorVisualState(false)
|
|
{
|
|
InitializeComponent();
|
|
|
|
const auto& localizationSettings = LocalizationSettings::GetInstance();
|
|
|
|
this->DecimalSeparatorButton->Content = localizationSettings.GetDecimalSeparator();
|
|
this->Num0Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('0');
|
|
this->Num1Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('1');
|
|
this->Num2Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('2');
|
|
this->Num3Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('3');
|
|
this->Num4Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('4');
|
|
this->Num5Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('5');
|
|
this->Num6Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('6');
|
|
this->Num7Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('7');
|
|
this->Num8Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('8');
|
|
this->Num9Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('9');
|
|
}
|
|
|
|
void NumberPad::OnCurrentRadixTypePropertyChanged(NumberBase /* oldValue */, NumberBase newValue)
|
|
{
|
|
Num0Button->IsEnabled = true;
|
|
Num1Button->IsEnabled = true;
|
|
Num2Button->IsEnabled = true;
|
|
Num3Button->IsEnabled = true;
|
|
Num4Button->IsEnabled = true;
|
|
Num5Button->IsEnabled = true;
|
|
Num6Button->IsEnabled = true;
|
|
Num7Button->IsEnabled = true;
|
|
Num8Button->IsEnabled = true;
|
|
Num9Button->IsEnabled = true;
|
|
|
|
if (newValue == NumberBase::BinBase)
|
|
{
|
|
Num2Button->IsEnabled = false;
|
|
Num3Button->IsEnabled = false;
|
|
Num4Button->IsEnabled = false;
|
|
Num5Button->IsEnabled = false;
|
|
Num6Button->IsEnabled = false;
|
|
Num7Button->IsEnabled = false;
|
|
Num8Button->IsEnabled = false;
|
|
Num9Button->IsEnabled = false;
|
|
}
|
|
else if (newValue == NumberBase::OctBase)
|
|
{
|
|
Num8Button->IsEnabled = false;
|
|
Num9Button->IsEnabled = false;
|
|
}
|
|
}
|
|
|
|
bool NumberPad::IsErrorVisualState::get()
|
|
{
|
|
return m_isErrorVisualState;
|
|
}
|
|
|
|
void NumberPad::IsErrorVisualState::set(bool value)
|
|
{
|
|
if (m_isErrorVisualState != value)
|
|
{
|
|
m_isErrorVisualState = value;
|
|
String ^ newState = m_isErrorVisualState ? L"ErrorLayout" : L"NoErrorLayout";
|
|
VisualStateManager::GoToState(this, newState, false);
|
|
}
|
|
}
|