mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[escher] InputTextDelegate and LayoutFieldDelegate don't inherit from
InputTextDelegate to avoid diamond inheritance
This commit is contained in:
@@ -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())
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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; }
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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++) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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(); }
|
||||
|
||||
@@ -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\
|
||||
|
||||
@@ -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{}
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
26
apps/shared/input_event_handler_delegate_app.cpp
Normal file
26
apps/shared/input_event_handler_delegate_app.cpp
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
21
apps/shared/input_event_handler_delegate_app.h
Normal file
21
apps/shared/input_event_handler_delegate_app.h
Normal 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
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -24,8 +24,4 @@ void LayoutFieldDelegate::layoutFieldDidChangeSize(LayoutField * layoutField) {
|
||||
return expressionFieldDelegateApp()->layoutFieldDidChangeSize(layoutField);
|
||||
}
|
||||
|
||||
Toolbox * LayoutFieldDelegate::toolboxForInputEventHandler(InputEventHandler * handler) {
|
||||
return expressionFieldDelegateApp()->toolboxForInputEventHandler(handler);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user