From c0c889fde25459b2d60f18558e64dea9cb56fc91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 21 Oct 2016 15:44:23 +0100 Subject: [PATCH] [apps/calcul] Add calcul to the history from the text field Change-Id: Ie3c00b9dbe27f7fb61cc3cb073aa9b0e2a846dd6 --- apps/calcul/app.cpp | 2 +- apps/calcul/calcul.cpp | 7 ++----- apps/calcul/edit_expression_controller.cpp | 13 +++++++++++-- apps/calcul/edit_expression_controller.h | 4 +++- apps/calcul/history_controller.cpp | 4 ++++ apps/calcul/history_controller.h | 2 +- 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/apps/calcul/app.cpp b/apps/calcul/app.cpp index 4fa08f175..d3035034c 100644 --- a/apps/calcul/app.cpp +++ b/apps/calcul/app.cpp @@ -8,7 +8,7 @@ App::App(Context * context) : m_globalContext(context), m_calculStore(CalculStore()), m_historyController(HistoryController(&m_editExpressionController, &m_calculStore)), - m_editExpressionController(EditExpressionController(this, &m_historyController)) + m_editExpressionController(EditExpressionController(this, &m_historyController, &m_calculStore)) { } diff --git a/apps/calcul/calcul.cpp b/apps/calcul/calcul.cpp index 47f5c24bc..666429b00 100644 --- a/apps/calcul/calcul.cpp +++ b/apps/calcul/calcul.cpp @@ -4,14 +4,11 @@ namespace Calcul { Calcul::Calcul() : - m_text("1+3"), + m_text(""), m_expression(nullptr), m_layout(nullptr), - m_evaluation(Float(3.0f)) + m_evaluation(Float(0.0f)) { - // TODO: this is temporary. To test the render. - m_expression = Expression::parse(m_text); - m_layout = expression()->createLayout(); } void Calcul::setContent(const char * c, Context * context) { diff --git a/apps/calcul/edit_expression_controller.cpp b/apps/calcul/edit_expression_controller.cpp index 97e17badb..31aee1aca 100644 --- a/apps/calcul/edit_expression_controller.cpp +++ b/apps/calcul/edit_expression_controller.cpp @@ -1,4 +1,5 @@ #include "edit_expression_controller.h" +#include "app.h" #include namespace Calcul { @@ -38,10 +39,11 @@ TextField * EditExpressionController::ContentView::textField() { return &m_textField; } -EditExpressionController::EditExpressionController(Responder * parentResponder, HistoryController * historyController) : +EditExpressionController::EditExpressionController(Responder * parentResponder, HistoryController * historyController, CalculStore * calculStore) : ViewController(parentResponder), m_contentView(historyController->view()), - m_historyController(historyController) + m_historyController(historyController), + m_calculStore(calculStore) { m_contentView.textField()->setParentResponder(this); } @@ -65,7 +67,14 @@ void EditExpressionController::setTextBody(const char * text) { bool EditExpressionController::handleEvent(Ion::Events::Event event) { switch (event) { case Ion::Events::Event::ENTER: + { + Calcul * calcul = m_calculStore->addEmptyCalcul(); + App * calculApp = (App *)app(); + calcul->setContent(textBody(), calculApp->globalContext()); + m_historyController->reload(); + m_contentView.textField()->setTextBuffer(""); return true; + } case Ion::Events::Event::ESC: return true; case Ion::Events::Event::UP_ARROW: diff --git a/apps/calcul/edit_expression_controller.h b/apps/calcul/edit_expression_controller.h index 6df9cf08a..c1bac4ab1 100644 --- a/apps/calcul/edit_expression_controller.h +++ b/apps/calcul/edit_expression_controller.h @@ -3,13 +3,14 @@ #include #include "history_controller.h" +#include "calcul_store.h" namespace Calcul { class HistoryController; class EditExpressionController : public ViewController { public: - EditExpressionController(Responder * parentResponder, HistoryController * historyController); + EditExpressionController(Responder * parentResponder, HistoryController * historyController, CalculStore * calculStore); View * view() override; const char * title() const override; void didBecomeFirstResponder() override; @@ -33,6 +34,7 @@ private: void setTextBody(const char * text); ContentView m_contentView; HistoryController * m_historyController; + CalculStore * m_calculStore; }; } diff --git a/apps/calcul/history_controller.cpp b/apps/calcul/history_controller.cpp index 2971259ad..dab9e9eba 100644 --- a/apps/calcul/history_controller.cpp +++ b/apps/calcul/history_controller.cpp @@ -20,6 +20,10 @@ const char * HistoryController::title() const { return "Calcul Table"; } +void HistoryController::reload() { + m_listView.reloadData(); +} + void HistoryController::didBecomeFirstResponder() { setActiveCell(numberOfRows()-1); m_listView.reloadData(); diff --git a/apps/calcul/history_controller.h b/apps/calcul/history_controller.h index 4d9d14ad5..81ce04185 100644 --- a/apps/calcul/history_controller.h +++ b/apps/calcul/history_controller.h @@ -19,7 +19,7 @@ public: bool handleEvent(Ion::Events::Event event) override; void setFunction(Function * function); void didBecomeFirstResponder() override; - + void reload(); void setActiveCell(int index); int numberOfRows() override; KDCoordinate cellHeight() override;