mirror of
https://github.com/Microsoft/calculator.git
synced 2025-07-30 19:40:00 -07:00
GraphControl: refactoring and optimizations (#831)
* GraphControl cleaning * replace textbox value after submission * rebase * rebase * rebase * Add filters * rebase! * rebase
This commit is contained in:
parent
da38b5a015
commit
534139d67d
33 changed files with 1169 additions and 1393 deletions
|
@ -5,66 +5,10 @@
|
|||
|
||||
#include "../Common/Utils.h"
|
||||
#include "EquationViewModel.h"
|
||||
#include "VariableViewModel.h"
|
||||
|
||||
namespace CalculatorApp::ViewModel
|
||||
{
|
||||
public
|
||||
value struct VariableChangedEventArgs sealed
|
||||
{
|
||||
Platform::String ^ variableName;
|
||||
double newValue;
|
||||
};
|
||||
|
||||
[Windows::UI::Xaml::Data::Bindable] public ref class VariableViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged
|
||||
{
|
||||
public:
|
||||
VariableViewModel(Platform::String ^ name, double value)
|
||||
: m_Name(name)
|
||||
, m_Value(value)
|
||||
, m_SliderSettingsVisible(false)
|
||||
, m_Min(0.0)
|
||||
, m_Step(0.1)
|
||||
, m_Max(2.0)
|
||||
{
|
||||
}
|
||||
|
||||
OBSERVABLE_OBJECT_CALLBACK(OnPropertyChanged);
|
||||
|
||||
OBSERVABLE_PROPERTY_R(Platform::String ^, Name);
|
||||
|
||||
// TODO: Consider removing this work around and manually set the textbox text.
|
||||
OBSERVABLE_PROPERTY_RW_ALWAYS_NOTIFY(double, Value);
|
||||
OBSERVABLE_PROPERTY_RW_ALWAYS_NOTIFY(double, Min);
|
||||
OBSERVABLE_PROPERTY_RW_ALWAYS_NOTIFY(double, Step);
|
||||
OBSERVABLE_PROPERTY_RW_ALWAYS_NOTIFY(double, Max);
|
||||
OBSERVABLE_PROPERTY_RW(bool, SliderSettingsVisible);
|
||||
|
||||
event Windows::Foundation::EventHandler<VariableChangedEventArgs> ^ VariableUpdated;
|
||||
|
||||
void SetValue(double value)
|
||||
{
|
||||
if (value < Min)
|
||||
{
|
||||
value = Min;
|
||||
}
|
||||
else if (value > Max)
|
||||
{
|
||||
value = Max;
|
||||
}
|
||||
|
||||
Value = value;
|
||||
}
|
||||
|
||||
private:
|
||||
void OnPropertyChanged(Platform::String ^ propertyName)
|
||||
{
|
||||
if (propertyName == "Value")
|
||||
{
|
||||
VariableUpdated(this, VariableChangedEventArgs{ Name, Value });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
[Windows::UI::Xaml::Data::Bindable] public ref class GraphingCalculatorViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged
|
||||
{
|
||||
public:
|
||||
|
@ -74,6 +18,7 @@ public
|
|||
OBSERVABLE_PROPERTY_R(bool, IsDecimalEnabled);
|
||||
OBSERVABLE_PROPERTY_R(Windows::Foundation::Collections::IObservableVector<EquationViewModel ^> ^, Equations);
|
||||
OBSERVABLE_PROPERTY_R(Windows::Foundation::Collections::IObservableVector<VariableViewModel ^> ^, Variables);
|
||||
OBSERVABLE_PROPERTY_R(EquationViewModel ^, SelectedEquation);
|
||||
|
||||
COMMAND_FOR_METHOD(ButtonPressed, GraphingCalculatorViewModel::OnButtonPressed);
|
||||
|
||||
|
@ -81,6 +26,7 @@ public
|
|||
|
||||
void UpdateVariables(Windows::Foundation::Collections::IMap<Platform::String ^, double> ^ variables);
|
||||
|
||||
void SetSelectedEquation(EquationViewModel ^ equation);
|
||||
private:
|
||||
void OnButtonPressed(Platform::Object ^ parameter);
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue