[apps] Get rid of DynamicViewController in FloatParameterController

This commit is contained in:
Émilie Feral
2018-09-11 10:16:36 +02:00
parent 5cb4258af6
commit 6d9f0c0f0b
15 changed files with 89 additions and 227 deletions

View File

@@ -11,8 +11,12 @@ using namespace Poincare;
namespace Shared {
FloatParameterController::FloatParameterController(Responder * parentResponder) :
DynamicViewController(parentResponder),
m_okButton(nullptr)
ViewController(parentResponder),
m_selectableTableView(this, this, this),
m_okButton(&m_selectableTableView, I18n::Message::Ok, Invocation([](void * context, void * sender) {
FloatParameterController * parameterController = (FloatParameterController *) context;
parameterController->buttonAction();
}, this))
{
}
@@ -24,11 +28,10 @@ void FloatParameterController::didBecomeFirstResponder() {
selColumn = selColumn >= numberOfColumns() ? numberOfColumns() - 1 : selColumn;
selectCellAtLocation(selColumn, selRow);
}
app()->setFirstResponder(selectableTableView());
app()->setFirstResponder(&m_selectableTableView);
}
void FloatParameterController::viewWillAppear() {
DynamicViewController::viewWillAppear();
if (selectedRow() == -1 || selectedRow() == numberOfRows()-1) {
selectCellAtLocation(0, 0);
} else {
@@ -38,13 +41,13 @@ void FloatParameterController::viewWillAppear() {
selColumn = selColumn >= numberOfColumns() ? numberOfColumns() - 1 : selColumn;
selectCellAtLocation(selColumn, selRow);
}
selectableTableView()->reloadData();
m_selectableTableView.reloadData();
}
void FloatParameterController::willExitResponderChain(Responder * nextFirstResponder) {
if (parentResponder() == nullptr) {
selectableTableView()->deselectTable();
selectableTableView()->scrollToCell(0,0);
m_selectableTableView.deselectTable();
m_selectableTableView.scrollToCell(0,0);
}
}
@@ -72,7 +75,7 @@ int FloatParameterController::reusableCellCount(int type) {
HighlightCell * FloatParameterController::reusableCell(int index, int type) {
if (type == 0) {
return m_okButton;
return &m_okButton;
}
return reusableParameterCell(index, type);
}
@@ -128,12 +131,12 @@ bool FloatParameterController::textFieldDidFinishEditing(TextField * textField,
if (!setParameterAtIndex(selectedRow(), floatBody)) {
return false;
}
selectableTableView()->reloadCellAtLocation(0, activeCell());
selectableTableView()->reloadData();
m_selectableTableView.reloadCellAtLocation(0, activeCell());
m_selectableTableView.reloadData();
if (event == Ion::Events::EXE || event == Ion::Events::OK) {
selectableTableView()->selectCellAtLocation(selectedColumn(), selectedRow()+1);
m_selectableTableView.selectCellAtLocation(selectedColumn(), selectedRow()+1);
} else {
selectableTableView()->handleEvent(event);
m_selectableTableView.handleEvent(event);
}
return true;
}
@@ -150,32 +153,9 @@ StackViewController * FloatParameterController::stackController() {
return (StackViewController *)parentResponder();
}
SelectableTableView * FloatParameterController::selectableTableView() {
return (SelectableTableView *)view();
}
void FloatParameterController::buttonAction() {
StackViewController * stack = stackController();
stack->pop();
}
I18n::Message FloatParameterController::okButtonText() {
return I18n::Message::Ok;
}
View * FloatParameterController::loadView() {
SelectableTableView * tableView = new SelectableTableView(this, this, this);
m_okButton = new ButtonWithSeparator(tableView, okButtonText(), Invocation([](void * context, void * sender) {
FloatParameterController * parameterController = (FloatParameterController *) context;
parameterController->buttonAction();
}, this));
return tableView;
}
void FloatParameterController::unloadView(View * view) {
delete m_okButton;
m_okButton = nullptr;
delete view;
}
}