From 1d966ce23c8ea5b7bbbafe9a4958092db6927959 Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Fri, 26 Jul 2019 16:24:19 +0200 Subject: [PATCH] [apps/*/expression_model_list_controller] editExpression sets text instead of InputViewController::edit --- apps/sequence/list/list_controller.cpp | 13 ++++++------- apps/shared/expression_model_list_controller.cpp | 9 ++++----- escher/include/escher/input_view_controller.h | 2 +- escher/src/input_view_controller.cpp | 5 +---- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/apps/sequence/list/list_controller.cpp b/apps/sequence/list/list_controller.cpp index f09d9340a..d3a491475 100644 --- a/apps/sequence/list/list_controller.cpp +++ b/apps/sequence/list/list_controller.cpp @@ -87,9 +87,9 @@ void ListController::selectPreviousNewSequenceCell() { void ListController::editExpression(int sequenceDefinition, Ion::Events::Event event) { Ion::Storage::Record record = modelStore()->recordAtIndex(modelIndexForRow(selectedRow())); Sequence * sequence = modelStore()->modelForRecord(record); - char * initialText = nullptr; - char initialTextContent[TextField::maxBufferSize()]; + InputViewController * inputController = Shared::FunctionApp::app()->inputViewController(); if (event == Ion::Events::OK || event == Ion::Events::EXE) { + char initialTextContent[Constant::MaxSerializedExpressionSize]; switch (sequenceDefinition) { case 0: sequence->text(initialTextContent, sizeof(initialTextContent)); @@ -101,14 +101,13 @@ void ListController::editExpression(int sequenceDefinition, Ion::Events::Event e sequence->secondInitialConditionText(initialTextContent, sizeof(initialTextContent)); break; } - initialText = initialTextContent; + inputController->setTextBody(initialTextContent); } - InputViewController * inputController = Shared::FunctionApp::app()->inputViewController(); // Invalidate the sequences context cache App::app()->localContext()->resetCache(); switch (sequenceDefinition) { case 0: - inputController->edit(this, event, this, initialText, + inputController->edit(this, event, this, [](void * context, void * sender){ ListController * myController = static_cast(context); InputViewController * myInputViewController = (InputViewController *)sender; @@ -120,7 +119,7 @@ void ListController::editExpression(int sequenceDefinition, Ion::Events::Event e }); break; case 1: - inputController->edit(this, event, this, initialText, + inputController->edit(this, event, this, [](void * context, void * sender){ ListController * myController = static_cast(context); InputViewController * myInputViewController = (InputViewController *)sender; @@ -132,7 +131,7 @@ void ListController::editExpression(int sequenceDefinition, Ion::Events::Event e }); break; default: - inputController->edit(this, event, this, initialText, + inputController->edit(this, event, this, [](void * context, void * sender){ ListController * myController = static_cast(context); InputViewController * myInputViewController = (InputViewController *)sender; diff --git a/apps/shared/expression_model_list_controller.cpp b/apps/shared/expression_model_list_controller.cpp index 5536bbef5..bb160ec7a 100644 --- a/apps/shared/expression_model_list_controller.cpp +++ b/apps/shared/expression_model_list_controller.cpp @@ -223,16 +223,15 @@ void ExpressionModelListController::reinitSelectedExpression(ExpiringPointerrecordAtIndex(modelIndexForRow(selectedRow())); ExpiringPointer model = modelStore()->modelForRecord(record); + constexpr size_t initialTextContentMaxSize = Constant::MaxSerializedExpressionSize; + char initialTextContent[initialTextContentMaxSize]; model->text(initialTextContent, initialTextContentMaxSize); - initialText = initialTextContent; + inputController()->setTextBody(initialTextContent); } - inputController()->edit(this, event, this, initialText, + inputController()->edit(this, event, this, [](void * context, void * sender){ ExpressionModelListController * myController = static_cast(context); InputViewController * myInputViewController = (InputViewController *)sender; diff --git a/escher/include/escher/input_view_controller.h b/escher/include/escher/input_view_controller.h index 40a3fa259..2867c6959 100644 --- a/escher/include/escher/input_view_controller.h +++ b/escher/include/escher/input_view_controller.h @@ -22,7 +22,7 @@ public: void setTextBody(const char * text) { m_expressionFieldController.expressionField()->setText(text); } - void edit(Responder * caller, Ion::Events::Event event, void * context, const char * initialText, Invocation::Action successAction, Invocation::Action failureAction); + void edit(Responder * caller, Ion::Events::Event event, void * context, Invocation::Action successAction, Invocation::Action failureAction); bool isEditing(); void abortEditionAndDismiss(); diff --git a/escher/src/input_view_controller.cpp b/escher/src/input_view_controller.cpp index a9520b524..766ad58ae 100644 --- a/escher/src/input_view_controller.cpp +++ b/escher/src/input_view_controller.cpp @@ -25,13 +25,10 @@ InputViewController::InputViewController(Responder * parentResponder, ViewContro { } -void InputViewController::edit(Responder * caller, Ion::Events::Event event, void * context, const char * initialText, Invocation::Action successAction, Invocation::Action failureAction) { +void InputViewController::edit(Responder * caller, Ion::Events::Event event, void * context, Invocation::Action successAction, Invocation::Action failureAction) { m_successAction = Invocation(successAction, context); m_failureAction = Invocation(failureAction, context); displayModalViewController(&m_expressionFieldController, 1.0f, 1.0f); - if (initialText != nullptr) { - m_expressionFieldController.expressionField()->setText(initialText); - } m_expressionFieldController.expressionField()->handleEvent(event); }