mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[apps/calcul] Add calcul to the history from the text field
Change-Id: Ie3c00b9dbe27f7fb61cc3cb073aa9b0e2a846dd6
This commit is contained in:
@@ -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))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user