From 4f16289bd772ef5791391e8dbbfb29aff8bf9bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Tue, 7 Feb 2017 14:32:20 +0100 Subject: [PATCH] [apps/sequence/list] Create a class list controller Change-Id: I95c569cccf3bd80025c9195faeda08fc69a62ea3 --- apps/sequence/Makefile | 1 + apps/sequence/list/list_controller.cpp | 56 ++++++++++++++++++++++++++ apps/sequence/list/list_controller.h | 33 +++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 apps/sequence/list/list_controller.cpp create mode 100644 apps/sequence/list/list_controller.h diff --git a/apps/sequence/Makefile b/apps/sequence/Makefile index ebaeb7c53..3e26683b2 100644 --- a/apps/sequence/Makefile +++ b/apps/sequence/Makefile @@ -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\ diff --git a/apps/sequence/list/list_controller.cpp b/apps/sequence/list/list_controller.cpp new file mode 100644 index 000000000..ec9ce92fc --- /dev/null +++ b/apps/sequence/list/list_controller.cpp @@ -0,0 +1,56 @@ +#include "list_controller.h" +#include + +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]; +} + +} diff --git a/apps/sequence/list/list_controller.h b/apps/sequence/list/list_controller.h new file mode 100644 index 000000000..690a4e4f2 --- /dev/null +++ b/apps/sequence/list/list_controller.h @@ -0,0 +1,33 @@ +#ifndef SEQUENCE_LIST_CONTROLLER_H +#define SEQUENCE_LIST_CONTROLLER_H + +#include +#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