From 7a54fa0ea0307687ddceb12581af36887b115077 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 16 Mar 2017 14:00:03 +0100 Subject: [PATCH] [apps/shared] Divide tab table controller in 2 classes Change-Id: I7bd9f7395c000ad69198ab123ffcfe1b661350aa --- apps/regression/calculation_controller.cpp | 2 +- apps/regression/calculation_controller.h | 3 ++- apps/shared/Makefile | 1 + .../editable_cell_table_view_controller.cpp | 2 +- .../editable_cell_table_view_controller.h | 3 ++- .../shared/regular_table_view_data_source.cpp | 22 +++++++++++++++++++ apps/shared/regular_table_view_data_source.h | 22 +++++++++++++++++++ apps/shared/tab_table_controller.cpp | 20 ++--------------- apps/shared/tab_table_controller.h | 12 +++++----- apps/statistics/calculation_controller.cpp | 2 +- apps/statistics/calculation_controller.h | 3 ++- 11 files changed, 61 insertions(+), 31 deletions(-) create mode 100644 apps/shared/regular_table_view_data_source.cpp create mode 100644 apps/shared/regular_table_view_data_source.h diff --git a/apps/regression/calculation_controller.cpp b/apps/regression/calculation_controller.cpp index 0440a9953..c779ebf07 100644 --- a/apps/regression/calculation_controller.cpp +++ b/apps/regression/calculation_controller.cpp @@ -12,7 +12,7 @@ using namespace Shared; namespace Regression { CalculationController::CalculationController(Responder * parentResponder, ButtonRowController * header, Store * store) : - TabTableController(parentResponder, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this, true), + TabTableController(parentResponder, this, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this, true), ButtonRowDelegate(header, nullptr), m_titleCells{EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small)}, diff --git a/apps/regression/calculation_controller.h b/apps/regression/calculation_controller.h index 70b370a12..17bed1b85 100644 --- a/apps/regression/calculation_controller.h +++ b/apps/regression/calculation_controller.h @@ -5,10 +5,11 @@ #include "store.h" #include "even_odd_double_buffer_text_cell.h" #include "../shared/tab_table_controller.h" +#include "../shared/regular_table_view_data_source.h" namespace Regression { -class CalculationController : public Shared::TabTableController, public ButtonRowDelegate, public AlternateEmptyViewDelegate, public SelectableTableViewDelegate { +class CalculationController : public Shared::TabTableController, public Shared::RegularTableViewDataSource, public ButtonRowDelegate, public AlternateEmptyViewDelegate, public SelectableTableViewDelegate { public: CalculationController(Responder * parentResponder, ButtonRowController * header, Store * store); diff --git a/apps/shared/Makefile b/apps/shared/Makefile index 06d43bb88..9b0423dd8 100644 --- a/apps/shared/Makefile +++ b/apps/shared/Makefile @@ -27,6 +27,7 @@ app_objs += $(addprefix apps/shared/,\ new_function_cell.o\ ok_view.o\ range_parameter_controller.o\ + regular_table_view_data_source.o\ store_controller.o\ store_parameter_controller.o\ tab_table_controller.o\ diff --git a/apps/shared/editable_cell_table_view_controller.cpp b/apps/shared/editable_cell_table_view_controller.cpp index 347483fbc..c890503df 100644 --- a/apps/shared/editable_cell_table_view_controller.cpp +++ b/apps/shared/editable_cell_table_view_controller.cpp @@ -10,7 +10,7 @@ namespace Shared { EditableCellTableViewController::EditableCellTableViewController(Responder * parentResponder, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin) : - TabTableController(parentResponder, topMargin, rightMargin, bottomMargin, leftMargin, this, true) + TabTableController(parentResponder, this, topMargin, rightMargin, bottomMargin, leftMargin, this, true) { } diff --git a/apps/shared/editable_cell_table_view_controller.h b/apps/shared/editable_cell_table_view_controller.h index 80dbcd275..9702ec8aa 100644 --- a/apps/shared/editable_cell_table_view_controller.h +++ b/apps/shared/editable_cell_table_view_controller.h @@ -5,10 +5,11 @@ #include #include "text_field_delegate.h" #include "tab_table_controller.h" +#include "regular_table_view_data_source.h" namespace Shared { -class EditableCellTableViewController : public TabTableController , public SelectableTableViewDelegate, public TextFieldDelegate { +class EditableCellTableViewController : public TabTableController , public RegularTableViewDataSource, public SelectableTableViewDelegate, public TextFieldDelegate { public: EditableCellTableViewController(Responder * parentResponder, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin); diff --git a/apps/shared/regular_table_view_data_source.cpp b/apps/shared/regular_table_view_data_source.cpp new file mode 100644 index 000000000..10ed8b479 --- /dev/null +++ b/apps/shared/regular_table_view_data_source.cpp @@ -0,0 +1,22 @@ +#include "regular_table_view_data_source.h" + +namespace Shared { + +KDCoordinate RegularTableViewDataSource::cumulatedWidthFromIndex(int i) { + return i*columnWidth(0); +} + +KDCoordinate RegularTableViewDataSource::cumulatedHeightFromIndex(int j) { + return j*rowHeight(0); +} + +int RegularTableViewDataSource::indexFromCumulatedWidth(KDCoordinate offsetX) { + return (offsetX-1) / columnWidth(0); +} + +int RegularTableViewDataSource::indexFromCumulatedHeight(KDCoordinate offsetY) { + return (offsetY-1) / rowHeight(0); +} + +} + diff --git a/apps/shared/regular_table_view_data_source.h b/apps/shared/regular_table_view_data_source.h new file mode 100644 index 000000000..86116e0f7 --- /dev/null +++ b/apps/shared/regular_table_view_data_source.h @@ -0,0 +1,22 @@ +#ifndef SHARED_REGULAR_TABLE_VIEW_DATA_SOURCE_H +#define SHARED_REGULAR_TABLE_VIEW_DATA_SOURCE_H + +#include + +namespace Shared { + +/* Regular table view data source is a table view data source with equal sized + * columns and equal sized rows */ + +class RegularTableViewDataSource : public TableViewDataSource { +public: + KDCoordinate cumulatedHeightFromIndex(int j) override; + int indexFromCumulatedHeight(KDCoordinate offsetY) override; + KDCoordinate cumulatedWidthFromIndex(int i) override; + int indexFromCumulatedWidth(KDCoordinate offsetX) override; +}; + +} + +#endif + diff --git a/apps/shared/tab_table_controller.cpp b/apps/shared/tab_table_controller.cpp index 3c6ff7233..c983a4a2a 100644 --- a/apps/shared/tab_table_controller.cpp +++ b/apps/shared/tab_table_controller.cpp @@ -2,10 +2,10 @@ namespace Shared { -TabTableController::TabTableController(Responder * parentResponder, KDCoordinate topMargin, +TabTableController::TabTableController(Responder * parentResponder, TableViewDataSource * dataSource, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin, SelectableTableViewDelegate * delegate, bool showIndicators) : ViewController(parentResponder), - m_selectableTableView(SelectableTableView(this, this, 0, topMargin, rightMargin, bottomMargin, leftMargin, + m_selectableTableView(SelectableTableView(this, dataSource, 0, topMargin, rightMargin, bottomMargin, leftMargin, delegate, showIndicators, true, Palette::WallScreenDark)) { } @@ -18,22 +18,6 @@ void TabTableController::didBecomeFirstResponder() { app()->setFirstResponder(&m_selectableTableView); } -KDCoordinate TabTableController::cumulatedWidthFromIndex(int i) { - return i*columnWidth(0); -} - -KDCoordinate TabTableController::cumulatedHeightFromIndex(int j) { - return j*rowHeight(0); -} - -int TabTableController::indexFromCumulatedWidth(KDCoordinate offsetX) { - return (offsetX-1) / columnWidth(0); -} - -int TabTableController::indexFromCumulatedHeight(KDCoordinate offsetY) { - return (offsetY-1) / rowHeight(0); -} - void TabTableController::viewWillAppear() { m_selectableTableView.reloadData(); } diff --git a/apps/shared/tab_table_controller.h b/apps/shared/tab_table_controller.h index 3aa531b49..317c0bbdd 100644 --- a/apps/shared/tab_table_controller.h +++ b/apps/shared/tab_table_controller.h @@ -5,16 +5,14 @@ namespace Shared { -class TabTableController : public ViewController, public TableViewDataSource { +/* Tab table controller is a controller whose view is a selectable table view + * and whose one ancestor is a tab */ + +class TabTableController : public ViewController { public: - TabTableController(Responder * parentResponder, KDCoordinate topMargin, + TabTableController(Responder * parentResponder, TableViewDataSource * dataSource, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin, SelectableTableViewDelegate * delegate, bool showIndicators); virtual View * view() override; - - KDCoordinate cumulatedHeightFromIndex(int j) override; - int indexFromCumulatedHeight(KDCoordinate offsetY) override; - KDCoordinate cumulatedWidthFromIndex(int i) override; - int indexFromCumulatedWidth(KDCoordinate offsetX) override; void didBecomeFirstResponder() override; void viewWillAppear() override; void willExitResponderChain(Responder * nextFirstResponder) override; diff --git a/apps/statistics/calculation_controller.cpp b/apps/statistics/calculation_controller.cpp index 523b4e10d..abea8e13b 100644 --- a/apps/statistics/calculation_controller.cpp +++ b/apps/statistics/calculation_controller.cpp @@ -11,7 +11,7 @@ using namespace Poincare; namespace Statistics { CalculationController::CalculationController(Responder * parentResponder, ButtonRowController * header, Store * store) : - TabTableController(parentResponder, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, nullptr, true), + TabTableController(parentResponder, this, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, nullptr, true), ButtonRowDelegate(header, nullptr), m_titleCells{EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small), EvenOddMessageTextCell(KDText::FontSize::Small)}, diff --git a/apps/statistics/calculation_controller.h b/apps/statistics/calculation_controller.h index 790be3b3c..1fbbdc8d9 100644 --- a/apps/statistics/calculation_controller.h +++ b/apps/statistics/calculation_controller.h @@ -4,11 +4,12 @@ #include #include "store.h" #include "../shared/tab_table_controller.h" +#include "../shared/regular_table_view_data_source.h" namespace Statistics { -class CalculationController : public Shared::TabTableController, public ButtonRowDelegate, public AlternateEmptyViewDelegate { +class CalculationController : public Shared::TabTableController, public Shared::RegularTableViewDataSource, public ButtonRowDelegate, public AlternateEmptyViewDelegate { public: CalculationController(Responder * parentResponder, ButtonRowController * header, Store * store);