From 9c1095092ad2dbe06582d7ef0c3abd366289d17f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 29 Dec 2016 18:06:16 +0100 Subject: [PATCH] [apps/statistics] Make data and data controller inherit from classes in apps/ Change-Id: Ie6a0b95c13a212321c1bf8132c39255f31a71429 --- apps/statistics/data.cpp | 19 ++++- apps/statistics/data.h | 11 ++- apps/statistics/data_controller.cpp | 110 +--------------------------- apps/statistics/data_controller.h | 27 +------ 4 files changed, 26 insertions(+), 141 deletions(-) diff --git a/apps/statistics/data.cpp b/apps/statistics/data.cpp index 5280540bc..9d12c502d 100644 --- a/apps/statistics/data.cpp +++ b/apps/statistics/data.cpp @@ -7,7 +7,7 @@ namespace Statistics { Data::Data() : - m_numberOfPairs(0), + ::Data(), m_barWidth(1.0f), m_selectedBar(0.0f), m_firstBarAbscissa(0.0f), @@ -20,9 +20,22 @@ Data::Data() : /* Raw numeric data */ -int Data::numberOfPairs() const { - return m_numberOfPairs; +float Data::xValueAtIndex(int index) { + return valueAtIndex(index); } + +float Data::yValueAtIndex(int index) { + return sizeAtIndex(index); +} + +void Data::setXValueAtIndex(float value, int index) { + setValueAtIndex(value, index); +} + +void Data::setYValueAtIndex(float value, int index) { + setSizeAtIndex(value, index); +} + float Data::valueAtIndex(int index) { assert(index < m_numberOfPairs); return m_values[index]; diff --git a/apps/statistics/data.h b/apps/statistics/data.h index 74e48a285..1f91c24fa 100644 --- a/apps/statistics/data.h +++ b/apps/statistics/data.h @@ -2,22 +2,26 @@ #define STATISTICS_DATA_H #include "../curve_view_window.h" +#include "../data.h" namespace Statistics { -class Data : public CurveViewWindow { +class Data : public CurveViewWindow, public ::Data { public: Data(); // Delete the implicit copy constructor: the object is heavy Data(const Data&) = delete; // Raw numeric data - int numberOfPairs() const; + float xValueAtIndex(int index) override; + float yValueAtIndex(int index) override; + void setXValueAtIndex(float value, int index) override; + void setYValueAtIndex(float value, int index) override; float valueAtIndex(int index); int sizeAtIndex(int index); void setValueAtIndex(float value, int index); void setSizeAtIndex(int size, int index); - void deletePairAtIndex(int index); + void deletePairAtIndex(int index) override; int totalSize(); // Histogram bars @@ -64,7 +68,6 @@ private: // Raw numeric data int m_sizes[k_maxNumberOfPairs]; float m_values[k_maxNumberOfPairs]; - int m_numberOfPairs; // Histogram bars float m_barWidth; float m_selectedBar; diff --git a/apps/statistics/data_controller.cpp b/apps/statistics/data_controller.cpp index 6fb7869bd..759c858c6 100644 --- a/apps/statistics/data_controller.cpp +++ b/apps/statistics/data_controller.cpp @@ -7,57 +7,10 @@ namespace Statistics { DataController::DataController(Responder * parentResponder, Data * data) : - EditableCellTableViewController(parentResponder, Metric::TopMargin, Metric::RightMargin, Metric::BottomMargin, Metric::LeftMargin), - m_editableCells{EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), - EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), - EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), - EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer), EvenOddEditableTextCell(&m_selectableTableView, this, m_draftTextBuffer)}, - m_data(data) + ::DataController(parentResponder, data) { } -const char * DataController::title() const { - return "Donnees"; -} - -int DataController::numberOfColumns() { - return 2; -}; - -KDCoordinate DataController::columnWidth(int i) { - return k_cellWidth; -} - -KDCoordinate DataController::cumulatedWidthFromIndex(int i) { - return i*k_cellWidth; -} - -int DataController::indexFromCumulatedWidth(KDCoordinate offsetX) { - return (offsetX-1) / k_cellWidth; -} - -TableViewCell * DataController::reusableCell(int index, int type) { - assert(index >= 0); - switch (type) { - case 0: - assert(index < k_numberOfTitleCells); - return &m_titleCells[index]; - case 1: - assert(index < k_maxNumberOfEditableCells); - return &m_editableCells[index]; - default: - assert(false); - return nullptr; - } -} - -int DataController::reusableCellCount(int type) { - if (type == 0) { - return k_numberOfTitleCells; - } - return k_maxNumberOfEditableCells; -} - void DataController::willDisplayCellAtLocation(TableViewCell * cell, int i, int j) { EditableCellTableViewController::willDisplayCellAtLocation(cell, i, j); if (cellAtLocationIsEditable(i, j)) { @@ -71,65 +24,4 @@ void DataController::willDisplayCellAtLocation(TableViewCell * cell, int i, int mytitleCell->setText("Effectifs"); } -int DataController::typeAtLocation(int i, int j) { - return j!=0; -} - -bool DataController::handleEvent(Ion::Events::Event event) { - if (event == Ion::Events::Up) { - m_selectableTableView.deselectTable(); - assert(m_selectableTableView.selectedRow() == -1); - app()->setFirstResponder(tabController()); - return true; - } - if (event == Ion::Events::Clear) { - if (m_selectableTableView.selectedColumn() == 0) { - m_data->deletePairAtIndex(m_selectableTableView.selectedRow()-1); - m_selectableTableView.reloadData(); - } else { - m_data->setSizeAtIndex(1, m_selectableTableView.selectedRow()-1); - EvenOddEditableTextCell * myCell = (EvenOddEditableTextCell *)m_selectableTableView.cellAtLocation(m_selectableTableView.selectedColumn(), m_selectableTableView.selectedRow()); - willDisplayCellAtLocation(myCell, m_selectableTableView.selectedColumn(), m_selectableTableView.selectedRow()); - myCell->editableTextCell()->textField()->handleEvent(Ion::Events::OK); - } - return true; - } - return false; -} - -Responder * DataController::tabController() const { - return (parentResponder()->parentResponder()); -} - -bool DataController::cellAtLocationIsEditable(int columnIndex, int rowIndex) { - if (rowIndex > 0) { - return true; - } - return false; -} - -void DataController::setDataAtLocation(float floatBody, int columnIndex, int rowIndex) { - if (columnIndex == 0) { - m_data->setValueAtIndex(floatBody, rowIndex-1); - } else { - m_data->setSizeAtIndex(floatBody, rowIndex-1); - } -} - -float DataController::dataAtLocation(int columnIndex, int rowIndex) { - if (columnIndex == 0) { - return m_data->valueAtIndex(rowIndex-1); - } else { - return m_data->sizeAtIndex(rowIndex-1); - } -} - -int DataController::numberOfElements() { - return m_data->numberOfPairs(); -} - -int DataController::maxNumberOfElements() const { - return Data::k_maxNumberOfPairs; -} - } diff --git a/apps/statistics/data_controller.h b/apps/statistics/data_controller.h index 523be1ee7..e10c4b831 100644 --- a/apps/statistics/data_controller.h +++ b/apps/statistics/data_controller.h @@ -3,37 +3,14 @@ #include #include "data.h" -#include "../editable_cell_table_view_controller.h" +#include "../data_controller.h" namespace Statistics { -class DataController : public EditableCellTableViewController { +class DataController : public ::DataController { public: DataController(Responder * parentResponder, Data * m_data); - const char * title() const override; - int numberOfColumns() override; void willDisplayCellAtLocation(TableViewCell * cell, int i, int j) override; - KDCoordinate columnWidth(int i) override; - KDCoordinate cumulatedWidthFromIndex(int i) override; - int indexFromCumulatedWidth(KDCoordinate offsetX) override; - TableViewCell * reusableCell(int index, int type) override; - int reusableCellCount(int type) override; - int typeAtLocation(int i, int j) override; - bool handleEvent(Ion::Events::Event event) override; -private: - static constexpr KDCoordinate k_cellWidth = 100; - constexpr static int k_maxNumberOfEditableCells = 20; - constexpr static int k_numberOfTitleCells = 2; - Responder * tabController() const; - bool cellAtLocationIsEditable(int columnIndex, int rowIndex) override; - void setDataAtLocation(float floatBody, int columnIndex, int rowIndex) override; - float dataAtLocation(int columnIndex, int rowIndex) override; - int numberOfElements() override; - int maxNumberOfElements() const override; - char m_draftTextBuffer[EditableTextCell::k_bufferLength]; - EvenOddEditableTextCell m_editableCells[k_maxNumberOfEditableCells]; - EvenOddPointerTextCell m_titleCells[k_numberOfTitleCells]; - Data * m_data; }; }