[apps/calcul] Add calcul to the history from the text field

Change-Id: Ie3c00b9dbe27f7fb61cc3cb073aa9b0e2a846dd6
This commit is contained in:
Émilie Feral
2016-10-21 15:44:23 +01:00
parent 44232b2c24
commit c0c889fde2
6 changed files with 22 additions and 10 deletions

View File

@@ -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))
{
}

View File

@@ -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) {

View File

@@ -1,4 +1,5 @@
#include "edit_expression_controller.h"
#include "app.h"
#include <assert.h>
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:

View File

@@ -3,13 +3,14 @@
#include <escher.h>
#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;
};
}

View File

@@ -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();

View File

@@ -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;