Use only NumberBase to represent radix in CalcViewModel (#797)
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -40,7 +40,6 @@ namespace CalculatorApp
|
||||
StandardCalculatorViewModel();
|
||||
void UpdateOperand(int pos, Platform::String ^ text);
|
||||
void UpdatecommandsInRecordingMode();
|
||||
CalculatorApp::Common::NumberBase GetNumberBase();
|
||||
|
||||
OBSERVABLE_OBJECT_CALLBACK(OnPropertyChanged);
|
||||
OBSERVABLE_PROPERTY_RW(Platform::String ^, DisplayValue);
|
||||
@@ -71,7 +70,7 @@ namespace CalculatorApp
|
||||
OBSERVABLE_PROPERTY_RW(Platform::String ^, CalculationResultAutomationName);
|
||||
OBSERVABLE_PROPERTY_RW(Platform::String ^, CalculationExpressionAutomationName);
|
||||
OBSERVABLE_PROPERTY_RW(bool, IsShiftProgrammerChecked);
|
||||
OBSERVABLE_PROPERTY_RW(int, CurrentRadixType);
|
||||
OBSERVABLE_PROPERTY_RW(CalculatorApp::Common::NumberBase, CurrentRadixType);
|
||||
OBSERVABLE_PROPERTY_RW(bool, AreTokensUpdated);
|
||||
OBSERVABLE_PROPERTY_RW(bool, AreAlwaysOnTopResultsUpdated);
|
||||
OBSERVABLE_PROPERTY_RW(bool, AreHistoryShortcutsEnabled);
|
||||
@@ -358,14 +357,11 @@ namespace CalculatorApp
|
||||
void Recalculate(bool fromHistory = false);
|
||||
bool IsOperator(CalculationManager::Command cmdenum);
|
||||
void FtoEButtonToggled();
|
||||
void SwitchProgrammerModeBase(RADIX_TYPE calculatorBase);
|
||||
void SwitchProgrammerModeBase(CalculatorApp::Common::NumberBase calculatorBase);
|
||||
void SetMemorizedNumbersString();
|
||||
void SwitchAngleType(NumbersAndOperatorsEnum num);
|
||||
void ResetDisplay();
|
||||
RADIX_TYPE GetCurrentRadixType()
|
||||
{
|
||||
return (RADIX_TYPE)m_CurrentRadixType;
|
||||
}
|
||||
|
||||
void SetPrecision(int32_t precision);
|
||||
void UpdateMaxIntDigits()
|
||||
{
|
||||
@@ -389,6 +385,7 @@ namespace CalculatorApp
|
||||
_Inout_ std::shared_ptr<std::vector<std::shared_ptr<IExpressionCommand>>> const& commands);
|
||||
void SetTokens(_Inout_ std::shared_ptr<std::vector<std::pair<std::wstring, int>>> const& tokens);
|
||||
NumbersAndOperatorsEnum ConvertIntegerToNumbersAndOperatorsEnum(unsigned int parameter);
|
||||
static RADIX_TYPE GetRadixTypeFromNumberBase(CalculatorApp::Common::NumberBase base);
|
||||
NumbersAndOperatorsEnum m_CurrentAngleType;
|
||||
wchar_t m_decimalSeparator;
|
||||
CalculatorDisplay m_calculatorDisplay;
|
||||
|
||||
Reference in New Issue
Block a user