[escher] InputTextDelegate and LayoutFieldDelegate don't inherit from

InputTextDelegate to avoid diamond inheritance
This commit is contained in:
Émilie Feral
2018-10-22 18:14:30 +02:00
parent 0a438b1803
commit 698332c355
138 changed files with 285 additions and 268 deletions

View File

@@ -47,7 +47,7 @@ void App::Snapshot::tidy() {
App::App(Container * container, Snapshot * snapshot) :
ExpressionFieldDelegateApp(container, snapshot, &m_editExpressionController),
m_historyController(&m_editExpressionController, snapshot->calculationStore()),
m_editExpressionController(&m_modalViewController, &m_historyController, snapshot->calculationStore())
m_editExpressionController(&m_modalViewController, this, &m_historyController, snapshot->calculationStore())
{
}

View File

@@ -10,10 +10,10 @@ using namespace Poincare;
namespace Calculation {
EditExpressionController::ContentView::ContentView(Responder * parentResponder, TableView * subview, TextFieldDelegate * textFieldDelegate, LayoutFieldDelegate * layoutFieldDelegate) :
EditExpressionController::ContentView::ContentView(Responder * parentResponder, TableView * subview, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * textFieldDelegate, LayoutFieldDelegate * layoutFieldDelegate) :
View(),
m_mainView(subview),
m_expressionField(parentResponder, m_textBody, k_bufferLength, textFieldDelegate, layoutFieldDelegate)
m_expressionField(parentResponder, m_textBody, k_bufferLength, inputEventHandlerDelegate, textFieldDelegate, layoutFieldDelegate)
{
m_textBody[0] = 0;
}
@@ -40,11 +40,11 @@ void EditExpressionController::ContentView::reload() {
markRectAsDirty(bounds());
}
EditExpressionController::EditExpressionController(Responder * parentResponder, HistoryController * historyController, CalculationStore * calculationStore) :
EditExpressionController::EditExpressionController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, HistoryController * historyController, CalculationStore * calculationStore) :
ViewController(parentResponder),
m_historyController(historyController),
m_calculationStore(calculationStore),
m_contentView(this, (TableView *)m_historyController->view(), this, this),
m_contentView(this, (TableView *)m_historyController->view(), inputEventHandlerDelegate, this, this),
m_inputViewHeightIsMaximal(false)
{
m_cacheBuffer[0] = 0;

View File

@@ -15,7 +15,7 @@ class HistoryController;
/* TODO: implement a split view */
class EditExpressionController : public ViewController, public Shared::TextFieldDelegate, public Shared::LayoutFieldDelegate {
public:
EditExpressionController(Responder * parentResponder, HistoryController * historyController, CalculationStore * calculationStore);
EditExpressionController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, HistoryController * historyController, CalculationStore * calculationStore);
View * view() override;
void didBecomeFirstResponder() override;
void viewDidDisappear() override;
@@ -36,7 +36,7 @@ public:
private:
class ContentView : public View {
public:
ContentView(Responder * parentResponder, TableView * subview, TextFieldDelegate * textFieldDelegate, LayoutFieldDelegate * layoutFieldDelegate);
ContentView(Responder * parentResponder, TableView * subview, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * textFieldDelegate, LayoutFieldDelegate * layoutFieldDelegate);
void reload();
TableView * mainView() { return m_mainView; }
ExpressionField * expressionField() { return &m_expressionField; }

View File

@@ -76,7 +76,7 @@ void App::Snapshot::setOpt(const char * name, char * value) {
#endif
App::App(Container * container, Snapshot * snapshot) :
::App(container, snapshot, &m_codeStackViewController, I18n::Message::Warning),
Shared::InputEventHandlerDelegateApp(container, snapshot, &m_codeStackViewController),
m_pythonHeap{},
m_pythonUser(nullptr),
m_consoleController(nullptr, this, snapshot->scriptStore()
@@ -109,6 +109,10 @@ bool App::handleEvent(Ion::Events::Event event) {
return false;
}
Toolbox * App::toolboxForInputEventHandler(InputEventHandler * textInput) {
return &m_toolbox;
}
bool App::textInputDidReceiveEvent(InputEventHandler * textInput, Ion::Events::Event event) {
const char * pythonText = Helpers::PythonTextForEvent(event);
if (pythonText != nullptr) {

View File

@@ -3,6 +3,7 @@
#include <escher.h>
#include <ion/events.h>
#include "../shared/input_event_handler_delegate_app.h"
#include "console_controller.h"
#include "menu_controller.h"
#include "script_store.h"
@@ -11,9 +12,9 @@
namespace Code {
class App : public ::App {
class App : public Shared::InputEventHandlerDelegateApp {
public:
class Descriptor : public ::App::Descriptor {
class Descriptor : public Shared::InputEventHandlerDelegateApp::Descriptor {
public:
I18n::Message name() override;
I18n::Message upperName() override;
@@ -39,8 +40,13 @@ public:
~App();
StackViewController * stackViewController() { return &m_codeStackViewController; }
ConsoleController * consoleController() { return &m_consoleController; }
PythonToolbox * pythonToolbox() { return &m_toolbox; }
/* Responder */
bool handleEvent(Ion::Events::Event event) override;
/* InputEventHandlerDelegate */
Toolbox * toolboxForInputEventHandler(InputEventHandler * textInput) override;
bool textInputDidReceiveEvent(InputEventHandler * textInput, Ion::Events::Event event);
// Python delegate
bool pythonIsInited() { return m_pythonUser != nullptr; }

View File

@@ -28,7 +28,7 @@ ConsoleController::ConsoleController(Responder * parentResponder, App * pythonDe
m_rowHeight(k_font->glyphSize().height()),
m_importScriptsWhenViewAppears(false),
m_selectableTableView(this, this, this, this),
m_editCell(this, this),
m_editCell(this, pythonDelegate, this),
m_scriptStore(scriptStore),
m_sandboxController(this),
m_inputRunLoopActive(false)
@@ -291,11 +291,6 @@ bool ConsoleController::textFieldDidAbortEditing(TextField * textField) {
return true;
}
Toolbox * ConsoleController::toolboxForInputEventHandler(InputEventHandler * textInput) {
Code::App * codeApp = static_cast<Code::App *>(app());
return codeApp->pythonToolbox();
}
void ConsoleController::displaySandbox() {
if (m_sandboxIsDisplayed) {
return;

View File

@@ -60,7 +60,6 @@ public:
bool textFieldDidReceiveEvent(TextField * textField, Ion::Events::Event event) override;
bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) override;
bool textFieldDidAbortEditing(TextField * textField) override;
Toolbox * toolboxForInputEventHandler(InputEventHandler * textInput) override;
// MicroPython::ExecutionEnvironment
void displaySandbox() override;

View File

@@ -6,12 +6,12 @@
namespace Code {
ConsoleEditCell::ConsoleEditCell(Responder * parentResponder, TextFieldDelegate * delegate) :
ConsoleEditCell::ConsoleEditCell(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * delegate) :
HighlightCell(),
Responder(parentResponder),
m_textBuffer{0},
m_promptView(ConsoleController::k_font, nullptr, 0, 0.5),
m_textField(this, m_textBuffer, m_textBuffer, TextField::maxBufferSize(), delegate, false, ConsoleController::k_font)
m_textField(this, m_textBuffer, m_textBuffer, TextField::maxBufferSize(), inputEventHandlerDelegate, delegate, false, ConsoleController::k_font)
{
}

View File

@@ -11,7 +11,7 @@ namespace Code {
class ConsoleEditCell : public HighlightCell, public Responder {
public:
ConsoleEditCell(Responder * parentResponder = nullptr, TextFieldDelegate * delegate = nullptr);
ConsoleEditCell(Responder * parentResponder = nullptr, InputEventHandlerDelegate * inputEventHandlerDelegate = nullptr, TextFieldDelegate * delegate = nullptr);
// View
int numberOfSubviews() const override;

View File

@@ -14,7 +14,7 @@ EditorController::EditorController(MenuController * menuController, App * python
m_script(Ion::Storage::Record()),
m_menuController(menuController)
{
m_editorView.setTextAreaDelegate(this);
m_editorView.setTextAreaDelegates(pythonDelegate, this);
}
void EditorController::setScript(Script script) {
@@ -127,11 +127,6 @@ bool EditorController::textAreaDidReceiveEvent(TextArea * textArea, Ion::Events:
return false;
}
Toolbox * EditorController::toolboxForInputEventHandler(InputEventHandler * textInput) {
Code::App * codeApp = static_cast<Code::App *>(app());
return codeApp->pythonToolbox();
}
StackViewController * EditorController::stackController() {
return static_cast<StackViewController *>(parentResponder());
}

View File

@@ -25,7 +25,6 @@ public:
/* TextAreaDelegate */
bool textAreaDidReceiveEvent(TextArea * textArea, Ion::Events::Event event) override;
Toolbox * toolboxForInputEventHandler(InputEventHandler * textInput) override;
private:
static constexpr int k_indentationSpacesNumber = 2;

View File

@@ -1,7 +1,7 @@
#ifndef CODE_EDITOR_VIEW_H
#define CODE_EDITOR_VIEW_H
#include <escher/view.h>
#include <escher.h>
#include "python_text_area.h"
namespace Code {
@@ -9,8 +9,8 @@ namespace Code {
class EditorView : public Responder, public View, public ScrollViewDelegate {
public:
EditorView(Responder * parentResponder, App * pythonDelegate);
void setTextAreaDelegate(TextAreaDelegate * delegate) {
m_textArea.setDelegate(delegate);
void setTextAreaDelegates(InputEventHandlerDelegate * inputEventHandlerDelegate, TextAreaDelegate * delegate) {
m_textArea.setDelegates(inputEventHandlerDelegate, delegate);
}
const char * text() const { return m_textArea.text(); }
void setText(char * textBuffer, size_t textBufferSize) {

View File

@@ -30,7 +30,7 @@ MenuController::MenuController(Responder * parentResponder, App * pythonDelegate
m_addNewScriptCell.setMessage(I18n::Message::AddScript);
for (int i = 0; i < k_maxNumberOfDisplayableScriptCells; i++) {
m_scriptCells[i].setParentResponder(&m_selectableTableView);
m_scriptCells[i].textField()->setDelegate(this);
m_scriptCells[i].textField()->setDelegates(nullptr, this);
}
}

View File

@@ -54,7 +54,6 @@ public:
bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) override;
bool textFieldDidAbortEditing(TextField * textField) override;
bool textFieldDidHandleEvent(TextField * textField, bool returnValue, bool textHasChanged) override;
Toolbox * toolboxForInputEventHandler(InputEventHandler * textInput) override { return nullptr; }
/* ButtonRowDelegate */
int numberOfButtons(ButtonRowController::Position position) const override { return 1; }

View File

@@ -15,7 +15,7 @@ public:
ScriptNameCell(Responder * parentResponder = nullptr, TextFieldDelegate * delegate = nullptr) :
EvenOddCell(),
Responder(parentResponder),
m_textField(k_extensionLength, this, m_textBody, m_textBody, TextField::maxBufferSize(), delegate, false)
m_textField(k_extensionLength, this, m_textBody, m_textBody, TextField::maxBufferSize(), nullptr, delegate, false)
{}
Shared::TextFieldWithExtension * textField() { return &m_textField; }

View File

@@ -61,16 +61,16 @@ App::App(Container * container, Snapshot * snapshot) :
m_listFooter(&m_listHeader, &m_listController, &m_listController, ButtonRowController::Position::Bottom, ButtonRowController::Style::EmbossedGrey),
m_listHeader(&m_listStackViewController, &m_listFooter, &m_listController),
m_listStackViewController(&m_tabViewController, &m_listHeader),
m_graphController(&m_graphAlternateEmptyViewController, snapshot->functionStore(), snapshot->graphRange(), snapshot->cursor(), snapshot->indexFunctionSelectedByCursor(), snapshot->modelVersion(), snapshot->rangeVersion(), snapshot->angleUnitVersion(), &m_graphHeader),
m_graphController(&m_graphAlternateEmptyViewController, this, snapshot->functionStore(), snapshot->graphRange(), snapshot->cursor(), snapshot->indexFunctionSelectedByCursor(), snapshot->modelVersion(), snapshot->rangeVersion(), snapshot->angleUnitVersion(), &m_graphHeader),
m_graphAlternateEmptyViewController(&m_graphHeader, &m_graphController, &m_graphController),
m_graphHeader(&m_graphStackViewController, &m_graphAlternateEmptyViewController, &m_graphController),
m_graphStackViewController(&m_tabViewController, &m_graphHeader),
m_valuesController(&m_valuesAlternateEmptyViewController, snapshot->interval(), &m_valuesHeader),
m_valuesController(&m_valuesAlternateEmptyViewController, this, snapshot->interval(), &m_valuesHeader),
m_valuesAlternateEmptyViewController(&m_valuesHeader, &m_valuesController, &m_valuesController),
m_valuesHeader(&m_valuesStackViewController, &m_valuesAlternateEmptyViewController, &m_valuesController),
m_valuesStackViewController(&m_tabViewController, &m_valuesHeader),
m_tabViewController(&m_inputViewController, snapshot, &m_listStackViewController, &m_graphStackViewController, &m_valuesStackViewController),
m_inputViewController(&m_modalViewController, &m_tabViewController, this, this)
m_inputViewController(&m_modalViewController, &m_tabViewController, this, this, this)
{
}

View File

@@ -7,12 +7,12 @@ using namespace Shared;
namespace Graph {
CalculationParameterController::CalculationParameterController(Responder * parentResponder, GraphView * graphView, BannerView * bannerView, InteractiveCurveViewRange * range, CurveViewCursor * cursor) :
CalculationParameterController::CalculationParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, GraphView * graphView, BannerView * bannerView, InteractiveCurveViewRange * range, CurveViewCursor * cursor) :
ViewController(parentResponder),
m_selectableTableView(this),
m_record(),
m_tangentGraphController(nullptr, graphView, bannerView, range, cursor),
m_integralGraphController(nullptr, graphView, range, cursor),
m_integralGraphController(nullptr, inputEventHandlerDelegate, graphView, range, cursor),
m_minimumGraphController(nullptr, graphView, bannerView, range, cursor),
m_maximumGraphController(nullptr, graphView, bannerView, range, cursor),
m_rootGraphController(nullptr, graphView, bannerView, range, cursor),

View File

@@ -16,7 +16,7 @@ namespace Graph {
class CalculationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public:
CalculationParameterController(Responder * parentResponder, GraphView * graphView, BannerView * bannerView, Shared::InteractiveCurveViewRange * range, Shared::CurveViewCursor * cursor);
CalculationParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, GraphView * graphView, BannerView * bannerView, Shared::InteractiveCurveViewRange * range, Shared::CurveViewCursor * cursor);
View * view() override;
const char * title() override;
bool handleEvent(Ion::Events::Event event) override;

View File

@@ -7,13 +7,13 @@ using namespace Shared;
namespace Graph {
CurveParameterController::CurveParameterController(InteractiveCurveViewRange * graphRange, BannerView * bannerView, CurveViewCursor * cursor, GraphView * graphView, GraphController * graphController) :
CurveParameterController::CurveParameterController(InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, BannerView * bannerView, CurveViewCursor * cursor, GraphView * graphView, GraphController * graphController) :
StorageFunctionCurveParameterController(graphRange, cursor),
m_goToParameterController(this, graphRange, cursor, I18n::Message::X),
m_goToParameterController(this, inputEventHandlerDelegate, graphRange, cursor, I18n::Message::X),
m_graphController(graphController),
m_calculationCell(I18n::Message::Compute),
m_derivativeCell(I18n::Message::DerivateNumber),
m_calculationParameterController(this, graphView, bannerView, graphRange, cursor)
m_calculationParameterController(this, inputEventHandlerDelegate, graphView, bannerView, graphRange, cursor)
{
}

View File

@@ -11,7 +11,7 @@ class GraphController;
class CurveParameterController : public Shared::StorageFunctionCurveParameterController {
public:
CurveParameterController(Shared::InteractiveCurveViewRange * graphRange, BannerView * bannerView, Shared::CurveViewCursor * cursor, GraphView * graphView, GraphController * graphController);
CurveParameterController(InputEventHandlerDelegate * inputEventHandlerDelegate, Shared::InteractiveCurveViewRange * graphRange, BannerView * bannerView, Shared::CurveViewCursor * cursor, GraphView * graphView, GraphController * graphController);
const char * title() override;
bool handleEvent(Ion::Events::Event event) override;
int numberOfRows() override;

View File

@@ -5,12 +5,12 @@ using namespace Shared;
namespace Graph {
GraphController::GraphController(Responder * parentResponder, StorageCartesianFunctionStore * functionStore, Shared::InteractiveCurveViewRange * curveViewRange, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header) :
StorageFunctionGraphController(parentResponder, header, curveViewRange, &m_view, cursor, indexFunctionSelectedByCursor, modelVersion, rangeVersion, angleUnitVersion),
GraphController::GraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, StorageCartesianFunctionStore * functionStore, Shared::InteractiveCurveViewRange * curveViewRange, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header) :
StorageFunctionGraphController(parentResponder, inputEventHandlerDelegate, header, curveViewRange, &m_view, cursor, indexFunctionSelectedByCursor, modelVersion, rangeVersion, angleUnitVersion),
m_bannerView(),
m_view(functionStore, curveViewRange, m_cursor, &m_bannerView, &m_cursorView),
m_graphRange(curveViewRange),
m_curveParameterController(curveViewRange, &m_bannerView, m_cursor, &m_view, this),
m_curveParameterController(inputEventHandlerDelegate, curveViewRange, &m_bannerView, m_cursor, &m_view, this),
m_displayDerivativeInBanner(false)
{
m_graphRange->setDelegate(this);

View File

@@ -15,7 +15,7 @@ namespace Graph {
class GraphController : public Shared::StorageFunctionGraphController, public GraphControllerHelper {
public:
GraphController(Responder * parentResponder, StorageCartesianFunctionStore * functionStore, Shared::InteractiveCurveViewRange * curveViewRange, Shared::CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header);
GraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, StorageCartesianFunctionStore * functionStore, Shared::InteractiveCurveViewRange * curveViewRange, Shared::CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header);
I18n::Message emptyMessage() override;
void viewWillAppear() override;
bool displayDerivativeInBanner() const;

View File

@@ -12,8 +12,8 @@ using namespace Poincare;
namespace Graph {
IntegralGraphController::IntegralGraphController(Responder * parentResponder, GraphView * graphView, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor) :
StorageSumGraphController(parentResponder, graphView, graphRange, cursor, Ion::Charset::Integral)
IntegralGraphController::IntegralGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, GraphView * graphView, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor) :
StorageSumGraphController(parentResponder, inputEventHandlerDelegate, graphView, graphRange, cursor, Ion::Charset::Integral)
{
}

View File

@@ -9,7 +9,7 @@ namespace Graph {
class IntegralGraphController : public Shared::StorageSumGraphController {
public:
IntegralGraphController(Responder * parentResponder, GraphView * graphView, Shared::InteractiveCurveViewRange * graphRange, Shared::CurveViewCursor * cursor);
IntegralGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, GraphView * graphView, Shared::InteractiveCurveViewRange * graphRange, Shared::CurveViewCursor * cursor);
const char * title() override;
private:
I18n::Message legendMessageAtStep(Step step) override;

View File

@@ -7,7 +7,7 @@ namespace Graph {
TextFieldFunctionTitleCell::TextFieldFunctionTitleCell(StorageListController * listController, Orientation orientation, const KDFont * font) :
Shared::FunctionTitleCell(orientation),
Responder(listController),
m_textField(Shared::StorageFunction::k_parenthesedArgumentLength, this, m_textFieldBuffer, m_textFieldBuffer, k_textFieldBufferSize, listController, false, font, 0.5f, 0.5f)
m_textField(Shared::StorageFunction::k_parenthesedArgumentLength, this, m_textFieldBuffer, m_textFieldBuffer, k_textFieldBufferSize, nullptr, listController, false, font, 0.5f, 0.5f)
{}
void TextFieldFunctionTitleCell::setHighlighted(bool highlight) {

View File

@@ -7,12 +7,12 @@ using namespace Poincare;
namespace Graph {
StorageValuesController::StorageValuesController(Responder * parentResponder, Interval * interval, ButtonRowController * header) :
Shared::StorageValuesController(parentResponder, header, I18n::Message::X, &m_intervalParameterController, interval),
StorageValuesController::StorageValuesController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Interval * interval, ButtonRowController * header) :
Shared::StorageValuesController(parentResponder, inputEventHandlerDelegate, header, I18n::Message::X, &m_intervalParameterController, interval),
m_functionTitleCells{},
m_floatCells{},
m_functionParameterController(this),
m_intervalParameterController(this, m_interval),
m_intervalParameterController(this, inputEventHandlerDelegate, m_interval),
m_derivativeParameterController(this)
{
for (int i = 0; i < k_maxNumberOfFunctions; i++) {

View File

@@ -12,7 +12,7 @@ namespace Graph {
class StorageValuesController : public Shared::StorageValuesController {
public:
StorageValuesController(Responder * parentResponder, Shared::Interval * interval, ButtonRowController * header);
StorageValuesController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Shared::Interval * interval, ButtonRowController * header);
bool handleEvent(Ion::Events::Event event) override;
void willDisplayCellAtLocation(HighlightCell * cell, int i, int j) override;
I18n::Message emptyMessage() override;

View File

@@ -69,8 +69,8 @@ App::Snapshot::Page App::Snapshot::activePage() {
App::App(Container * container, Snapshot * snapshot) :
TextFieldDelegateApp(container, snapshot, &m_stackViewController),
m_calculationController(&m_stackViewController, snapshot->law(), snapshot->calculation()),
m_parametersController(&m_stackViewController, snapshot->law(), &m_calculationController),
m_calculationController(&m_stackViewController, this, snapshot->law(), snapshot->calculation()),
m_parametersController(&m_stackViewController, this, snapshot->law(), &m_calculationController),
m_lawController(&m_stackViewController, snapshot->law(), &m_parametersController),
m_stackViewController(&m_modalViewController, &m_lawController)
{

View File

@@ -5,9 +5,9 @@
namespace Probability {
CalculationCell::CalculationCell(Responder * parentResponder, char * draftTextBuffer, TextFieldDelegate * textFieldDelegate) :
CalculationCell::CalculationCell(Responder * parentResponder, char * draftTextBuffer, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * textFieldDelegate) :
m_text(KDFont::LargeFont, I18n::Message::Default, 0.5f, 0.5f),
m_calculation(parentResponder, textFieldDelegate, draftTextBuffer),
m_calculation(parentResponder, inputEventHandlerDelegate, textFieldDelegate, draftTextBuffer),
m_isResponder(true)
{
}

View File

@@ -7,7 +7,7 @@ namespace Probability {
class CalculationCell : public HighlightCell {
public:
CalculationCell(Responder * parentResponder = nullptr, char * draftTextBuffer = nullptr, TextFieldDelegate * textFieldDelegate = nullptr);
CalculationCell(Responder * parentResponder = nullptr, char * draftTextBuffer = nullptr, InputEventHandlerDelegate * inputEventHandlerDelegate = nullptr, TextFieldDelegate * textFieldDelegate = nullptr);
Responder * responder() override;
void setResponder(bool shouldbeResponder);
void setHighlighted(bool highlight) override;

View File

@@ -53,7 +53,7 @@ void CalculationController::ContentView::layoutSubviews() {
m_lawCurveView.setFrame(KDRect(0, titleHeight+calculationHeight, bounds().width(), bounds().height() - calculationHeight - titleHeight));
}
CalculationController::CalculationController(Responder * parentResponder, Law * law, Calculation * calculation) :
CalculationController::CalculationController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Law * law, Calculation * calculation) :
ViewController(parentResponder),
m_contentView(&m_selectableTableView, law, calculation),
m_selectableTableView(this),
@@ -72,7 +72,7 @@ CalculationController::CalculationController(Responder * parentResponder, Law *
for (int i = 0; i < k_numberOfCalculationCells; i++) {
m_calculationCells[i].editableTextCell()->setParentResponder(&m_selectableTableView);
m_calculationCells[i].editableTextCell()->textField()->setDelegate(this);
m_calculationCells[i].editableTextCell()->textField()->setDelegates(inputEventHandlerDelegate, this);
m_calculationCells[i].editableTextCell()->textField()->setDraftTextBuffer(m_draftTextBuffer);
}
}

View File

@@ -13,7 +13,7 @@ namespace Probability {
class CalculationController : public ViewController, public TableViewDataSource, public SelectableTableViewDataSource, public Shared::ParameterTextFieldDelegate {
public:
CalculationController(Responder * parentResponder, Law * law, Calculation * calculation);
CalculationController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Law * law, Calculation * calculation);
/* Responder */
void didEnterResponderChain(Responder * previousResponder) override;
void didBecomeFirstResponder() override;

View File

@@ -67,7 +67,7 @@ void ParametersController::ContentView::layoutSubviews() {
/* Parameters Controller */
ParametersController::ParametersController(Responder * parentResponder, Law * law, CalculationController * calculationController) :
ParametersController::ParametersController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Law * law, CalculationController * calculationController) :
FloatParameterController(parentResponder),
m_contentView(this, &m_selectableTableView),
m_menuListCell{},
@@ -78,7 +78,7 @@ ParametersController::ParametersController(Responder * parentResponder, Law * la
m_okButton.setMessage(I18n::Message::Next);
for (int i = 0; i < k_maxNumberOfCells; i++) {
m_menuListCell[i].setParentResponder(&m_selectableTableView);
m_menuListCell[i].textField()->setDelegate(this);
m_menuListCell[i].textField()->setDelegates(inputEventHandlerDelegate, this);
m_menuListCell[i].textField()->setDraftTextBuffer(m_draftTextBuffer);
}
}

View File

@@ -10,7 +10,7 @@ namespace Probability {
class ParametersController : public Shared::FloatParameterController {
public:
ParametersController(Responder * parentResponder, Law * m_law, CalculationController * calculationController);
ParametersController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Law * m_law, CalculationController * calculationController);
const char * title() override;
View * view() override { return &m_contentView; }
bool handleEvent(Ion::Events::Event event) override;

View File

@@ -55,11 +55,11 @@ App::App(Container * container, Snapshot * snapshot) :
m_calculationController(&m_calculationAlternateEmptyViewController, &m_calculationHeader, snapshot->store()),
m_calculationAlternateEmptyViewController(&m_calculationHeader, &m_calculationController, &m_calculationController),
m_calculationHeader(&m_tabViewController, &m_calculationAlternateEmptyViewController, &m_calculationController),
m_graphController(&m_graphAlternateEmptyViewController, &m_graphHeader, snapshot->store(), snapshot->cursor(), snapshot->modelVersion(), snapshot->rangeVersion(), snapshot->graphSelectedDotIndex(), snapshot->selectedSeriesIndex()),
m_graphController(&m_graphAlternateEmptyViewController, this, &m_graphHeader, snapshot->store(), snapshot->cursor(), snapshot->modelVersion(), snapshot->rangeVersion(), snapshot->graphSelectedDotIndex(), snapshot->selectedSeriesIndex()),
m_graphAlternateEmptyViewController(&m_graphHeader, &m_graphController, &m_graphController),
m_graphHeader(&m_graphStackViewController, &m_graphAlternateEmptyViewController, &m_graphController),
m_graphStackViewController(&m_tabViewController, &m_graphHeader),
m_storeController(&m_storeHeader, snapshot->store(), &m_storeHeader),
m_storeController(&m_storeHeader, this, snapshot->store(), &m_storeHeader),
m_storeHeader(&m_storeStackViewController, &m_storeController, &m_storeController),
m_storeStackViewController(&m_tabViewController, &m_storeHeader),
m_tabViewController(&m_modalViewController, snapshot, &m_storeStackViewController, &m_graphStackViewController, &m_calculationHeader),

View File

@@ -10,8 +10,8 @@ using namespace Poincare;
namespace Regression {
GoToParameterController::GoToParameterController(Responder * parentResponder, Store * store, CurveViewCursor * cursor, GraphController * graphController) :
Shared::GoToParameterController(parentResponder, store, cursor, I18n::Message::X),
GoToParameterController::GoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Store * store, CurveViewCursor * cursor, GraphController * graphController) :
Shared::GoToParameterController(parentResponder, inputEventHandlerDelegate, store, cursor, I18n::Message::X),
m_store(store),
m_xPrediction(true),
m_graphController(graphController)

View File

@@ -11,7 +11,7 @@ class GraphController;
class GoToParameterController : public Shared::GoToParameterController {
public:
GoToParameterController(Responder * parentResponder, Store * store, Shared::CurveViewCursor * cursor, GraphController * graphController);
GoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Store * store, Shared::CurveViewCursor * cursor, GraphController * graphController);
void setXPrediction(bool xPrediction);
const char * title() override;
void willDisplayCellForIndex(HighlightCell * cell, int index) override;

View File

@@ -13,15 +13,15 @@ static inline int maxInt(int x, int y) { return (x>y ? x : y); }
namespace Regression {
GraphController::GraphController(Responder * parentResponder, ButtonRowController * header, Store * store, CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion, int * selectedDotIndex, int * selectedSeriesIndex) :
InteractiveCurveViewController(parentResponder, header, store, &m_view, cursor, modelVersion, rangeVersion),
GraphController::GraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, Store * store, CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion, int * selectedDotIndex, int * selectedSeriesIndex) :
InteractiveCurveViewController(parentResponder, inputEventHandlerDelegate, header, store, &m_view, cursor, modelVersion, rangeVersion),
m_crossCursorView(),
m_roundCursorView(),
m_bannerView(),
m_view(store, m_cursor, &m_bannerView, &m_crossCursorView, this),
m_store(store),
m_initialisationParameterController(this, m_store),
m_graphOptionsController(this, m_store, m_cursor, this),
m_graphOptionsController(this, inputEventHandlerDelegate, m_store, m_cursor, this),
m_selectedDotIndex(selectedDotIndex),
m_selectedSeriesIndex(selectedSeriesIndex)
{

View File

@@ -17,7 +17,7 @@ namespace Regression {
class GraphController : public Shared::InteractiveCurveViewController {
public:
GraphController(Responder * parentResponder, ButtonRowController * header, Store * store, Shared::CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion, int * selectedDotIndex, int * selectedSeriesIndex);
GraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, Store * store, Shared::CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion, int * selectedDotIndex, int * selectedSeriesIndex);
ViewController * initialisationParameterController() override;
bool isEmpty() const override;
I18n::Message emptyMessage() override;

View File

@@ -9,11 +9,11 @@ using namespace Shared;
namespace Regression {
GraphOptionsController::GraphOptionsController(Responder * parentResponder, Store * store, CurveViewCursor * cursor, GraphController * graphController) :
GraphOptionsController::GraphOptionsController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Store * store, CurveViewCursor * cursor, GraphController * graphController) :
ViewController(parentResponder),
m_changeRegressionCell(I18n::Message::Regression),
m_selectableTableView(this),
m_goToParameterController(this, store, cursor, graphController),
m_goToParameterController(this, inputEventHandlerDelegate, store, cursor, graphController),
m_store(store),
m_graphController(graphController)
{

View File

@@ -12,7 +12,7 @@ class GraphController;
class GraphOptionsController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource {
public:
GraphOptionsController(Responder * parentResponder, Store * store, Shared::CurveViewCursor * cursor, GraphController * graphController);
GraphOptionsController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Store * store, Shared::CurveViewCursor * cursor, GraphController * graphController);
View * view() override;
const char * title() override;
bool handleEvent(Ion::Events::Event event) override;

View File

@@ -10,8 +10,8 @@ using namespace Shared;
namespace Regression {
StoreController::StoreController(Responder * parentResponder, Store * store, ButtonRowController * header) :
Shared::StoreController(parentResponder, store, header),
StoreController::StoreController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Store * store, ButtonRowController * header) :
Shared::StoreController(parentResponder, inputEventHandlerDelegate, store, header),
m_titleCells{},
m_regressionContext(store),
m_storeParameterController(this, store, this)

View File

@@ -12,7 +12,7 @@ namespace Regression {
class StoreController : public Shared::StoreController {
public:
StoreController(Responder * parentResponder, Store * store, ButtonRowController * header);
StoreController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Store * store, ButtonRowController * header);
Shared::StoreContext * storeContext() override;
void setFormulaLabel() override;
bool fillColumnWithFormula(Poincare::Expression formula) override;

View File

@@ -58,20 +58,20 @@ void App::Snapshot::tidy() {
App::App(Container * container, Snapshot * snapshot) :
FunctionApp(container, snapshot, &m_inputViewController),
m_sequenceContext(((AppsContainer *)container)->globalContext(), snapshot->sequenceStore()),
m_listController(&m_listFooter, snapshot->sequenceStore(), &m_listHeader, &m_listFooter),
m_listController(&m_listFooter, this, snapshot->sequenceStore(), &m_listHeader, &m_listFooter),
m_listFooter(&m_listHeader, &m_listController, &m_listController, ButtonRowController::Position::Bottom, ButtonRowController::Style::EmbossedGrey),
m_listHeader(nullptr, &m_listFooter, &m_listController),
m_listStackViewController(&m_tabViewController, &m_listHeader),
m_graphController(&m_graphAlternateEmptyViewController, snapshot->sequenceStore(), snapshot->graphRange(), snapshot->cursor(), snapshot->indexFunctionSelectedByCursor(), snapshot->modelVersion(), snapshot->rangeVersion(), snapshot->angleUnitVersion(), &m_graphHeader),
m_graphController(&m_graphAlternateEmptyViewController, this, snapshot->sequenceStore(), snapshot->graphRange(), snapshot->cursor(), snapshot->indexFunctionSelectedByCursor(), snapshot->modelVersion(), snapshot->rangeVersion(), snapshot->angleUnitVersion(), &m_graphHeader),
m_graphAlternateEmptyViewController(&m_graphHeader, &m_graphController, &m_graphController),
m_graphHeader(&m_graphStackViewController, &m_graphAlternateEmptyViewController, &m_graphController),
m_graphStackViewController(&m_tabViewController, &m_graphHeader),
m_valuesController(&m_valuesAlternateEmptyViewController, snapshot->sequenceStore(), snapshot->interval(), &m_valuesHeader),
m_valuesController(&m_valuesAlternateEmptyViewController, this, snapshot->sequenceStore(), snapshot->interval(), &m_valuesHeader),
m_valuesAlternateEmptyViewController(&m_valuesHeader, &m_valuesController, &m_valuesController),
m_valuesHeader(nullptr, &m_valuesAlternateEmptyViewController, &m_valuesController),
m_valuesStackViewController(&m_tabViewController, &m_valuesHeader),
m_tabViewController(&m_inputViewController, snapshot, &m_listStackViewController, &m_graphStackViewController, &m_valuesStackViewController),
m_inputViewController(&m_modalViewController, &m_tabViewController, &m_listController, &m_listController)
m_inputViewController(&m_modalViewController, &m_tabViewController, &m_listController, &m_listController, &m_listController)
{
}

View File

@@ -6,9 +6,9 @@ using namespace Shared;
namespace Sequence {
CurveParameterController::CurveParameterController(GraphController * graphController, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor) :
CurveParameterController::CurveParameterController(InputEventHandlerDelegate * inputEventHandlerDelegate, GraphController * graphController, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor) :
FunctionCurveParameterController(graphRange, cursor),
m_goToParameterController(this, graphRange, cursor, I18n::Message::N),
m_goToParameterController(this, inputEventHandlerDelegate, graphRange, cursor, I18n::Message::N),
m_sumCell(I18n::Message::TermSum),
m_graphController(graphController)
{

View File

@@ -11,7 +11,7 @@ class GraphController;
class CurveParameterController : public Shared::FunctionCurveParameterController {
public:
CurveParameterController(GraphController * graphController, Shared::InteractiveCurveViewRange * graphRange, Shared::CurveViewCursor * cursor);
CurveParameterController(InputEventHandlerDelegate * inputEventHandlerDelegate, GraphController * graphController, Shared::InteractiveCurveViewRange * graphRange, Shared::CurveViewCursor * cursor);
const char * title() override;
bool handleEvent(Ion::Events::Event event) override;
int numberOfRows() override;

View File

@@ -6,13 +6,13 @@ using namespace Poincare;
namespace Sequence {
GraphController::GraphController(Responder * parentResponder, SequenceStore * sequenceStore, CurveViewRange * graphRange, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header) :
FunctionGraphController(parentResponder, header, graphRange, &m_view, cursor, indexFunctionSelectedByCursor, modelVersion, rangeVersion, angleUnitVersion),
GraphController::GraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, SequenceStore * sequenceStore, CurveViewRange * graphRange, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header) :
FunctionGraphController(parentResponder, inputEventHandlerDelegate, header, graphRange, &m_view, cursor, indexFunctionSelectedByCursor, modelVersion, rangeVersion, angleUnitVersion),
m_bannerView(),
m_view(sequenceStore, graphRange, m_cursor, &m_bannerView, &m_cursorView),
m_graphRange(graphRange),
m_curveParameterController(this, graphRange, m_cursor),
m_termSumController(this, &m_view, graphRange, m_cursor),
m_curveParameterController(inputEventHandlerDelegate, this, graphRange, m_cursor),
m_termSumController(this, inputEventHandlerDelegate, &m_view, graphRange, m_cursor),
m_sequenceStore(sequenceStore)
{
m_graphRange->setDelegate(this);

View File

@@ -14,7 +14,7 @@ namespace Sequence {
class GraphController : public Shared::FunctionGraphController {
public:
GraphController(Responder * parentResponder, SequenceStore * sequenceStore, CurveViewRange * graphRange, Shared::CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header);
GraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, SequenceStore * sequenceStore, CurveViewRange * graphRange, Shared::CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion, ButtonRowController * header);
I18n::Message emptyMessage() override;
TermSumController * termSumController();
private:

View File

@@ -17,8 +17,8 @@ using namespace Poincare;
namespace Sequence {
TermSumController::TermSumController(Responder * parentResponder, GraphView * graphView, CurveViewRange * graphRange, CurveViewCursor * cursor) :
SumGraphController(parentResponder, graphView, graphRange, cursor, Ion::Charset::CapitalSigma)
TermSumController::TermSumController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, GraphView * graphView, CurveViewRange * graphRange, CurveViewCursor * cursor) :
SumGraphController(parentResponder, inputEventHandlerDelegate, graphView, graphRange, cursor, Ion::Charset::CapitalSigma)
{
}

View File

@@ -11,7 +11,7 @@ namespace Sequence {
class TermSumController : public Shared::SumGraphController {
public:
TermSumController(Responder * parentResponder, GraphView * graphView, CurveViewRange * graphRange, Shared::CurveViewCursor * cursor);
TermSumController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, GraphView * graphView, CurveViewRange * graphRange, Shared::CurveViewCursor * cursor);
const char * title() override;
private:
bool moveCursorHorizontallyToPosition(double position) override;

View File

@@ -9,12 +9,12 @@ using namespace Poincare;
namespace Sequence {
ListController::ListController(Responder * parentResponder, SequenceStore * sequenceStore, ButtonRowController * header, ButtonRowController * footer) :
ListController::ListController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, SequenceStore * sequenceStore, ButtonRowController * header, ButtonRowController * footer) :
Shared::FunctionListController(parentResponder, sequenceStore, header, footer, I18n::Message::AddSequence),
m_sequenceStore(sequenceStore),
m_sequenceTitleCells{},
m_expressionCells{},
m_parameterController(this, sequenceStore),
m_parameterController(inputEventHandlerDelegate, this, sequenceStore),
m_typeParameterController(this, sequenceStore, this, TableCell::Layout::Vertical),
m_typeStackController(nullptr, &m_typeParameterController, KDColorWhite, Palette::PurpleDark, Palette::PurpleDark),
m_sequenceToolbox()

View File

@@ -14,9 +14,9 @@
namespace Sequence {
class ListController : public Shared::FunctionListController, public Shared::TextFieldDelegate, public Shared::LayoutFieldDelegate {
class ListController : public Shared::FunctionListController, public InputEventHandlerDelegate, public Shared::TextFieldDelegate, public Shared::LayoutFieldDelegate {
public:
ListController(Responder * parentResponder, SequenceStore * sequenceStore, ButtonRowController * header, ButtonRowController * footer);
ListController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, SequenceStore * sequenceStore, ButtonRowController * header, ButtonRowController * footer);
const char * title() override;
int numberOfExpressionRows() override;
KDCoordinate expressionRowHeight(int j) override;

View File

@@ -9,10 +9,10 @@ using namespace Shared;
namespace Sequence {
ListParameterController::ListParameterController(ListController * listController, SequenceStore * sequenceStore) :
ListParameterController::ListParameterController(InputEventHandlerDelegate * inputEventHandlerDelegate, ListController * listController, SequenceStore * sequenceStore) :
Shared::ListParameterController(listController, sequenceStore, I18n::Message::SequenceColor, I18n::Message::DeleteSequence, this),
m_typeCell(I18n::Message::SequenceType),
m_initialRankCell(&m_selectableTableView, this, m_draftTextBuffer, I18n::Message::FirstTermIndex),
m_initialRankCell(&m_selectableTableView, inputEventHandlerDelegate, this, m_draftTextBuffer, I18n::Message::FirstTermIndex),
m_typeParameterController(this, sequenceStore, listController, TableCell::Layout::Horizontal, Metric::CommonTopMargin, Metric::CommonRightMargin,
Metric::CommonBottomMargin, Metric::CommonLeftMargin),
m_sequence(nullptr)

View File

@@ -13,7 +13,7 @@ class ListController;
class ListParameterController : public Shared::ListParameterController, public SelectableTableViewDelegate, public Shared::ParameterTextFieldDelegate {
public:
ListParameterController(ListController * list, SequenceStore * sequenceStore);
ListParameterController(InputEventHandlerDelegate * inputEventHandlerDelegate, ListController * list, SequenceStore * sequenceStore);
const char * title() override;
bool handleEvent(Ion::Events::Event event) override;
void setFunction(Shared::Function * function) override;

View File

@@ -5,8 +5,8 @@ using namespace Shared;
namespace Sequence {
IntervalParameterController::IntervalParameterController(Responder * parentResponder, Interval * interval) :
Shared::IntervalParameterController(parentResponder, interval)
IntervalParameterController::IntervalParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Interval * interval) :
Shared::IntervalParameterController(parentResponder, inputEventHandlerDelegate, interval)
{
}

View File

@@ -7,7 +7,7 @@ namespace Sequence {
class IntervalParameterController : public Shared::IntervalParameterController {
public:
IntervalParameterController(Responder * parentResponder, Shared::Interval * interval);
IntervalParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Shared::Interval * interval);
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
bool setParameterAtIndex(int parameterIndex, double f) override;
};

View File

@@ -6,15 +6,15 @@ using namespace Shared;
namespace Sequence {
ValuesController::ValuesController(Responder * parentResponder, SequenceStore * sequenceStore, Interval * interval, ButtonRowController * header) :
Shared::ValuesController(parentResponder, header, I18n::Message::NColumn, &m_intervalParameterController, interval),
ValuesController::ValuesController(Responder * parentResponder,InputEventHandlerDelegate * inputEventHandlerDelegate, SequenceStore * sequenceStore, Interval * interval, ButtonRowController * header) :
Shared::ValuesController(parentResponder, inputEventHandlerDelegate, header, I18n::Message::NColumn, &m_intervalParameterController, interval),
m_sequenceTitleCells{},
m_floatCells{},
m_sequenceStore(sequenceStore),
#if COPY_COLUMN
m_sequenceParameterController('n'),
#endif
m_intervalParameterController(this, m_interval)
m_intervalParameterController(this, inputEventHandlerDelegate, m_interval)
{
for (int i = 0; i < k_maxNumberOfSequences; i++) {
m_sequenceTitleCells[i].setOrientation(FunctionTitleCell::Orientation::HorizontalIndicator);

View File

@@ -10,7 +10,7 @@ namespace Sequence {
class ValuesController : public Shared::ValuesController {
public:
ValuesController(Responder * parentResponder, SequenceStore * sequenceStore, Shared::Interval * interval, ButtonRowController * header);
ValuesController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, SequenceStore * sequenceStore, Shared::Interval * interval, ButtonRowController * header);
void willDisplayCellAtLocation(HighlightCell * cell, int i, int j) override;
I18n::Message emptyMessage() override;
IntervalParameterController * intervalParameterController() override;

View File

@@ -27,7 +27,7 @@ App::Descriptor * App::Snapshot::descriptor() {
App::App(Container * container, Snapshot * snapshot) :
Shared::TextFieldDelegateApp(container, snapshot, &m_stackViewController),
m_mainController(&m_stackViewController),
m_mainController(&m_stackViewController, this),
m_stackViewController(&m_modalViewController, &m_mainController)
{
}

View File

@@ -38,7 +38,7 @@ const SettingsMessageTree model = SettingsMessageTree(I18n::Message::SettingsApp
const SettingsMessageTree model = SettingsMessageTree(I18n::Message::SettingsApp, menu, 8);
#endif
MainController::MainController(Responder * parentResponder) :
MainController::MainController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate) :
ViewController(parentResponder),
#ifdef EPSILON_BOOT_PROMPT
m_popUpCell(I18n::Message::Default, KDFont::LargeFont),
@@ -47,7 +47,7 @@ MainController::MainController(Responder * parentResponder) :
m_selectableTableView(this),
m_messageTreeModel((MessageTree *)&model),
m_preferencesController(this),
m_displayModeController(this),
m_displayModeController(this, inputEventHandlerDelegate),
m_languageController(this, 13),
m_examModeController(this),
m_aboutController(this)

View File

@@ -13,7 +13,7 @@ namespace Settings {
class MainController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource {
public:
MainController(Responder * parentResponder);
MainController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate);
View * view() override;
bool handleEvent(Ion::Events::Event event) override;
void didBecomeFirstResponder() override;

View File

@@ -10,9 +10,9 @@ using namespace Shared;
namespace Settings {
DisplayModeController::DisplayModeController(Responder * parentResponder) :
DisplayModeController::DisplayModeController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate) :
PreferencesController(parentResponder),
m_editableCell(&m_selectableTableView, this, m_draftTextBuffer)
m_editableCell(&m_selectableTableView, inputEventHandlerDelegate, this, m_draftTextBuffer)
{
m_editableCell.messageTableCellWithEditableText()->setMessage(I18n::Message::SignificantFigures);
m_editableCell.messageTableCellWithEditableText()->setMessageFont(KDFont::LargeFont);

View File

@@ -9,7 +9,7 @@ namespace Settings {
class DisplayModeController : public PreferencesController, public Shared::ParameterTextFieldDelegate {
public:
DisplayModeController(Responder * parentResponder);
DisplayModeController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate);
KDCoordinate rowHeight(int j) override;
KDCoordinate cumulatedHeightFromIndex(int j) override;
int indexFromCumulatedHeight(KDCoordinate offsetY) override;

View File

@@ -2,9 +2,9 @@
namespace Settings {
MessageTableCellWithEditableTextWithSeparator::MessageTableCellWithEditableTextWithSeparator(Responder * parentResponder, TextFieldDelegate * textFieldDelegate, char * draftTextBuffer, I18n::Message message) :
MessageTableCellWithEditableTextWithSeparator::MessageTableCellWithEditableTextWithSeparator(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * textFieldDelegate, char * draftTextBuffer, I18n::Message message) :
HighlightCell(),
m_cell(parentResponder, textFieldDelegate, draftTextBuffer, message)
m_cell(parentResponder, inputEventHandlerDelegate, textFieldDelegate, draftTextBuffer, message)
{
}

View File

@@ -7,7 +7,7 @@ namespace Settings {
class MessageTableCellWithEditableTextWithSeparator : public HighlightCell {
public:
MessageTableCellWithEditableTextWithSeparator(Responder * parentResponder = nullptr, TextFieldDelegate * textFieldDelegate = nullptr, char * draftTextBuffer = nullptr, I18n::Message message = (I18n::Message)0);
MessageTableCellWithEditableTextWithSeparator(Responder * parentResponder = nullptr, InputEventHandlerDelegate * inputEventHandlerDelegate = nullptr, TextFieldDelegate * textFieldDelegate = nullptr, char * draftTextBuffer = nullptr, I18n::Message message = (I18n::Message)0);
void drawRect(KDContext * ctx, KDRect rect) const override;
void setHighlighted(bool highlight) override;
void reloadCell() override { m_cell.reloadCell(); }

View File

@@ -30,6 +30,7 @@ app_objs += $(addprefix apps/shared/,\
hideable_even_odd_cell.o\
hideable_even_odd_editable_text_cell.o\
initialisation_parameter_controller.o\
input_event_handler_delegate_app.o\
interactive_curve_view_controller.o\
interactive_curve_view_range.o\
interactive_curve_view_range_delegate.o\

View File

@@ -3,11 +3,11 @@
namespace Shared {
BufferTextViewWithTextField::BufferTextViewWithTextField(Responder * parentResponder, TextFieldDelegate * delegate, const KDFont * font) :
BufferTextViewWithTextField::BufferTextViewWithTextField(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * delegate, const KDFont * font) :
View(),
Responder(parentResponder),
m_bufferTextView(font, 0.0f, 0.5f),
m_textField(this, m_textFieldBuffer, m_textFieldBuffer, k_textFieldBufferSize, delegate, false, font, 0.0f, 0.5f),
m_textField(this, m_textFieldBuffer, m_textFieldBuffer, k_textFieldBufferSize, inputEventHandlerDelegate, delegate, false, font, 0.0f, 0.5f),
m_textFieldBuffer{}
{
}

View File

@@ -6,7 +6,7 @@ namespace Shared {
class BufferTextViewWithTextField : public View, public Responder {
public:
BufferTextViewWithTextField(Responder * parentResponder, TextFieldDelegate * delegate = nullptr, const KDFont * font = KDFont::LargeFont);
BufferTextViewWithTextField(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * delegate = nullptr, const KDFont * font = KDFont::LargeFont);
KDSize minimalSizeForOptimalDisplay() const override;
TextField * textField() { return &m_textField; }
void setBufferText(const char * text);

View File

@@ -42,10 +42,4 @@ bool ExpressionFieldDelegateApp::layoutFieldDidReceiveEvent(LayoutField * layout
return false;
}
Toolbox * ExpressionFieldDelegateApp::toolboxForInputEventHandler(InputEventHandler * handler) {
Toolbox * toolbox = container()->mathToolbox();
toolbox->setSender(handler);
return toolbox;
}
}

View File

@@ -11,7 +11,6 @@ public:
virtual ~ExpressionFieldDelegateApp() = default;
bool layoutFieldShouldFinishEditing(LayoutField * layoutField, Ion::Events::Event event) override;
virtual bool layoutFieldDidReceiveEvent(LayoutField * layoutField, Ion::Events::Event event) override;
Toolbox * toolboxForInputEventHandler(InputEventHandler * handler) override;
protected:
ExpressionFieldDelegateApp(Container * container, Snapshot * snapshot, ViewController * rootViewController);
};

View File

@@ -5,8 +5,8 @@
namespace Shared {
FunctionGoToParameterController::FunctionGoToParameterController(Responder * parentResponder, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol) :
GoToParameterController(parentResponder, graphRange, cursor, symbol),
FunctionGoToParameterController::FunctionGoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol) :
GoToParameterController(parentResponder, inputEventHandlerDelegate, graphRange, cursor, symbol),
m_function(nullptr)
{
}

View File

@@ -8,7 +8,7 @@ namespace Shared {
class FunctionGoToParameterController : public GoToParameterController {
public:
FunctionGoToParameterController(Responder * parentResponder, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol);
FunctionGoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol);
const char * title() override;
void setFunction(Function * function);
protected:

View File

@@ -8,8 +8,8 @@ using namespace Poincare;
namespace Shared {
FunctionGraphController::FunctionGraphController(Responder * parentResponder, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Preferences::AngleUnit * angleUnitVersion) :
InteractiveCurveViewController(parentResponder, header, interactiveRange, curveView, cursor, modelVersion, rangeVersion),
FunctionGraphController::FunctionGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Preferences::AngleUnit * angleUnitVersion) :
InteractiveCurveViewController(parentResponder, inputEventHandlerDelegate, header, interactiveRange, curveView, cursor, modelVersion, rangeVersion),
m_initialisationParameterController(this, interactiveRange),
m_angleUnitVersion(angleUnitVersion),
m_indexFunctionSelectedByCursor(indexFunctionSelectedByCursor)

View File

@@ -13,7 +13,7 @@ namespace Shared {
class FunctionGraphController : public InteractiveCurveViewController, public FunctionBannerDelegate {
public:
FunctionGraphController(Responder * parentResponder, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion);
FunctionGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion);
bool isEmpty() const override;
ViewController * initialisationParameterController() override;
void viewWillAppear() override;

View File

@@ -4,11 +4,11 @@
namespace Shared {
GoToParameterController::GoToParameterController(Responder * parentResponder, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol) :
GoToParameterController::GoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol) :
FloatParameterController(parentResponder),
m_cursor(cursor),
m_graphRange(graphRange),
m_abscisseCell(&m_selectableTableView, this, m_draftTextBuffer, symbol)
m_abscisseCell(&m_selectableTableView, inputEventHandlerDelegate, this, m_draftTextBuffer, symbol)
{
}

View File

@@ -10,7 +10,7 @@ namespace Shared {
class GoToParameterController : public FloatParameterController {
public:
GoToParameterController(Responder * parentResponder, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol);
GoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol);
int numberOfRows() override;
bool handleEvent(Ion::Events::Event event) override;
protected:

View File

@@ -9,8 +9,8 @@ namespace Shared {
class HideableEvenOddEditableTextCell : public EvenOddEditableTextCell, public Hideable {
public:
HideableEvenOddEditableTextCell(Responder * parentResponder = nullptr, TextFieldDelegate * delegate = nullptr, char * draftTextBuffer = nullptr) :
EvenOddEditableTextCell(parentResponder, delegate, draftTextBuffer),
HideableEvenOddEditableTextCell(Responder * parentResponder = nullptr, InputEventHandlerDelegate * inputEventHandlerDelegate = nullptr, TextFieldDelegate * delegate = nullptr, char * draftTextBuffer = nullptr) :
EvenOddEditableTextCell(parentResponder, inputEventHandlerDelegate, delegate, draftTextBuffer),
Hideable()
{}
KDColor backgroundColor() const override;

View File

@@ -0,0 +1,26 @@
#include "input_event_handler_delegate_app.h"
#include "../apps_container.h"
#include <cmath>
#include <string.h>
using namespace Poincare;
namespace Shared {
InputEventHandlerDelegateApp::InputEventHandlerDelegateApp(Container * container, Snapshot * snapshot, ViewController * rootViewController) :
::App(container, snapshot, rootViewController, I18n::Message::Warning),
InputEventHandlerDelegate()
{
}
AppsContainer * InputEventHandlerDelegateApp::container() {
return (AppsContainer *)(app()->container());
}
Toolbox * InputEventHandlerDelegateApp::toolboxForInputEventHandler(InputEventHandler * textInput) {
Toolbox * toolbox = container()->mathToolbox();
toolbox->setSender(textInput);
return toolbox;
}
}

View File

@@ -0,0 +1,21 @@
#ifndef SHARED_INPUT_EVENT_HANDLER_DELEGATE_APP_H
#define SHARED_INPUT_EVENT_HANDLER_DELEGATE_APP_H
#include <escher.h>
class AppsContainer;
namespace Shared {
class InputEventHandlerDelegateApp : public ::App, public InputEventHandlerDelegate {
public:
virtual ~InputEventHandlerDelegateApp() = default;
AppsContainer * container();
Toolbox * toolboxForInputEventHandler(InputEventHandler * textInput) override;
protected:
InputEventHandlerDelegateApp(Container * container, Snapshot * snapshot, ViewController * rootViewController);
};
}
#endif

View File

@@ -7,12 +7,12 @@ using namespace Poincare;
namespace Shared {
InteractiveCurveViewController::InteractiveCurveViewController(Responder * parentResponder, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion) :
InteractiveCurveViewController::InteractiveCurveViewController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion) :
SimpleInteractiveCurveViewController(parentResponder, interactiveRange, curveView, cursor),
ButtonRowDelegate(header, nullptr),
m_modelVersion(modelVersion),
m_rangeVersion(rangeVersion),
m_rangeParameterController(this, interactiveRange),
m_rangeParameterController(this, inputEventHandlerDelegate, interactiveRange),
m_zoomParameterController(this, interactiveRange, curveView),
m_rangeButton(this, I18n::Message::Axis, Invocation([](void * context, void * sender) {
InteractiveCurveViewController * graphController = (InteractiveCurveViewController *) context;

View File

@@ -11,7 +11,7 @@ namespace Shared {
class InteractiveCurveViewController : public SimpleInteractiveCurveViewController, public InteractiveCurveViewRangeDelegate, public ButtonRowDelegate, public AlternateEmptyViewDefaultDelegate {
public:
InteractiveCurveViewController(Responder * parentResponder, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion);
InteractiveCurveViewController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, uint32_t * modelVersion, uint32_t * rangeVersion);
// InteractiveCurveViewRangeDelegate
float addMargin(float x, float range, bool isMin) override;

View File

@@ -3,14 +3,14 @@
namespace Shared {
IntervalParameterController::IntervalParameterController(Responder * parentResponder, Interval * interval) :
IntervalParameterController::IntervalParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Interval * interval) :
FloatParameterController(parentResponder),
m_interval(interval),
m_intervalCells{}
{
for (int i = 0; i < k_totalNumberOfCell; i++) {
m_intervalCells[i].setParentResponder(&m_selectableTableView);
m_intervalCells[i].textField()->setDelegate(this);
m_intervalCells[i].textField()->setDelegates(inputEventHandlerDelegate, this);
m_intervalCells[i].textField()->setDraftTextBuffer(m_draftTextBuffer);
}
}

View File

@@ -9,7 +9,7 @@ namespace Shared {
class IntervalParameterController : public Shared::FloatParameterController {
public:
IntervalParameterController(Responder * parentResponder, Interval * interval);
IntervalParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, Interval * interval);
Interval * interval();
const char * title() override;
void willDisplayCellForIndex(HighlightCell * cell, int index) override;

View File

@@ -24,8 +24,4 @@ void LayoutFieldDelegate::layoutFieldDidChangeSize(LayoutField * layoutField) {
return expressionFieldDelegateApp()->layoutFieldDidChangeSize(layoutField);
}
Toolbox * LayoutFieldDelegate::toolboxForInputEventHandler(InputEventHandler * handler) {
return expressionFieldDelegateApp()->toolboxForInputEventHandler(handler);
}
}

View File

@@ -13,7 +13,6 @@ public:
bool layoutFieldDidFinishEditing(LayoutField * layoutField, Poincare::Layout layoutR, Ion::Events::Event event) override;
bool layoutFieldDidAbortEditing(LayoutField * layoutField) override;
void layoutFieldDidChangeSize(LayoutField * layoutField) override;
Toolbox * toolboxForInputEventHandler(InputEventHandler * handler) override;
private:
virtual ExpressionFieldDelegateApp * expressionFieldDelegateApp() = 0;
};

View File

@@ -7,7 +7,7 @@ using namespace Poincare;
namespace Shared {
RangeParameterController::RangeParameterController(Responder * parentResponder, InteractiveCurveViewRange * interactiveRange) :
RangeParameterController::RangeParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * interactiveRange) :
FloatParameterController(parentResponder),
m_interactiveRange(interactiveRange),
m_xRangeCells{},
@@ -16,13 +16,13 @@ RangeParameterController::RangeParameterController(Responder * parentResponder,
{
for (int i = 0; i < k_numberOfEditableTextCell; i++) {
m_xRangeCells[i].setParentResponder(&m_selectableTableView);
m_xRangeCells[i].textField()->setDelegate(this);
m_xRangeCells[i].textField()->setDelegates(inputEventHandlerDelegate, this);
m_xRangeCells[i].textField()->setDraftTextBuffer(m_draftTextBuffer);
}
for (int i = 0; i < k_numberOfConvertibleTextCell; i++) {
m_yRangeCells[i].setParentResponder(&m_selectableTableView);
m_yRangeCells[i].setInteractiveCurveViewRange(m_interactiveRange);
m_yRangeCells[i].textField()->setDelegate(this);
m_yRangeCells[i].textField()->setDelegates(inputEventHandlerDelegate, this);
m_yRangeCells[i].textField()->setDraftTextBuffer(m_draftTextBuffer);
}
}

View File

@@ -9,7 +9,7 @@ namespace Shared {
class RangeParameterController : public FloatParameterController {
public:
RangeParameterController(Responder * parentResponder, InteractiveCurveViewRange * interactiveCurveViewRange);
RangeParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * interactiveCurveViewRange);
const char * title() override;
int numberOfRows() override;
int typeAtLocation(int i, int j) override;

View File

@@ -5,8 +5,8 @@
namespace Shared {
StorageFunctionGoToParameterController::StorageFunctionGoToParameterController(Responder * parentResponder, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol) :
GoToParameterController(parentResponder, graphRange, cursor, symbol),
StorageFunctionGoToParameterController::StorageFunctionGoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol) :
GoToParameterController(parentResponder, inputEventHandlerDelegate, graphRange, cursor, symbol),
m_record()
{
}

View File

@@ -8,7 +8,7 @@ namespace Shared {
class StorageFunctionGoToParameterController : public GoToParameterController {
public:
StorageFunctionGoToParameterController(Responder * parentResponder, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol);
StorageFunctionGoToParameterController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor, I18n::Message symbol);
const char * title() override;
void setRecord(Ion::Storage::Record record);
protected:

View File

@@ -8,8 +8,8 @@ using namespace Poincare;
namespace Shared {
StorageFunctionGraphController::StorageFunctionGraphController(Responder * parentResponder, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Preferences::AngleUnit * angleUnitVersion) :
InteractiveCurveViewController(parentResponder, header, interactiveRange, curveView, cursor, modelVersion, rangeVersion),
StorageFunctionGraphController::StorageFunctionGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Preferences::AngleUnit * angleUnitVersion) :
InteractiveCurveViewController(parentResponder, inputEventHandlerDelegate, header, interactiveRange, curveView, cursor, modelVersion, rangeVersion),
m_initialisationParameterController(this, interactiveRange),
m_angleUnitVersion(angleUnitVersion),
m_indexFunctionSelectedByCursor(indexFunctionSelectedByCursor)

View File

@@ -13,7 +13,7 @@ namespace Shared {
class StorageFunctionGraphController : public InteractiveCurveViewController, public StorageFunctionBannerDelegate {
public:
StorageFunctionGraphController(Responder * parentResponder, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion);
StorageFunctionGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, InteractiveCurveViewRange * interactiveRange, CurveView * curveView, CurveViewCursor * cursor, int * indexFunctionSelectedByCursor, uint32_t * modelVersion, uint32_t * rangeVersion, Poincare::Preferences::AngleUnit * angleUnitVersion);
bool isEmpty() const override;
ViewController * initialisationParameterController() override;
void viewWillAppear() override;

View File

@@ -13,7 +13,7 @@ using namespace Poincare;
namespace Shared {
StorageSumGraphController::StorageSumGraphController(Responder * parentResponder, StorageFunctionGraphView * graphView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol) :
StorageSumGraphController::StorageSumGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, StorageFunctionGraphView * graphView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol) :
SimpleInteractiveCurveViewController(parentResponder, range, graphView, cursor),
m_step(Step::FirstParameter),
m_startSum(NAN),
@@ -21,7 +21,7 @@ StorageSumGraphController::StorageSumGraphController(Responder * parentResponder
m_record(),
m_graphRange(range),
m_graphView(graphView),
m_legendView(this, sumSymbol),
m_legendView(this, inputEventHandlerDelegate, sumSymbol),
m_cursorView()
{
}
@@ -203,11 +203,11 @@ bool StorageSumGraphController::handleEnter() {
/* Legend View */
StorageSumGraphController::LegendView::LegendView(StorageSumGraphController * controller, char sumSymbol) :
StorageSumGraphController::LegendView::LegendView(StorageSumGraphController * controller, InputEventHandlerDelegate * inputEventHandlerDelegate, char sumSymbol) :
m_sum(0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_sumLayout(),
m_legend(k_font, I18n::Message::Default, 0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_editableZone(controller, m_draftText, m_draftText, TextField::maxBufferSize(), controller, false, k_font, 0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_editableZone(controller, m_draftText, m_draftText, TextField::maxBufferSize(), inputEventHandlerDelegate, controller, false, k_font, 0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_sumSymbol(sumSymbol)
{
m_draftText[0] = 0;

View File

@@ -14,7 +14,7 @@ namespace Shared {
class StorageSumGraphController : public SimpleInteractiveCurveViewController, public TextFieldDelegate {
public:
StorageSumGraphController(Responder * parentResponder, StorageFunctionGraphView * curveView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol);
StorageSumGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, StorageFunctionGraphView * curveView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol);
void viewWillAppear() override;
void didEnterResponderChain(Responder * previousFirstResponder) override;
bool handleEvent(Ion::Events::Event event) override;
@@ -48,7 +48,7 @@ private:
bool handleEnter() override;
class LegendView : public View {
public:
LegendView(StorageSumGraphController * controller, char sumSymbol);
LegendView(StorageSumGraphController * controller, InputEventHandlerDelegate * inputEventHandlerDelegate, char sumSymbol);
LegendView(const LegendView& other) = delete;
LegendView(LegendView&& other) = delete;
LegendView& operator=(const LegendView& other) = delete;

View File

@@ -9,7 +9,7 @@ using namespace Poincare;
namespace Shared {
StorageValuesController::StorageValuesController(Responder * parentResponder, ButtonRowController * header, I18n::Message parameterTitle, IntervalParameterController * intervalParameterController, Interval * interval) :
StorageValuesController::StorageValuesController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, I18n::Message parameterTitle, IntervalParameterController * intervalParameterController, Interval * interval) :
EditableCellTableViewController(parentResponder),
ButtonRowDelegate(header, nullptr),
m_interval(interval),
@@ -35,7 +35,7 @@ StorageValuesController::StorageValuesController(Responder * parentResponder, Bu
m_abscissaTitleCell.setMessageFont(k_font);
for (int i = 0; i < k_maxNumberOfAbscissaCells; i++) {
m_abscissaCells[i].setParentResponder(&m_selectableTableView);
m_abscissaCells[i].editableTextCell()->textField()->setDelegate(this);
m_abscissaCells[i].editableTextCell()->textField()->setDelegates(inputEventHandlerDelegate, this);
m_abscissaCells[i].editableTextCell()->textField()->setDraftTextBuffer(m_draftTextBuffer);
m_abscissaCells[i].editableTextCell()->textField()->setFont(k_font);
}

View File

@@ -15,7 +15,7 @@ namespace Shared {
class StorageValuesController : public EditableCellTableViewController, public ButtonRowDelegate, public AlternateEmptyViewDefaultDelegate {
public:
StorageValuesController(Responder * parentResponder, ButtonRowController * header, I18n::Message parameterTitle, IntervalParameterController * intervalParameterController, Interval * interval);
StorageValuesController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, ButtonRowController * header, I18n::Message parameterTitle, IntervalParameterController * intervalParameterController, Interval * interval);
const char * title() override;
Interval * interval();
int numberOfColumns() override;

View File

@@ -7,8 +7,8 @@ namespace Shared {
class StoreCell : public HideableEvenOddEditableTextCell {
public:
StoreCell(Responder * parentResponder = nullptr, TextFieldDelegate * delegate = nullptr, char * draftTextBuffer = nullptr) :
HideableEvenOddEditableTextCell(parentResponder, delegate, draftTextBuffer),
StoreCell(Responder * parentResponder = nullptr, InputEventHandlerDelegate * inputEventHandlerDelegate = nullptr, TextFieldDelegate * delegate = nullptr, char * draftTextBuffer = nullptr) :
HideableEvenOddEditableTextCell(parentResponder, inputEventHandlerDelegate, delegate, draftTextBuffer),
m_separatorLeft(false)
{}
void setSeparatorLeft(bool separator);

View File

@@ -12,11 +12,11 @@ static inline int max(int x, int y) { return (x>y ? x : y); }
namespace Shared {
StoreController::ContentView::ContentView(DoublePairStore * store, Responder * parentResponder, TableViewDataSource * dataSource, SelectableTableViewDataSource * selectionDataSource, TextFieldDelegate * textFieldDelegate) :
StoreController::ContentView::ContentView(DoublePairStore * store, Responder * parentResponder, TableViewDataSource * dataSource, SelectableTableViewDataSource * selectionDataSource, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * textFieldDelegate) :
View(),
Responder(parentResponder),
m_dataView(store, this, dataSource, selectionDataSource),
m_formulaInputView(this, textFieldDelegate),
m_formulaInputView(this, inputEventHandlerDelegate, textFieldDelegate),
m_displayFormulaInputView(false)
{
m_dataView.setBackgroundColor(Palette::WallScreenDark);
@@ -52,16 +52,16 @@ KDRect StoreController::ContentView::formulaFrame() const {
return KDRect(0, bounds().height() - k_formulaInputHeight, bounds().width(), m_displayFormulaInputView ? k_formulaInputHeight : 0);
}
StoreController::StoreController(Responder * parentResponder, DoublePairStore * store, ButtonRowController * header) :
StoreController::StoreController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, DoublePairStore * store, ButtonRowController * header) :
EditableCellTableViewController(parentResponder),
ButtonRowDelegate(header, nullptr),
m_editableCells{},
m_store(store),
m_contentView(m_store, this, this, this, this)
m_contentView(m_store, this, this, this, inputEventHandlerDelegate, this)
{
for (int i = 0; i < k_maxNumberOfEditableCells; i++) {
m_editableCells[i].setParentResponder(m_contentView.dataView());
m_editableCells[i].editableTextCell()->textField()->setDelegate(this);
m_editableCells[i].editableTextCell()->textField()->setDelegates(inputEventHandlerDelegate, this);
m_editableCells[i].editableTextCell()->textField()->setDraftTextBuffer(m_draftTextBuffer);
}
}

View File

@@ -14,7 +14,7 @@ namespace Shared {
class StoreController : public EditableCellTableViewController, public ButtonRowDelegate {
public:
StoreController(Responder * parentResponder, DoublePairStore * store, ButtonRowController * header);
StoreController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, DoublePairStore * store, ButtonRowController * header);
View * view() override { return &m_contentView; }
virtual StoreContext * storeContext() = 0;
@@ -55,7 +55,7 @@ protected:
class ContentView : public View , public Responder {
public:
ContentView(DoublePairStore * store, Responder * parentResponder, TableViewDataSource * dataSource, SelectableTableViewDataSource * selectionDataSource, TextFieldDelegate * textFieldDelegate);
ContentView(DoublePairStore * store, Responder * parentResponder, TableViewDataSource * dataSource, SelectableTableViewDataSource * selectionDataSource, InputEventHandlerDelegate * inputEventHandlerDelegate, TextFieldDelegate * textFieldDelegate);
StoreSelectableTableView * dataView() { return &m_dataView; }
BufferTextViewWithTextField * formulaInputView() { return &m_formulaInputView; }
void displayFormulaInput(bool display);

View File

@@ -13,7 +13,7 @@ using namespace Poincare;
namespace Shared {
SumGraphController::SumGraphController(Responder * parentResponder, FunctionGraphView * graphView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol) :
SumGraphController::SumGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, FunctionGraphView * graphView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol) :
SimpleInteractiveCurveViewController(parentResponder, range, graphView, cursor),
m_step(Step::FirstParameter),
m_startSum(NAN),
@@ -21,7 +21,7 @@ SumGraphController::SumGraphController(Responder * parentResponder, FunctionGrap
m_function(nullptr),
m_graphRange(range),
m_graphView(graphView),
m_legendView(this, sumSymbol),
m_legendView(this, inputEventHandlerDelegate, sumSymbol),
m_cursorView()
{
}
@@ -202,11 +202,11 @@ bool SumGraphController::handleEnter() {
/* Legend View */
SumGraphController::LegendView::LegendView(SumGraphController * controller, char sumSymbol) :
SumGraphController::LegendView::LegendView(SumGraphController * controller, InputEventHandlerDelegate * inputEventHandlerDelegate, char sumSymbol) :
m_sum(0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_sumLayout(),
m_legend(KDFont::SmallFont, I18n::Message::Default, 0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_editableZone(controller, m_draftText, m_draftText, TextField::maxBufferSize(), controller, false, KDFont::SmallFont, 0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_editableZone(controller, m_draftText, m_draftText, TextField::maxBufferSize(), inputEventHandlerDelegate, controller, false, KDFont::SmallFont, 0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle),
m_sumSymbol(sumSymbol)
{
m_draftText[0] = 0;

View File

@@ -14,7 +14,7 @@ namespace Shared {
class SumGraphController : public SimpleInteractiveCurveViewController, public TextFieldDelegate {
public:
SumGraphController(Responder * parentResponder, FunctionGraphView * curveView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol);
SumGraphController(Responder * parentResponder, InputEventHandlerDelegate * inputEventHandlerDelegate, FunctionGraphView * curveView, InteractiveCurveViewRange * range, CurveViewCursor * cursor, char sumSymbol);
void viewWillAppear() override;
void didEnterResponderChain(Responder * previousFirstResponder) override;
bool handleEvent(Ion::Events::Event event) override;
@@ -48,7 +48,7 @@ private:
bool handleEnter() override;
class LegendView : public View {
public:
LegendView(SumGraphController * controller, char sumSymbol);
LegendView(SumGraphController * controller, InputEventHandlerDelegate * inputEventHandlerDelegate, char sumSymbol);
LegendView(const LegendView& other) = delete;
LegendView(LegendView&& other) = delete;
LegendView& operator=(const LegendView& other) = delete;

Some files were not shown because too many files have changed in this diff Show More