diff --git a/apps/sequence/list/list_controller.h b/apps/sequence/list/list_controller.h index f24c80849..3dd0e9029 100644 --- a/apps/sequence/list/list_controller.h +++ b/apps/sequence/list/list_controller.h @@ -24,11 +24,11 @@ public: Toolbox * toolboxForTextInput(TextInput * textInput) override; Toolbox * toolboxForExpressionLayoutField(ExpressionLayoutField * expressionLayoutField) override; void selectPreviousNewSequenceCell(); + void editExpression(Sequence * sequence, int sequenceDefinitionIndex, Ion::Events::Event event); private: Toolbox * toolboxForSender(Responder * sender); Shared::TextFieldDelegateApp * textFieldDelegateApp() override; Shared::ExpressionFieldDelegateApp * expressionFieldDelegateApp() override; - void editExpression(Sequence * sequence, int sequenceDefinitionIndex, Ion::Events::Event event); ListParameterController * parameterController() override; int maxNumberOfRows() override; HighlightCell * titleCells(int index) override; diff --git a/apps/sequence/list/type_parameter_controller.cpp b/apps/sequence/list/type_parameter_controller.cpp index fc9d1b4ec..fe2173425 100644 --- a/apps/sequence/list/type_parameter_controller.cpp +++ b/apps/sequence/list/type_parameter_controller.cpp @@ -85,6 +85,7 @@ bool TypeParameterController::handleEvent(Ion::Events::Event event) { Sequence * newSequence = static_cast(m_sequenceStore->addEmptyModel()); newSequence->setType((Sequence::Type)selectedRow()); app()->dismissModalViewController(); + m_listController->editExpression(newSequence, 0, Ion::Events::OK); return true; } if (event == Ion::Events::Left && m_sequence) { diff --git a/apps/shared/expression_model_list_controller.cpp b/apps/shared/expression_model_list_controller.cpp index acb438916..b720aca9e 100644 --- a/apps/shared/expression_model_list_controller.cpp +++ b/apps/shared/expression_model_list_controller.cpp @@ -95,8 +95,9 @@ bool ExpressionModelListController::handleEventOnExpression(Ion::Events::Event e } void ExpressionModelListController::addEmptyModel() { - modelStore()->addEmptyModel(); + ExpressionModel * e = modelStore()->addEmptyModel(); selectableTableView()->reloadData(); + editExpression(e, Ion::Events::OK); } void ExpressionModelListController::reinitExpression(ExpressionModel * model) { diff --git a/apps/solver/equation_models_parameter_controller.cpp b/apps/solver/equation_models_parameter_controller.cpp index 0e5e91454..943937583 100644 --- a/apps/solver/equation_models_parameter_controller.cpp +++ b/apps/solver/equation_models_parameter_controller.cpp @@ -1,4 +1,5 @@ #include "equation_models_parameter_controller.h" +#include "list_controller.h" #include #include #include "../i18n.h" @@ -9,12 +10,13 @@ namespace Solver { constexpr const char * EquationModelsParameterController::k_models[k_numberOfModels]; -EquationModelsParameterController::EquationModelsParameterController(Responder * parentResponder, EquationStore * equationStore) : +EquationModelsParameterController::EquationModelsParameterController(Responder * parentResponder, EquationStore * equationStore, ListController * listController) : ViewController(parentResponder), m_emptyModelCell(I18n::Message::Empty, KDText::FontSize::Large), m_expressionLayouts{}, m_selectableTableView(this), - m_equationStore(equationStore) + m_equationStore(equationStore), + m_listController(listController) { m_selectableTableView.setMargins(0); m_selectableTableView.setShowsIndicators(false); @@ -57,6 +59,7 @@ bool EquationModelsParameterController::handleEvent(Ion::Events::Event event) { Equation * newEquation = static_cast(m_equationStore->addEmptyModel()); newEquation->setContent(k_models[selectedRow()]); app()->dismissModalViewController(); + m_listController->editExpression(newEquation, Ion::Events::OK); return true; } return false; diff --git a/apps/solver/equation_models_parameter_controller.h b/apps/solver/equation_models_parameter_controller.h index 15640303e..ba8c1ed0c 100644 --- a/apps/solver/equation_models_parameter_controller.h +++ b/apps/solver/equation_models_parameter_controller.h @@ -6,10 +6,11 @@ namespace Solver { +class ListController; class EquationModelsParameterController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource { public: - EquationModelsParameterController(Responder * parentResponder, EquationStore * equationStore); + EquationModelsParameterController(Responder * parentResponder, EquationStore * equationStore, ListController * listController); ~EquationModelsParameterController(); EquationModelsParameterController(const EquationModelsParameterController& other) = delete; EquationModelsParameterController(EquationModelsParameterController&& other) = delete; @@ -39,6 +40,7 @@ private: Poincare::ExpressionLayout * m_expressionLayouts[k_numberOfExpressionCells]; SelectableTableView m_selectableTableView; EquationStore * m_equationStore; + ListController * m_listController; }; } diff --git a/apps/solver/list_controller.cpp b/apps/solver/list_controller.cpp index 67a63ca1b..3973d1fba 100644 --- a/apps/solver/list_controller.cpp +++ b/apps/solver/list_controller.cpp @@ -16,7 +16,7 @@ ListController::ListController(Responder * parentResponder, EquationStore * equa // TODO //stackController->push(list->solutionPage ??) }, this), KDText::FontSize::Small, Palette::PurpleBright), - m_modelsParameterController(this, equationStore), + m_modelsParameterController(this, equationStore, this), m_modelsStackController(nullptr, &m_modelsParameterController, KDColorWhite, Palette::PurpleDark, Palette::PurpleDark) { } diff --git a/apps/solver/list_controller.h b/apps/solver/list_controller.h index e2f645f26..436b69891 100644 --- a/apps/solver/list_controller.h +++ b/apps/solver/list_controller.h @@ -39,6 +39,7 @@ public: bool handleEvent(Ion::Events::Event event) override; void didBecomeFirstResponder() override; void didEnterResponderChain(Responder * previousFirstResponder) override; + void editExpression(Shared::ExpressionModel * model, Ion::Events::Event event) override { return Shared::ExpressionModelListController::editExpression(model, event); } /* Text/ExpressionLayout Field Delegate */ Shared::TextFieldDelegateApp * textFieldDelegateApp() override; Shared::ExpressionFieldDelegateApp * expressionFieldDelegateApp() override;