[apps/sequence/list] Create a class list controller

Change-Id: I95c569cccf3bd80025c9195faeda08fc69a62ea3
This commit is contained in:
Émilie Feral
2017-02-07 14:32:20 +01:00
parent f76b603c67
commit 4f16289bd7
3 changed files with 90 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
app_objs += $(addprefix apps/sequence/,\
app.o\
list/list_controller.o\
list/sequence_expression_cell.o\
values/values_controller.o\
sequence.o\

View File

@@ -0,0 +1,56 @@
#include "list_controller.h"
#include <assert.h>
using namespace Shared;
namespace Sequence {
ListController::ListController(Responder * parentResponder, SequenceStore * sequenceStore, HeaderViewController * header) :
Shared::ListController(parentResponder, sequenceStore, header),
m_parameterController(ListParameterController(this, sequenceStore))
{
}
const char * ListController::title() const {
return "Suites";
}
bool ListController::handleEvent(Ion::Events::Event event) {
if (Shared::ListController::handleEvent(event)) {
return true;
}
if (event == Ion::Events::OK && m_selectableTableView.selectedColumn() == 1
&& m_selectableTableView.selectedRow() == numberOfRows() - 1) {
return addFunction();
}
return false;
}
void ListController::tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY) {
if (t->selectedRow() < numberOfRows() - 1) {
Responder * myCell = (Responder *)t->cellAtLocation(t->selectedColumn(), t->selectedRow());
app()->setFirstResponder(myCell);
} else {
app()->setFirstResponder(t);
}
}
ListParameterController * ListController::parameterController() {
return &m_parameterController;
}
int ListController::maxNumberOfRows() {
return k_maxNumberOfRows;
}
TableViewCell * ListController::titleCells(int index) {
assert(index >= 0 && index < k_maxNumberOfRows);
return &m_functionTitleCells[index];
}
TableViewCell * ListController::expressionCells(int index) {
assert(index >= 0 && index < k_maxNumberOfRows);
return &m_expressionCells[index];
}
}

View File

@@ -0,0 +1,33 @@
#ifndef SEQUENCE_LIST_CONTROLLER_H
#define SEQUENCE_LIST_CONTROLLER_H
#include <escher.h>
#include "../sequence_title_cell.h"
#include "../sequence_store.h"
#include "sequence_expression_cell.h"
#include "../../shared/new_function_cell.h"
#include "../../shared/list_controller.h"
#include "../../shared/list_parameter_controller.h"
namespace Sequence {
class ListController : public Shared::ListController, public SelectableTableViewDelegate {
public:
ListController(Responder * parentResponder, SequenceStore * sequenceStore, HeaderViewController * header);
const char * title() const override;
bool handleEvent(Ion::Events::Event event) override;
void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY) override;
private:
Shared::ListParameterController * parameterController() override;
int maxNumberOfRows() override;
TableViewCell * titleCells(int index) override;
TableViewCell * expressionCells(int index) override;
constexpr static int k_maxNumberOfRows = 3;
SequenceTitleCell m_functionTitleCells[k_maxNumberOfRows];
SequenceExpressionCell m_expressionCells[k_maxNumberOfRows];
Shared::ListParameterController m_parameterController;
};
}
#endif