Use stringstream (general format) to format graph settings min/max

This commit is contained in:
Matt Cooley 2021-11-15 10:31:12 -08:00
commit 7d0a4de391
2 changed files with 37 additions and 66 deletions

View file

@ -3,11 +3,9 @@
#include "pch.h" #include "pch.h"
#include "GraphingSettingsViewModel.h" #include "GraphingSettingsViewModel.h"
#include <CalcManager\NumberFormattingUtils.h>
using namespace CalculatorApp::ViewModel; using namespace CalculatorApp::ViewModel;
using namespace CalculatorApp::ViewModel::Common; using namespace CalculatorApp::ViewModel::Common;
using namespace CalcManager::NumberFormattingUtils;
using namespace GraphControl; using namespace GraphControl;
using namespace std; using namespace std;
using namespace Platform; using namespace Platform;
@ -55,21 +53,22 @@ void GraphingSettingsViewModel::InitRanges()
m_XMaxValue = xMax; m_XMaxValue = xMax;
m_YMinValue = yMin; m_YMinValue = yMin;
m_YMaxValue = yMax; m_YMaxValue = yMax;
auto valueStr = to_wstring(m_XMinValue);
TrimTrailingZeros(valueStr);
XMin = ref new String(valueStr.c_str());
valueStr = to_wstring(m_XMaxValue); std::wostringstream xMinStr;
TrimTrailingZeros(valueStr); xMinStr << m_XMinValue;
XMax = ref new String(valueStr.c_str()); XMin = ref new String(xMinStr.str().c_str());
valueStr = to_wstring(m_YMinValue); std::wostringstream xMaxStr;
TrimTrailingZeros(valueStr); xMaxStr << m_XMaxValue;
YMin = ref new String(valueStr.c_str()); XMax = ref new String(xMaxStr.str().c_str());
valueStr = to_wstring(m_YMaxValue); std::wostringstream yMinStr;
TrimTrailingZeros(valueStr); yMinStr << m_YMinValue;
YMax = ref new String(valueStr.c_str()); YMin = ref new String(yMinStr.str().c_str());
std::wostringstream yMaxStr;
yMaxStr << m_YMaxValue;
YMax = ref new String(yMaxStr.str().c_str());
m_dontUpdateDisplayRange = false; m_dontUpdateDisplayRange = false;
} }

View file

@ -51,11 +51,9 @@ namespace CalculatorApp::ViewModel
m_XIsMinLastChanged = true; m_XIsMinLastChanged = true;
if (m_Graph != nullptr) if (m_Graph != nullptr)
{ {
try std::wistringstream input(value->Data());
{ double number;
size_t sz; if (input >> number)
auto number = std::stod(value->Data(), &sz);
if (value->Length() == sz)
{ {
m_Graph->XAxisMin = m_XMinValue = number; m_Graph->XAxisMin = m_XMinValue = number;
XMinError = false; XMinError = false;
@ -65,11 +63,6 @@ namespace CalculatorApp::ViewModel
XMinError = true; XMinError = true;
} }
} }
catch (...)
{
XMinError = true;
}
}
RaisePropertyChanged("XError"); RaisePropertyChanged("XError");
RaisePropertyChanged("XMin"); RaisePropertyChanged("XMin");
UpdateDisplayRange(); UpdateDisplayRange();
@ -92,11 +85,9 @@ namespace CalculatorApp::ViewModel
m_XIsMinLastChanged = false; m_XIsMinLastChanged = false;
if (m_Graph != nullptr) if (m_Graph != nullptr)
{ {
try std::wistringstream input(value->Data());
{ double number;
size_t sz; if (input >> number)
auto number = std::stod(value->Data(), &sz);
if (value->Length() == sz)
{ {
m_Graph->XAxisMax = m_XMaxValue = number; m_Graph->XAxisMax = m_XMaxValue = number;
XMaxError = false; XMaxError = false;
@ -106,11 +97,6 @@ namespace CalculatorApp::ViewModel
XMaxError = true; XMaxError = true;
} }
} }
catch (...)
{
XMaxError = true;
}
}
RaisePropertyChanged("XError"); RaisePropertyChanged("XError");
RaisePropertyChanged("XMax"); RaisePropertyChanged("XMax");
UpdateDisplayRange(); UpdateDisplayRange();
@ -133,11 +119,9 @@ namespace CalculatorApp::ViewModel
m_YIsMinLastChanged = true; m_YIsMinLastChanged = true;
if (m_Graph != nullptr) if (m_Graph != nullptr)
{ {
try std::wistringstream input(value->Data());
{ double number;
size_t sz; if (input >> number)
auto number = std::stod(value->Data(), &sz);
if (value->Length() == sz)
{ {
m_Graph->YAxisMin = m_YMinValue = number; m_Graph->YAxisMin = m_YMinValue = number;
YMinError = false; YMinError = false;
@ -147,11 +131,6 @@ namespace CalculatorApp::ViewModel
YMinError = true; YMinError = true;
} }
} }
catch (...)
{
YMinError = true;
}
}
RaisePropertyChanged("YError"); RaisePropertyChanged("YError");
RaisePropertyChanged("YMin"); RaisePropertyChanged("YMin");
UpdateDisplayRange(); UpdateDisplayRange();
@ -174,11 +153,9 @@ namespace CalculatorApp::ViewModel
m_YIsMinLastChanged = false; m_YIsMinLastChanged = false;
if (m_Graph != nullptr) if (m_Graph != nullptr)
{ {
try std::wistringstream input(value->Data());
{ double number;
size_t sz; if (input >> number)
auto number = std::stod(value->Data(), &sz);
if (value->Length() == sz)
{ {
m_Graph->YAxisMax = m_YMaxValue = number; m_Graph->YAxisMax = m_YMaxValue = number;
YMaxError = false; YMaxError = false;
@ -188,11 +165,6 @@ namespace CalculatorApp::ViewModel
YMaxError = true; YMaxError = true;
} }
} }
catch (...)
{
YMaxError = true;
}
}
RaisePropertyChanged("YError"); RaisePropertyChanged("YError");
RaisePropertyChanged("YMax"); RaisePropertyChanged("YMax");
UpdateDisplayRange(); UpdateDisplayRange();