Use only NumberBase to represent radix in CalcViewModel (#797)

This commit is contained in:
Rudy Huyn 2019-11-14 07:09:17 -08:00 committed by Matt Cooley
parent b9b0e068cd
commit 1380c7ed83
8 changed files with 46 additions and 54 deletions

View file

@ -79,7 +79,7 @@ StandardCalculatorViewModel::StandardCalculatorViewModel()
, m_valueBitLength(BitLength::BitLengthQWord)
, m_isBitFlipChecked(false)
, m_isBinaryBitFlippingEnabled(false)
, m_CurrentRadixType(RADIX_TYPE::DEC_RADIX)
, m_CurrentRadixType(NumberBase::DecBase)
, m_CurrentAngleType(NumbersAndOperatorsEnum::Degree)
, m_Announcement(nullptr)
, m_OpenParenthesisCount(0)
@ -168,7 +168,7 @@ String ^ StandardCalculatorViewModel::CalculateNarratorDisplayValue(_In_ wstring
}
// In Programmer modes using non-base10, we want the strings to be read as literal digits.
if (IsProgrammer && CurrentRadixType != RADIX_TYPE::DEC_RADIX)
if (IsProgrammer && CurrentRadixType != NumberBase::DecBase)
{
localizedValue = GetNarratorStringReadRawNumbers(localizedValue);
}
@ -681,23 +681,18 @@ void StandardCalculatorViewModel::OnButtonPressed(Object ^ parameter)
}
}
NumberBase StandardCalculatorViewModel::GetNumberBase()
RADIX_TYPE StandardCalculatorViewModel::GetRadixTypeFromNumberBase(NumberBase base)
{
if (CurrentRadixType == HEX_RADIX)
switch (base)
{
return NumberBase::HexBase;
}
else if (CurrentRadixType == DEC_RADIX)
{
return NumberBase::DecBase;
}
else if (CurrentRadixType == OCT_RADIX)
{
return NumberBase::OctBase;
}
else
{
return NumberBase::BinBase;
case NumberBase::BinBase:
return RADIX_TYPE::BIN_RADIX;
case NumberBase::HexBase:
return RADIX_TYPE::HEX_RADIX;
case NumberBase::OctBase:
return RADIX_TYPE::OCT_RADIX;
default:
return RADIX_TYPE::DEC_RADIX;
}
}
@ -713,8 +708,8 @@ void StandardCalculatorViewModel::OnPasteCommand(Object ^ parameter)
{
auto that(this);
ViewMode mode;
NumberBase numberBase = NumberBase::Unknown;
BitLength bitLengthType = BitLength::BitLengthUnknown;
NumberBase numberBase = NumberBase::Unknown;
if (IsScientific)
{
mode = ViewMode::Scientific;
@ -722,8 +717,8 @@ void StandardCalculatorViewModel::OnPasteCommand(Object ^ parameter)
else if (IsProgrammer)
{
mode = ViewMode::Programmer;
numberBase = GetNumberBase();
bitLengthType = m_valueBitLength;
numberBase = CurrentRadixType;
}
else
{
@ -1248,7 +1243,7 @@ String ^ StandardCalculatorViewModel::GetLocalizedStringFormat(String ^ format,
void StandardCalculatorViewModel::ResetDisplay()
{
AreHEXButtonsEnabled = false;
CurrentRadixType = (int)RADIX_TYPE::DEC_RADIX;
CurrentRadixType = NumberBase::DecBase;
m_standardCalculatorManager.SetRadix(DEC_RADIX);
}
@ -1257,16 +1252,16 @@ void StandardCalculatorViewModel::SetPrecision(int32_t precision)
m_standardCalculatorManager.SetPrecision(precision);
}
void StandardCalculatorViewModel::SwitchProgrammerModeBase(RADIX_TYPE radixType)
void StandardCalculatorViewModel::SwitchProgrammerModeBase(NumberBase numberBase)
{
if (IsInError)
{
m_standardCalculatorManager.SendCommand(Command::CommandCLEAR);
}
AreHEXButtonsEnabled = (radixType == RADIX_TYPE::HEX_RADIX);
CurrentRadixType = (int)radixType;
m_standardCalculatorManager.SetRadix(radixType);
AreHEXButtonsEnabled = numberBase == NumberBase::HexBase;
CurrentRadixType = numberBase;
m_standardCalculatorManager.SetRadix(GetRadixTypeFromNumberBase(numberBase));
}
void StandardCalculatorViewModel::SetMemorizedNumbersString()