mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[apps] Get rid of DynamicViewController
This commit is contained in:
@@ -41,14 +41,19 @@ void EditExpressionController::ContentView::reload() {
|
||||
}
|
||||
|
||||
EditExpressionController::EditExpressionController(Responder * parentResponder, HistoryController * historyController, CalculationStore * calculationStore) :
|
||||
DynamicViewController(parentResponder),
|
||||
ViewController(parentResponder),
|
||||
m_historyController(historyController),
|
||||
m_calculationStore(calculationStore),
|
||||
m_contentView(this, (TableView *)m_historyController->view(), this, this),
|
||||
m_inputViewHeightIsMaximal(false)
|
||||
{
|
||||
m_cacheBuffer[0] = 0;
|
||||
}
|
||||
|
||||
View * EditExpressionController::view() {
|
||||
return &m_contentView;
|
||||
}
|
||||
|
||||
void EditExpressionController::insertTextBody(const char * text) {
|
||||
((ContentView *)view())->expressionField()->handleEventWithText(text, false, true);
|
||||
}
|
||||
@@ -122,14 +127,6 @@ ExpressionFieldDelegateApp * EditExpressionController::expressionFieldDelegateAp
|
||||
return (App *)app();
|
||||
}
|
||||
|
||||
View * EditExpressionController::loadView() {
|
||||
return new ContentView(this, (TableView *)m_historyController->view(), this, this);
|
||||
}
|
||||
|
||||
void EditExpressionController::unloadView(View * view) {
|
||||
delete view;
|
||||
}
|
||||
|
||||
void EditExpressionController::reloadView() {
|
||||
((ContentView *)view())->reload();
|
||||
m_historyController->reload();
|
||||
@@ -177,7 +174,6 @@ bool EditExpressionController::inputViewDidAbortEditing(const char * text) {
|
||||
}
|
||||
|
||||
void EditExpressionController::viewDidDisappear() {
|
||||
DynamicViewController::viewDidDisappear();
|
||||
m_historyController->viewDidDisappear();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,9 +13,10 @@ namespace Calculation {
|
||||
class HistoryController;
|
||||
|
||||
/* TODO: implement a split view */
|
||||
class EditExpressionController : public DynamicViewController, public Shared::TextFieldDelegate, public Shared::LayoutFieldDelegate {
|
||||
class EditExpressionController : public ViewController, public Shared::TextFieldDelegate, public Shared::LayoutFieldDelegate {
|
||||
public:
|
||||
EditExpressionController(Responder * parentResponder, HistoryController * historyController, CalculationStore * calculationStore);
|
||||
View * view() override;
|
||||
void didBecomeFirstResponder() override;
|
||||
void viewDidDisappear() override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
@@ -49,8 +50,6 @@ private:
|
||||
char m_textBody[k_bufferLength];
|
||||
ExpressionField m_expressionField;
|
||||
};
|
||||
View * loadView() override;
|
||||
void unloadView(View * view) override;
|
||||
void reloadView();
|
||||
bool inputViewDidReceiveEvent(Ion::Events::Event event);
|
||||
bool inputViewDidFinishEditing(const char * text, Poincare::LayoutRef layoutR);
|
||||
@@ -60,6 +59,7 @@ private:
|
||||
char m_cacheBuffer[Calculation::k_printedExpressionSize];
|
||||
HistoryController * m_historyController;
|
||||
CalculationStore * m_calculationStore;
|
||||
ContentView m_contentView;
|
||||
bool m_inputViewHeightIsMaximal;
|
||||
};
|
||||
|
||||
|
||||
@@ -14,6 +14,9 @@ ListController::ListController(Responder * parentResponder, CartesianFunctionSto
|
||||
m_expressionCells{},
|
||||
m_parameterController(this, functionStore, I18n::Message::FunctionColor, I18n::Message::DeleteFunction)
|
||||
{
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
m_expressionCells[i].setLeftMargin(k_expressionMargin);
|
||||
}
|
||||
}
|
||||
|
||||
const char * ListController::title() {
|
||||
@@ -30,15 +33,14 @@ int ListController::maxNumberOfRows() {
|
||||
|
||||
HighlightCell * ListController::titleCells(int index) {
|
||||
assert(index >= 0 && index < k_maxNumberOfRows);
|
||||
return m_functionTitleCells[index];
|
||||
return &m_functionTitleCells[index];
|
||||
}
|
||||
|
||||
HighlightCell * ListController::expressionCells(int index) {
|
||||
assert(index >= 0 && index < k_maxNumberOfRows);
|
||||
return m_expressionCells[index];
|
||||
return &m_expressionCells[index];
|
||||
}
|
||||
|
||||
|
||||
void ListController::willDisplayTitleCellAtIndex(HighlightCell * cell, int j) {
|
||||
Shared::BufferFunctionTitleCell * myFunctionCell = (Shared::BufferFunctionTitleCell *)cell;
|
||||
CartesianFunction * function = ((CartesianFunctionStore *)m_functionStore)->modelAtIndex(j);
|
||||
@@ -64,23 +66,4 @@ bool ListController::removeModelRow(ExpressionModel * model) {
|
||||
return false;
|
||||
}
|
||||
|
||||
View * ListController::loadView() {
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
m_functionTitleCells[i] = new Shared::BufferFunctionTitleCell(FunctionTitleCell::Orientation::VerticalIndicator);
|
||||
m_expressionCells[i] = new FunctionExpressionCell();
|
||||
m_expressionCells[i]->setLeftMargin(k_expressionMargin);
|
||||
}
|
||||
return Shared::FunctionListController::loadView();
|
||||
}
|
||||
|
||||
void ListController::unloadView(View * view) {
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
delete m_functionTitleCells[i];
|
||||
m_functionTitleCells[i] = nullptr;
|
||||
delete m_expressionCells[i];
|
||||
m_expressionCells[i] = nullptr;
|
||||
}
|
||||
Shared::FunctionListController::unloadView(view);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,11 +22,9 @@ private:
|
||||
void willDisplayTitleCellAtIndex(HighlightCell * cell, int j) override;
|
||||
void willDisplayExpressionCellAtIndex(HighlightCell * cell, int j) override;
|
||||
bool removeModelRow(Shared::ExpressionModel * function) override;
|
||||
View * loadView() override;
|
||||
void unloadView(View * view) override;
|
||||
constexpr static int k_maxNumberOfRows = 5;
|
||||
Shared::BufferFunctionTitleCell * m_functionTitleCells[k_maxNumberOfRows];
|
||||
Shared::FunctionExpressionCell * m_expressionCells[k_maxNumberOfRows];
|
||||
Shared::BufferFunctionTitleCell m_functionTitleCells[k_maxNumberOfRows];
|
||||
Shared::FunctionExpressionCell m_expressionCells[k_maxNumberOfRows];
|
||||
Shared::ListParameterController m_parameterController;
|
||||
};
|
||||
|
||||
|
||||
@@ -19,6 +19,9 @@ ListController::ListController(Responder * parentResponder, SequenceStore * sequ
|
||||
m_typeStackController(nullptr, &m_typeParameterController, KDColorWhite, Palette::PurpleDark, Palette::PurpleDark),
|
||||
m_sequenceToolbox()
|
||||
{
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
m_expressionCells[i].setLeftMargin(k_expressionMargin);
|
||||
}
|
||||
}
|
||||
|
||||
const char * ListController::title() {
|
||||
@@ -173,15 +176,14 @@ int ListController::maxNumberOfRows() {
|
||||
|
||||
HighlightCell * ListController::titleCells(int index) {
|
||||
assert(index >= 0 && index < k_maxNumberOfRows);
|
||||
return m_sequenceTitleCells[index];
|
||||
return &m_sequenceTitleCells[index];
|
||||
}
|
||||
|
||||
HighlightCell * ListController::expressionCells(int index) {
|
||||
assert(index >= 0 && index < k_maxNumberOfRows);
|
||||
return m_expressionCells[index];
|
||||
return &m_expressionCells[index];
|
||||
}
|
||||
|
||||
|
||||
void ListController::willDisplayTitleCellAtIndex(HighlightCell * cell, int j) {
|
||||
SequenceTitleCell * myCell = (SequenceTitleCell *)cell;
|
||||
Sequence * sequence = m_sequenceStore->modelAtIndex(modelIndexForRow(j));
|
||||
@@ -290,23 +292,4 @@ void ListController::reinitExpression(Shared::ExpressionModel * model) {
|
||||
selectableTableView()->reloadData();
|
||||
}
|
||||
|
||||
View * ListController::loadView() {
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
m_sequenceTitleCells[i] = new SequenceTitleCell(FunctionTitleCell::Orientation::VerticalIndicator);
|
||||
m_expressionCells[i] = new FunctionExpressionCell();
|
||||
m_expressionCells[i]->setLeftMargin(k_expressionMargin);
|
||||
}
|
||||
return Shared::FunctionListController::loadView();
|
||||
}
|
||||
|
||||
void ListController::unloadView(View * view) {
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
delete m_sequenceTitleCells[i];
|
||||
m_sequenceTitleCells[i] = nullptr;
|
||||
delete m_expressionCells[i];
|
||||
m_expressionCells[i] = nullptr;
|
||||
}
|
||||
Shared::FunctionListController::unloadView(view);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -43,13 +43,11 @@ private:
|
||||
void reinitExpression(Shared::ExpressionModel * model) override;
|
||||
void editExpression(Shared::ExpressionModel * model, Ion::Events::Event event) override;
|
||||
bool removeModelRow(Shared::ExpressionModel * model) override;
|
||||
View * loadView() override;
|
||||
void unloadView(View * view) override;
|
||||
static constexpr KDCoordinate k_emptySubRowHeight = 30;
|
||||
constexpr static int k_maxNumberOfRows = 3*MaxNumberOfSequences;
|
||||
SequenceStore * m_sequenceStore;
|
||||
SequenceTitleCell * m_sequenceTitleCells[k_maxNumberOfRows];
|
||||
Shared::FunctionExpressionCell * m_expressionCells[k_maxNumberOfRows];
|
||||
SequenceTitleCell m_sequenceTitleCells[k_maxNumberOfRows];
|
||||
Shared::FunctionExpressionCell m_expressionCells[k_maxNumberOfRows];
|
||||
ListParameterController m_parameterController;
|
||||
TypeParameterController m_typeParameterController;
|
||||
StackViewController m_typeStackController;
|
||||
|
||||
@@ -6,8 +6,8 @@ using namespace Poincare;
|
||||
|
||||
namespace Sequence {
|
||||
|
||||
SequenceTitleCell::SequenceTitleCell(Orientation orientation) :
|
||||
Shared::FunctionTitleCell(orientation),
|
||||
SequenceTitleCell::SequenceTitleCell() :
|
||||
Shared::FunctionTitleCell(),
|
||||
m_titleTextView(0.5f, 0.5f)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Sequence {
|
||||
|
||||
class SequenceTitleCell : public Shared::FunctionTitleCell {
|
||||
public:
|
||||
SequenceTitleCell(Orientation orientation);
|
||||
SequenceTitleCell();
|
||||
void setLayout(Poincare::LayoutReference layout);
|
||||
void setEven(bool even) override;
|
||||
void setHighlighted(bool highlight) override;
|
||||
|
||||
@@ -85,7 +85,8 @@ Shared::ValuesFunctionParameterController * ValuesController::functionParameterC
|
||||
|
||||
View * ValuesController::loadView() {
|
||||
for (int i = 0; i < k_maxNumberOfSequences; i++) {
|
||||
m_sequenceTitleCells[i] = new SequenceTitleCell(FunctionTitleCell::Orientation::HorizontalIndicator);
|
||||
m_sequenceTitleCells[i] = new SequenceTitleCell();
|
||||
m_sequenceTitleCells[i]->setOrientation(FunctionTitleCell::Orientation::HorizontalIndicator);
|
||||
}
|
||||
for (int i = 0; i < k_maxNumberOfCells; i++) {
|
||||
m_floatCells[i] = new EvenOddBufferTextCell();
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Shared {
|
||||
|
||||
class BufferFunctionTitleCell : public FunctionTitleCell {
|
||||
public:
|
||||
BufferFunctionTitleCell(Orientation orientation, KDText::FontSize size = KDText::FontSize::Large);
|
||||
BufferFunctionTitleCell(Orientation orientation = Orientation::VerticalIndicator, KDText::FontSize size = KDText::FontSize::Large);
|
||||
void setEven(bool even) override;
|
||||
void setHighlighted(bool highlight) override;
|
||||
void setColor(KDColor color) override;
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
namespace Shared {
|
||||
|
||||
ExpressionModelListController::ExpressionModelListController(Responder * parentResponder, I18n::Message text) :
|
||||
DynamicViewController(parentResponder),
|
||||
m_addNewMessage(text),
|
||||
m_addNewModel(nullptr)
|
||||
ViewController(parentResponder),
|
||||
m_addNewModel()
|
||||
{
|
||||
m_addNewModel.setMessage(text);
|
||||
}
|
||||
|
||||
/* Table Data Source */
|
||||
@@ -116,18 +116,4 @@ bool ExpressionModelListController::isAddEmptyRow(int j) {
|
||||
return j == modelStore()->numberOfModels();
|
||||
}
|
||||
|
||||
SelectableTableView * ExpressionModelListController::selectableTableView() {
|
||||
return (SelectableTableView *)view();
|
||||
}
|
||||
|
||||
void ExpressionModelListController::loadAddModelCell() {
|
||||
m_addNewModel = new EvenOddMessageTextCell();
|
||||
m_addNewModel->setMessage(m_addNewMessage);
|
||||
}
|
||||
|
||||
void ExpressionModelListController::unloadAddModelCell() {
|
||||
delete m_addNewModel;
|
||||
m_addNewModel = nullptr;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
namespace Shared {
|
||||
|
||||
class ExpressionModelListController : public DynamicViewController, public SelectableTableViewDataSource {
|
||||
class ExpressionModelListController : public ViewController, public SelectableTableViewDataSource {
|
||||
public:
|
||||
ExpressionModelListController(Responder * parentResponder, I18n::Message text);
|
||||
protected:
|
||||
@@ -24,14 +24,11 @@ protected:
|
||||
virtual bool removeModelRow(ExpressionModel * function);
|
||||
virtual int modelIndexForRow(int j);
|
||||
virtual bool isAddEmptyRow(int j);
|
||||
/* Dynamic View Controller */
|
||||
virtual SelectableTableView * selectableTableView();
|
||||
void loadAddModelCell();
|
||||
void unloadAddModelCell();
|
||||
/* View Controller */
|
||||
virtual SelectableTableView * selectableTableView() = 0;
|
||||
virtual ExpressionModelStore * modelStore() = 0;
|
||||
virtual InputViewController * inputController() = 0;
|
||||
I18n::Message m_addNewMessage;
|
||||
EvenOddMessageTextCell * m_addNewModel;
|
||||
EvenOddMessageTextCell m_addNewModel;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@ FunctionListController::FunctionListController(Responder * parentResponder, Func
|
||||
ExpressionModelListController(parentResponder, text),
|
||||
ButtonRowDelegate(header, footer),
|
||||
m_functionStore(functionStore),
|
||||
m_emptyCell(nullptr),
|
||||
m_selectableTableView(this, this, this, this),
|
||||
m_emptyCell(),
|
||||
m_plotButton(this, I18n::Message::Plot, Invocation([](void * context, void * sender) {
|
||||
FunctionListController * list = (FunctionListController *)context;
|
||||
TabViewController * tabController = list->tabController();
|
||||
@@ -19,6 +20,9 @@ FunctionListController::FunctionListController(Responder * parentResponder, Func
|
||||
tabController->setActiveTab(2);
|
||||
}, this), KDText::FontSize::Small, Palette::PurpleBright)
|
||||
{
|
||||
m_selectableTableView.setMargins(0);
|
||||
m_selectableTableView.setVerticalCellOverlap(0);
|
||||
m_selectableTableView.setShowsIndicators(false);
|
||||
}
|
||||
|
||||
int FunctionListController::numberOfColumns() {
|
||||
@@ -79,9 +83,9 @@ HighlightCell * FunctionListController::reusableCell(int index, int type) {
|
||||
case 1:
|
||||
return expressionCells(index);
|
||||
case 2:
|
||||
return m_emptyCell;
|
||||
return &m_emptyCell;
|
||||
case 3:
|
||||
return m_addNewModel;
|
||||
return &m_addNewModel;
|
||||
default:
|
||||
assert(false);
|
||||
return nullptr;
|
||||
@@ -212,21 +216,4 @@ TabViewController * FunctionListController::tabController() const{
|
||||
return (TabViewController *)(parentResponder()->parentResponder()->parentResponder()->parentResponder());
|
||||
}
|
||||
|
||||
View * FunctionListController::loadView() {
|
||||
loadAddModelCell();
|
||||
m_emptyCell = new EvenOddCell();
|
||||
SelectableTableView * selectableTableView = new SelectableTableView(this, this, this, this);
|
||||
selectableTableView->setMargins(0);
|
||||
selectableTableView->setVerticalCellOverlap(0);
|
||||
selectableTableView->setShowsIndicators(false);
|
||||
return selectableTableView;
|
||||
}
|
||||
|
||||
void FunctionListController::unloadView(View * view) {
|
||||
unloadAddModelCell();
|
||||
delete m_emptyCell;
|
||||
m_emptyCell = nullptr;
|
||||
delete view;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -37,13 +37,15 @@ public:
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didEnterResponderChain(Responder * previousFirstResponder) override;
|
||||
void willExitResponderChain(Responder * nextFirstResponder) override;
|
||||
/* ViewController */
|
||||
View * view() override { return &m_selectableTableView; }
|
||||
/* SelectableTableViewDelegate*/
|
||||
void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY) override;
|
||||
/* ExpressionModelListController */
|
||||
SelectableTableView * selectableTableView() override { return &m_selectableTableView; }
|
||||
protected:
|
||||
StackViewController * stackController() const;
|
||||
void configureFunction(Function * function);
|
||||
View * loadView() override;
|
||||
void unloadView(View * view) override;
|
||||
FunctionStore * m_functionStore;
|
||||
private:
|
||||
static constexpr KDCoordinate k_functionNameWidth = 65;
|
||||
@@ -58,7 +60,8 @@ private:
|
||||
virtual HighlightCell * titleCells(int index) = 0;
|
||||
virtual HighlightCell * expressionCells(int index) = 0;
|
||||
virtual void willDisplayTitleCellAtIndex(HighlightCell * cell, int j) = 0;
|
||||
EvenOddCell * m_emptyCell;
|
||||
SelectableTableView m_selectableTableView;
|
||||
EvenOddCell m_emptyCell;
|
||||
Button m_plotButton;
|
||||
Button m_valuesButton;
|
||||
};
|
||||
|
||||
@@ -9,6 +9,11 @@ FunctionTitleCell::FunctionTitleCell(Orientation orientation) :
|
||||
{
|
||||
}
|
||||
|
||||
void FunctionTitleCell::setOrientation(Orientation orientation) {
|
||||
m_orientation = orientation;
|
||||
reloadCell();
|
||||
}
|
||||
|
||||
void FunctionTitleCell::setColor(KDColor color) {
|
||||
m_functionColor = color;
|
||||
reloadCell();
|
||||
|
||||
@@ -11,7 +11,8 @@ public:
|
||||
HorizontalIndicator,
|
||||
VerticalIndicator
|
||||
};
|
||||
FunctionTitleCell(Orientation orientation);
|
||||
FunctionTitleCell(Orientation orientation = Orientation::VerticalIndicator);
|
||||
void setOrientation(Orientation orientation);
|
||||
virtual void setColor(KDColor color);
|
||||
void drawRect(KDContext * ctx, KDRect rect) const override;
|
||||
protected:
|
||||
|
||||
@@ -10,6 +10,8 @@ ListController::ListController(Responder * parentResponder, EquationStore * equa
|
||||
ExpressionModelListController(parentResponder, I18n::Message::AddEquation),
|
||||
ButtonRowDelegate(nullptr, footer),
|
||||
m_equationStore(equationStore),
|
||||
m_equationListView(this, this, this),
|
||||
m_expressionCells{},
|
||||
m_resolveButton(this, equationStore->numberOfDefinedModels() > 1 ? I18n::Message::ResolveSystem : I18n::Message::ResolveEquation, Invocation([](void * context, void * sender) {
|
||||
ListController * list = (ListController *)context;
|
||||
list->resolveEquations();
|
||||
@@ -17,6 +19,11 @@ ListController::ListController(Responder * parentResponder, EquationStore * equa
|
||||
m_modelsParameterController(this, equationStore, this),
|
||||
m_modelsStackController(nullptr, &m_modelsParameterController, KDColorWhite, Palette::PurpleDark, Palette::PurpleDark)
|
||||
{
|
||||
m_addNewModel.setAlignment(0.3f, 0.5f); // (EquationListView::k_braceTotalWidth+k_expressionMargin) / (Ion::Display::Width-m_addNewModel.text().size()) = (30+5)/(320-200)
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
m_expressionCells[i].setLeftMargin(EquationListView::k_braceTotalWidth+k_expressionMargin);
|
||||
m_expressionCells[i].setEven(true);
|
||||
}
|
||||
}
|
||||
|
||||
int ListController::numberOfButtons(ButtonRowController::Position position) const {
|
||||
@@ -45,9 +52,9 @@ HighlightCell * ListController::reusableCell(int index, int type) {
|
||||
assert(index < k_maxNumberOfRows);
|
||||
switch (type) {
|
||||
case 0:
|
||||
return m_expressionCells[index];
|
||||
return &m_expressionCells[index];
|
||||
case 1:
|
||||
return m_addNewModel;
|
||||
return &m_addNewModel;
|
||||
default:
|
||||
assert(false);
|
||||
return nullptr;
|
||||
@@ -208,35 +215,13 @@ bool ListController::removeModelRow(ExpressionModel * model) {
|
||||
}
|
||||
|
||||
void ListController::reloadBrace() {
|
||||
EquationListView * listView = static_cast<EquationListView *>(view());
|
||||
EquationListView::BraceStyle braceStyle = m_equationStore->numberOfModels() <= 1 ? EquationListView::BraceStyle::None : (m_equationStore->numberOfModels() == m_equationStore->maxNumberOfModels() ? EquationListView::BraceStyle::Full : EquationListView::BraceStyle::OneRowShort);
|
||||
listView->setBraceStyle(braceStyle);
|
||||
listView->layoutSubviews();
|
||||
m_equationListView.setBraceStyle(braceStyle);
|
||||
m_equationListView.layoutSubviews();
|
||||
}
|
||||
|
||||
SelectableTableView * ListController::selectableTableView() {
|
||||
return static_cast<EquationListView *>(view())->selectableTableView();
|
||||
}
|
||||
|
||||
View * ListController::loadView() {
|
||||
loadAddModelCell();
|
||||
m_addNewModel->setAlignment(0.3f, 0.5f); // (EquationListView::k_braceTotalWidth+k_expressionMargin) / (Ion::Display::Width-m_addNewModel.text().size()) = (30+5)/(320-200)
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
m_expressionCells[i] = new EvenOddExpressionCell();
|
||||
m_expressionCells[i]->setLeftMargin(EquationListView::k_braceTotalWidth+k_expressionMargin);
|
||||
m_expressionCells[i]->setEven(true);
|
||||
}
|
||||
EquationListView * listView = new EquationListView(this, this, this);
|
||||
return listView;
|
||||
}
|
||||
|
||||
void ListController::unloadView(View * view) {
|
||||
unloadAddModelCell();
|
||||
for (int i = 0; i < k_maxNumberOfRows; i++) {
|
||||
delete m_expressionCells[i];
|
||||
m_expressionCells[i] = nullptr;
|
||||
}
|
||||
delete view;
|
||||
return m_equationListView.selectableTableView();
|
||||
}
|
||||
|
||||
Shared::TextFieldDelegateApp * ListController::textFieldDelegateApp() {
|
||||
|
||||
@@ -34,6 +34,8 @@ public:
|
||||
void didBecomeFirstResponder() override;
|
||||
void didEnterResponderChain(Responder * previousFirstResponder) override;
|
||||
void editExpression(Shared::ExpressionModel * model, Ion::Events::Event event) override { return Shared::ExpressionModelListController::editExpression(model, event); }
|
||||
/* ViewController */
|
||||
View * view() override { return &m_equationListView; }
|
||||
/* Text/Layout Field Delegate */
|
||||
Shared::TextFieldDelegateApp * textFieldDelegateApp() override;
|
||||
Shared::ExpressionFieldDelegateApp * expressionFieldDelegateApp() override;
|
||||
@@ -50,13 +52,12 @@ private:
|
||||
void addEmptyModel() override;
|
||||
bool removeModelRow(Shared::ExpressionModel * function) override;
|
||||
void reloadBrace();
|
||||
View * loadView() override;
|
||||
void unloadView(View * view) override;
|
||||
Shared::ExpressionModelStore * modelStore() override { return m_equationStore; }
|
||||
StackViewController * stackController() const;
|
||||
InputViewController * inputController() override;
|
||||
EquationStore * m_equationStore;
|
||||
EvenOddExpressionCell * m_expressionCells[k_maxNumberOfRows];
|
||||
EquationListView m_equationListView;
|
||||
EvenOddExpressionCell m_expressionCells[k_maxNumberOfRows];
|
||||
Button m_resolveButton;
|
||||
EquationModelsParameterController m_modelsParameterController;
|
||||
StackViewController m_modelsStackController;
|
||||
|
||||
Reference in New Issue
Block a user