diff --git a/apps/calculation/additional_outputs/expressions_list_controller.cpp b/apps/calculation/additional_outputs/expressions_list_controller.cpp index b9cbef213..680fa75d9 100644 --- a/apps/calculation/additional_outputs/expressions_list_controller.cpp +++ b/apps/calculation/additional_outputs/expressions_list_controller.cpp @@ -59,4 +59,8 @@ Poincare::Layout ExpressionsListController::layoutAtIndex(int index) { return m_layouts[index]; } +int ExpressionsListController::textAtIndex(char * buffer, size_t bufferSize, int index) { + return m_layouts[index].serializeParsedExpression(buffer, bufferSize); +} + } diff --git a/apps/calculation/additional_outputs/expressions_list_controller.h b/apps/calculation/additional_outputs/expressions_list_controller.h index 78441a8b1..02b48eb17 100644 --- a/apps/calculation/additional_outputs/expressions_list_controller.h +++ b/apps/calculation/additional_outputs/expressions_list_controller.h @@ -32,6 +32,7 @@ protected: mutable Poincare::Layout m_layouts[k_maxNumberOfCells]; private: Poincare::Layout layoutAtIndex(int index); + virtual int textAtIndex(char * buffer, size_t bufferSize, int index) override; virtual void computeLayoutAtIndex(int index) = 0; virtual I18n::Message messageAtIndex(int index) = 0; // Cells diff --git a/apps/calculation/additional_outputs/illustrated_list_controller.cpp b/apps/calculation/additional_outputs/illustrated_list_controller.cpp index f73235344..645d1abe5 100644 --- a/apps/calculation/additional_outputs/illustrated_list_controller.cpp +++ b/apps/calculation/additional_outputs/illustrated_list_controller.cpp @@ -119,4 +119,8 @@ void IllustratedListController::setExpression(Poincare::Expression e) { context->setExpressionForSymbolAbstract(e, s); } +int IllustratedListController::textAtIndex(char * buffer, size_t bufferSize, int index) { + return strlcpy(buffer, m_calculationStore.calculationAtIndex(index-1)->exactOutputText(), bufferSize); +} + } diff --git a/apps/calculation/additional_outputs/illustrated_list_controller.h b/apps/calculation/additional_outputs/illustrated_list_controller.h index 80a2d2b5c..8d465daf6 100644 --- a/apps/calculation/additional_outputs/illustrated_list_controller.h +++ b/apps/calculation/additional_outputs/illustrated_list_controller.h @@ -36,6 +36,7 @@ protected: Poincare::Expression m_savedExpression; CalculationStore m_calculationStore; private: + int textAtIndex(char * buffer, size_t bufferSize, int index) override; virtual CodePoint expressionSymbol() const = 0; constexpr static int k_maxNumberOfAdditionalCalculations = 4; // Cells diff --git a/apps/calculation/additional_outputs/list_controller.cpp b/apps/calculation/additional_outputs/list_controller.cpp index 796893051..c709b9f2d 100644 --- a/apps/calculation/additional_outputs/list_controller.cpp +++ b/apps/calculation/additional_outputs/list_controller.cpp @@ -30,7 +30,9 @@ ListController::ListController(Responder * parentResponder, EditExpressionContro bool ListController::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::OK || event == Ion::Events::EXE) { - m_editExpressionController->insertTextBody("TODO"); + char buffer[Constant::MaxSerializedExpressionSize]; + textAtIndex(buffer, Constant::MaxSerializedExpressionSize, selectedRow()); + m_editExpressionController->insertTextBody(buffer); Container::activeApp()->dismissModalViewController(); Container::activeApp()->setFirstResponder(m_editExpressionController); return true; diff --git a/apps/calculation/additional_outputs/list_controller.h b/apps/calculation/additional_outputs/list_controller.h index 124d58161..86f24b227 100644 --- a/apps/calculation/additional_outputs/list_controller.h +++ b/apps/calculation/additional_outputs/list_controller.h @@ -30,6 +30,7 @@ protected: private: SelectableTableView m_selectableTableView; }; + virtual int textAtIndex(char * buffer, size_t bufferSize, int index) = 0; InnerListController m_listController; EditExpressionController * m_editExpressionController; };