diff --git a/apps/calculation/history_controller.cpp b/apps/calculation/history_controller.cpp index 474bea9cd..1594a09b9 100644 --- a/apps/calculation/history_controller.cpp +++ b/apps/calculation/history_controller.cpp @@ -181,7 +181,7 @@ CalculationSelectableTableView * HistoryController::selectableTableView() { } View * HistoryController::loadView() { - CalculationSelectableTableView * tableView = new CalculationSelectableTableView(this, this, this); + CalculationSelectableTableView * tableView = new CalculationSelectableTableView(this, this, this, this); for (int i = 0; i < k_maxNumberOfDisplayedRows; i++) { m_calculationHistory[i] = new HistoryViewCell(tableView); } diff --git a/apps/calculation/history_controller.h b/apps/calculation/history_controller.h index 016b6c275..77a5537bc 100644 --- a/apps/calculation/history_controller.h +++ b/apps/calculation/history_controller.h @@ -11,7 +11,7 @@ namespace Calculation { class App; -class HistoryController : public DynamicViewController, public ListViewDataSource, public SelectableTableViewDelegate { +class HistoryController : public DynamicViewController, public ListViewDataSource, public SelectableTableViewDataSource, public SelectableTableViewDelegate { public: HistoryController(Responder * parentResponder, CalculationStore * calculationStore); diff --git a/apps/calculation/scrollable_expression_view.h b/apps/calculation/scrollable_expression_view.h index b0297cc22..d9f637709 100644 --- a/apps/calculation/scrollable_expression_view.h +++ b/apps/calculation/scrollable_expression_view.h @@ -5,7 +5,7 @@ namespace Calculation { -class ScrollableExpressionView : public ScrollableView, public ScrollViewDelegate { +class ScrollableExpressionView : public ScrollableView, public ScrollViewDataSource { public: ScrollableExpressionView(Responder * parentResponder); void setExpression(Poincare::ExpressionLayout * expressionLayout); diff --git a/apps/calculation/selectable_table_view.cpp b/apps/calculation/selectable_table_view.cpp index 76b319594..464d82d7d 100644 --- a/apps/calculation/selectable_table_view.cpp +++ b/apps/calculation/selectable_table_view.cpp @@ -3,8 +3,8 @@ namespace Calculation { CalculationSelectableTableView::CalculationSelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, - SelectableTableViewDelegate * delegate) : - ::SelectableTableView(parentResponder, dataSource, 0, 0, 0, 0, 0, 0, delegate, false) + SelectableTableViewDataSource * selectionDataSource, SelectableTableViewDelegate * delegate) : + ::SelectableTableView(parentResponder, dataSource, 0, 0, 0, 0, 0, 0, selectionDataSource, delegate, false) { } diff --git a/apps/calculation/selectable_table_view.h b/apps/calculation/selectable_table_view.h index d3074c638..795ddad0c 100644 --- a/apps/calculation/selectable_table_view.h +++ b/apps/calculation/selectable_table_view.h @@ -8,7 +8,7 @@ namespace Calculation { class CalculationSelectableTableView : public ::SelectableTableView { public: CalculationSelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, - SelectableTableViewDelegate * delegate = nullptr); + SelectableTableViewDataSource * selectionDataSource, SelectableTableViewDelegate * delegate = nullptr); void scrollToCell(int i, int j) override; void scrollToSubviewOfTypeOfCellAtLocation(HistoryViewCell::SubviewType subviewType, int i, int j); }; diff --git a/apps/graph/values/derivative_parameter_controller.h b/apps/graph/values/derivative_parameter_controller.h index a35284df1..9cc346053 100644 --- a/apps/graph/values/derivative_parameter_controller.h +++ b/apps/graph/values/derivative_parameter_controller.h @@ -8,7 +8,7 @@ namespace Graph { class ValuesController; -class DerivativeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class DerivativeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: DerivativeParameterController(ValuesController * valuesController); diff --git a/apps/home/controller.cpp b/apps/home/controller.cpp index bff5609d8..41b77e164 100644 --- a/apps/home/controller.cpp +++ b/apps/home/controller.cpp @@ -7,7 +7,7 @@ extern "C" { namespace Home { Controller::ContentView::ContentView(Controller * controller) : - m_selectableTableView(controller, controller, 0, 0, 0, k_sideMargin, 0, k_sideMargin, controller, true, false, + m_selectableTableView(controller, controller, 0, 0, 0, k_sideMargin, 0, k_sideMargin, controller, controller, true, false, KDColorBlack, k_indicatorThickness, Palette::GreyDark, Palette::GreyMiddle, k_indicatorMargin) { } diff --git a/apps/home/controller.h b/apps/home/controller.h index 8be2d924b..c72c91534 100644 --- a/apps/home/controller.h +++ b/apps/home/controller.h @@ -8,7 +8,7 @@ class AppsContainer; namespace Home { -class Controller : public ViewController, public SimpleTableViewDataSource, public SelectableTableViewDelegate { +class Controller : public ViewController, public SimpleTableViewDataSource, public SelectableTableViewDataSource, public SelectableTableViewDelegate { public: Controller(Responder * parentResponder, ::AppsContainer * container); diff --git a/apps/math_toolbox.cpp b/apps/math_toolbox.cpp index a00e0baf6..92a11e331 100644 --- a/apps/math_toolbox.cpp +++ b/apps/math_toolbox.cpp @@ -134,7 +134,7 @@ void MathToolbox::ListController::setFirstSelectedRow(int firstSelectedRow) { MathToolbox::MathToolbox() : Toolbox(nullptr, &m_listController), - m_selectableTableView(SelectableTableView(&m_listController, this, 0, 1, 0, 0, 0, 0, this, false)), + m_selectableTableView(SelectableTableView(&m_listController, this, 0, 1, 0, 0, 0, 0, this, nullptr, false)), m_listController(this, &m_selectableTableView), m_nodeModel(nullptr) { diff --git a/apps/math_toolbox.h b/apps/math_toolbox.h index c7b567001..65d94129b 100644 --- a/apps/math_toolbox.h +++ b/apps/math_toolbox.h @@ -8,7 +8,7 @@ * where we are located. It enables to know which rows are leaves and which are * subtrees. */ -class MathToolbox : public Toolbox, public ListViewDataSource, public SelectableTableViewDelegate { +class MathToolbox : public Toolbox, public ListViewDataSource, public SelectableTableViewDataSource { public: MathToolbox(); void didBecomeFirstResponder() override; diff --git a/apps/on_boarding/language_controller.h b/apps/on_boarding/language_controller.h index 9f0a4b2a7..cf98768e9 100644 --- a/apps/on_boarding/language_controller.h +++ b/apps/on_boarding/language_controller.h @@ -8,7 +8,7 @@ namespace OnBoarding { -class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController); View * view() override; diff --git a/apps/probability/image_table_view.cpp b/apps/probability/image_table_view.cpp index a86695b0e..6cccd1e7c 100644 --- a/apps/probability/image_table_view.cpp +++ b/apps/probability/image_table_view.cpp @@ -56,7 +56,7 @@ void ImageCell::setImage(const Image * image, const Image * focusedImage) { ImageTableView::ImageTableView(Responder * parentResponder, Calculation * calculation, CalculationController * calculationController) : View(), Responder(parentResponder), - m_selectableTableView(this, this, 0, 0, 0, 0, 0, 0, this, false, false), + m_selectableTableView(this, this, 0, 0, 0, 0, 0, 0, this, nullptr, false, false), m_isSelected(false), m_selectedIcon(0), m_calculation(calculation), diff --git a/apps/probability/image_table_view.h b/apps/probability/image_table_view.h index b31076a78..6c1bf7e3a 100644 --- a/apps/probability/image_table_view.h +++ b/apps/probability/image_table_view.h @@ -26,7 +26,7 @@ private: const Image * m_focusedIcon; }; -class ImageTableView : public View, public Responder, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class ImageTableView : public View, public Responder, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: ImageTableView(Responder * parentResponder, Calculation * calculation, CalculationController * calculationController); void setCalculation(Calculation * calculation, int index); diff --git a/apps/probability/law_controller.h b/apps/probability/law_controller.h index 0a075e93c..4cc84bff4 100644 --- a/apps/probability/law_controller.h +++ b/apps/probability/law_controller.h @@ -8,7 +8,7 @@ namespace Probability { -class LawController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class LawController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: LawController(Responder * parentResponder); ~LawController(); diff --git a/apps/regression/initialisation_parameter_controller.h b/apps/regression/initialisation_parameter_controller.h index 62bc91e09..efc69276e 100644 --- a/apps/regression/initialisation_parameter_controller.h +++ b/apps/regression/initialisation_parameter_controller.h @@ -7,7 +7,7 @@ namespace Regression { -class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: InitialisationParameterController(Responder * parentResponder, Store * store); View * view() override; diff --git a/apps/regression/prediction_parameter_controller.h b/apps/regression/prediction_parameter_controller.h index 566d0c656..ed4423590 100644 --- a/apps/regression/prediction_parameter_controller.h +++ b/apps/regression/prediction_parameter_controller.h @@ -8,7 +8,7 @@ namespace Regression { -class PredictionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class PredictionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: PredictionParameterController(Responder * parentResponder, Store * store, Shared::CurveViewCursor * cursor); View * view() override; diff --git a/apps/sequence/list/type_parameter_controller.cpp b/apps/sequence/list/type_parameter_controller.cpp index e3f87c756..b7f728558 100644 --- a/apps/sequence/list/type_parameter_controller.cpp +++ b/apps/sequence/list/type_parameter_controller.cpp @@ -15,7 +15,7 @@ TypeParameterController::TypeParameterController(Responder * parentResponder, Se m_singleRecurrenceCell(I18n::Message::SingleRecurrence, cellLayout), m_doubleRecurenceCell(I18n::Message::DoubleRecurrence, cellLayout), m_expressionLayouts{}, - m_selectableTableView(this, this, 0, 1, topMargin, rightMargin, bottomMargin, leftMargin, this, false), + m_selectableTableView(this, this, 0, 1, topMargin, rightMargin, bottomMargin, leftMargin, this, nullptr, false), m_sequenceStore(sequenceStore), m_sequence(nullptr), m_listController(list) diff --git a/apps/sequence/list/type_parameter_controller.h b/apps/sequence/list/type_parameter_controller.h index 5d1330cb7..090a65613 100644 --- a/apps/sequence/list/type_parameter_controller.h +++ b/apps/sequence/list/type_parameter_controller.h @@ -8,7 +8,7 @@ namespace Sequence { class ListController; -class TypeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class TypeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: TypeParameterController(Responder * parentResponder, SequenceStore * sequenceStore, ListController * list, TableCell::Layout cellLayout, KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0, diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h index cb527808b..c5fc15ae3 100644 --- a/apps/settings/main_controller.h +++ b/apps/settings/main_controller.h @@ -7,7 +7,7 @@ namespace Settings { -class MainController : public ViewController, public ListViewDataSource, public SelectableTableViewDelegate { +class MainController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource { public: MainController(Responder * parentResponder); ~MainController(); diff --git a/apps/settings/sub_controller.h b/apps/settings/sub_controller.h index 5243a6317..db4d5ed88 100644 --- a/apps/settings/sub_controller.h +++ b/apps/settings/sub_controller.h @@ -6,7 +6,7 @@ namespace Settings { -class SubController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class SubController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: SubController(Responder * parentResponder); ~SubController(); diff --git a/apps/shared/float_parameter_controller.cpp b/apps/shared/float_parameter_controller.cpp index be211a273..41bb61841 100644 --- a/apps/shared/float_parameter_controller.cpp +++ b/apps/shared/float_parameter_controller.cpp @@ -189,7 +189,7 @@ I18n::Message FloatParameterController::okButtonText() { } View * FloatParameterController::loadView() { - SelectableTableView * tableView = new SelectableTableView(this, this, 0, 1, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this); + SelectableTableView * tableView = new SelectableTableView(this, this, 0, 1, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this, this); m_okButton = new ButtonWithSeparator(tableView, okButtonText(), Invocation([](void * context, void * sender) { FloatParameterController * parameterController = (FloatParameterController *) context; parameterController->buttonAction(); diff --git a/apps/shared/float_parameter_controller.h b/apps/shared/float_parameter_controller.h index 88ff51cbd..4fb4696c7 100644 --- a/apps/shared/float_parameter_controller.h +++ b/apps/shared/float_parameter_controller.h @@ -10,7 +10,7 @@ namespace Shared { /* This controller edits float parameter of any model (given through * parameterAtIndex and setParameterAtIndex). */ -class FloatParameterController : public DynamicViewController, public ListViewDataSource, public SelectableTableViewDelegate, public TextFieldDelegate { +class FloatParameterController : public DynamicViewController, public ListViewDataSource, public SelectableTableViewDataSource, public SelectableTableViewDelegate, public TextFieldDelegate { public: FloatParameterController(Responder * parentResponder); void didBecomeFirstResponder() override; diff --git a/apps/shared/function_curve_parameter_controller.h b/apps/shared/function_curve_parameter_controller.h index d85f368c3..92a5580b5 100644 --- a/apps/shared/function_curve_parameter_controller.h +++ b/apps/shared/function_curve_parameter_controller.h @@ -9,7 +9,7 @@ namespace Shared { -class FunctionCurveParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class FunctionCurveParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: FunctionCurveParameterController(InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor); View * view() override; diff --git a/apps/shared/initialisation_parameter_controller.h b/apps/shared/initialisation_parameter_controller.h index c5b2aa594..46375df75 100644 --- a/apps/shared/initialisation_parameter_controller.h +++ b/apps/shared/initialisation_parameter_controller.h @@ -7,7 +7,7 @@ namespace Shared { -class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: InitialisationParameterController(Responder * parentResponder, Shared::InteractiveCurveViewRange * graphRange); View * view() override; diff --git a/apps/shared/list_controller.cpp b/apps/shared/list_controller.cpp index a64f288ae..0b8487d1d 100644 --- a/apps/shared/list_controller.cpp +++ b/apps/shared/list_controller.cpp @@ -294,7 +294,7 @@ bool ListController::removeFunctionRow(Function * function) { View * ListController::loadView() { m_emptyCell = new EvenOddCell(); m_addNewFunction = new NewFunctionCell(m_addNewMessage); - return new SelectableTableView(this, this, 0, 0, 0, 0, 0, 0, this, false, true); + return new SelectableTableView(this, this, 0, 0, 0, 0, 0, 0, this, nullptr, false, true); } void ListController::unloadView(View * view) { diff --git a/apps/shared/list_controller.h b/apps/shared/list_controller.h index 70628072d..02b6354cb 100644 --- a/apps/shared/list_controller.h +++ b/apps/shared/list_controller.h @@ -9,7 +9,7 @@ namespace Shared { -class ListController : public DynamicViewController, public ButtonRowDelegate, public TableViewDataSource, public SelectableTableViewDelegate { +class ListController : public DynamicViewController, public ButtonRowDelegate, public TableViewDataSource, public SelectableTableViewDataSource { public: ListController(Responder * parentResponder, FunctionStore * functionStore, ButtonRowController * header, ButtonRowController * footer, I18n::Message text); int numberOfColumns() override; diff --git a/apps/shared/list_parameter_controller.h b/apps/shared/list_parameter_controller.h index 6f937d0e9..68813b7a2 100644 --- a/apps/shared/list_parameter_controller.h +++ b/apps/shared/list_parameter_controller.h @@ -8,7 +8,7 @@ namespace Shared { -class ListParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class ListParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: ListParameterController(Responder * parentResponder, FunctionStore * functionStore, I18n::Message functionColorMessage, I18n::Message deleteFunctionMessage); diff --git a/apps/shared/store_parameter_controller.h b/apps/shared/store_parameter_controller.h index 6aa4dde93..e8e620b63 100644 --- a/apps/shared/store_parameter_controller.h +++ b/apps/shared/store_parameter_controller.h @@ -7,7 +7,7 @@ namespace Shared { -class StoreParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class StoreParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: StoreParameterController(Responder * parentResponder, FloatPairStore * store); void selectXColumn(bool xColumnSelected); diff --git a/apps/shared/tab_table_controller.cpp b/apps/shared/tab_table_controller.cpp index 9fa9933b1..e465ade7a 100644 --- a/apps/shared/tab_table_controller.cpp +++ b/apps/shared/tab_table_controller.cpp @@ -29,7 +29,7 @@ SelectableTableView * TabTableController::selectableTableView() { } View * TabTableController::loadView() { - return new SelectableTableView(this, m_dataSource, 0, 0, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this, true, true); + return new SelectableTableView(this, m_dataSource, 0, 0, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this, this, true, true); } void TabTableController::unloadView(View * view) { diff --git a/apps/shared/tab_table_controller.h b/apps/shared/tab_table_controller.h index 2bc04a382..43bfac994 100644 --- a/apps/shared/tab_table_controller.h +++ b/apps/shared/tab_table_controller.h @@ -8,7 +8,7 @@ namespace Shared { /* Tab table controller is a controller whose view is a selectable table view * and whose one ancestor is a tab */ -class TabTableController : public DynamicViewController, public SelectableTableViewDelegate { +class TabTableController : public DynamicViewController, public SelectableTableViewDelegate, public SelectableTableViewDataSource { public: TabTableController(Responder * parentResponder, TableViewDataSource * dataSource); void didBecomeFirstResponder() override; diff --git a/apps/shared/values_controller.cpp b/apps/shared/values_controller.cpp index 43b27ab83..14212c4d3 100644 --- a/apps/shared/values_controller.cpp +++ b/apps/shared/values_controller.cpp @@ -296,7 +296,7 @@ float ValuesController::evaluationOfAbscissaAtColumn(float abscissa, int columnI } View * ValuesController::loadView() { - SelectableTableView * tableView = new SelectableTableView(this, this, 0, 0, k_topMargin, k_rightMargin, k_bottomMargin, k_leftMargin, this, true, true, Palette::WallScreenDark, 13, Palette::GreyDark, Palette::GreyMiddle); + SelectableTableView * tableView = new SelectableTableView(this, this, 0, 0, k_topMargin, k_rightMargin, k_bottomMargin, k_leftMargin, this, this, true, true, Palette::WallScreenDark, 13, Palette::GreyDark, Palette::GreyMiddle); m_abscissaTitleCell = new EvenOddMessageTextCell(KDText::FontSize::Small); for (int i = 0; i < k_maxNumberOfAbscissaCells; i++) { m_abscissaCells[i] = new EvenOddEditableTextCell(tableView, this, m_draftTextBuffer, KDText::FontSize::Small); diff --git a/apps/shared/values_function_parameter_controller.h b/apps/shared/values_function_parameter_controller.h index fb0cab958..7fd5f017f 100644 --- a/apps/shared/values_function_parameter_controller.h +++ b/apps/shared/values_function_parameter_controller.h @@ -7,7 +7,7 @@ namespace Shared { -class ValuesFunctionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class ValuesFunctionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: ValuesFunctionParameterController(char symbol); diff --git a/apps/shared/values_parameter_controller.h b/apps/shared/values_parameter_controller.h index 0079c9851..9fbe48078 100644 --- a/apps/shared/values_parameter_controller.h +++ b/apps/shared/values_parameter_controller.h @@ -5,7 +5,7 @@ #include "interval_parameter_controller.h" namespace Shared { -class ValuesParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { +class ValuesParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: ValuesParameterController(Responder * parentResponder, IntervalParameterController * intervalParameterController, I18n::Message title); diff --git a/apps/variable_box_controller.cpp b/apps/variable_box_controller.cpp index e68dc72bb..1bcb66bc5 100644 --- a/apps/variable_box_controller.cpp +++ b/apps/variable_box_controller.cpp @@ -12,7 +12,7 @@ VariableBoxController::ContentViewController::ContentViewController(Responder * m_firstSelectedRow(0), m_previousSelectedRow(0), m_currentPage(Page::RootMenu), - m_selectableTableView(SelectableTableView(this, this, 0, 1, 0, 0, 0, 0, this, false)) + m_selectableTableView(SelectableTableView(this, this, 0, 1, 0, 0, 0, 0, this, nullptr, false)) { } diff --git a/apps/variable_box_controller.h b/apps/variable_box_controller.h index 12f0b9194..cdb00d496 100644 --- a/apps/variable_box_controller.h +++ b/apps/variable_box_controller.h @@ -14,7 +14,7 @@ public: void viewWillAppear() override; void viewDidDisappear() override; private: - class ContentViewController : public ViewController, public ListViewDataSource, public SelectableTableViewDelegate { + class ContentViewController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource { public: ContentViewController(Responder * parentResponder, Poincare::Context * context); View * view() override; diff --git a/escher/Makefile b/escher/Makefile index e2cfc065a..5d4e188d6 100644 --- a/escher/Makefile +++ b/escher/Makefile @@ -40,10 +40,11 @@ objs += $(addprefix escher/src/,\ responder.o\ run_loop.o\ scroll_view.o\ - scroll_view_delegate.o\ + scroll_view_data_source.o\ scroll_view_indicator.o\ scrollable_view.o\ selectable_table_view.o\ + selectable_table_view_data_source.o\ selectable_table_view_delegate.o\ simple_list_view_data_source.o\ simple_table_view_data_source.o\ diff --git a/escher/include/escher.h b/escher/include/escher.h index 88e8ce0fa..e2d74acb4 100644 --- a/escher/include/escher.h +++ b/escher/include/escher.h @@ -43,10 +43,11 @@ #include #include #include -#include +#include #include #include #include +#include #include #include #include diff --git a/escher/include/escher/scroll_view.h b/escher/include/escher/scroll_view.h index da9f627a4..fa792c3ff 100644 --- a/escher/include/escher/scroll_view.h +++ b/escher/include/escher/scroll_view.h @@ -3,12 +3,12 @@ #include #include -#include +#include #include class ScrollView : public View { public: - ScrollView(View * contentView, ScrollViewDelegate * delegate, KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0, + ScrollView(View * contentView, ScrollViewDataSource * dataSource, KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0, KDCoordinate bottomMargin = 0, KDCoordinate leftMargin = 0, bool showIndicators = true, bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen, KDCoordinate indicatorThickness = 20, KDColor indicatorColor = Palette::GreyDark, KDColor backgroundIndicatorColor = Palette::GreyMiddle, @@ -30,7 +30,7 @@ protected: virtual void logAttributes(std::ostream &os) const override; #endif private: - ScrollViewDelegate * m_delegate; + ScrollViewDataSource * m_dataSource; int numberOfSubviews() const override; View * subviewAtIndex(int index) override; diff --git a/escher/include/escher/scroll_view_data_source.h b/escher/include/escher/scroll_view_data_source.h new file mode 100644 index 000000000..132888264 --- /dev/null +++ b/escher/include/escher/scroll_view_data_source.h @@ -0,0 +1,15 @@ +#ifndef ESCHER_SCROLL_VIEW_DATA_SOURCE_H +#define ESCHER_SCROLL_VIEW_DATA_SOURCE_H + +#include + +class ScrollViewDataSource { +public: + ScrollViewDataSource(); + KDPoint offset() const; + bool setOffset(KDPoint offset); +private: + KDPoint m_offset; +}; + +#endif diff --git a/escher/include/escher/scroll_view_delegate.h b/escher/include/escher/scroll_view_delegate.h deleted file mode 100644 index 7ec8b215e..000000000 --- a/escher/include/escher/scroll_view_delegate.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef ESCHER_SCROLL_VIEW_DELEGATE_H -#define ESCHER_SCROLL_VIEW_DELEGATE_H - -#include - -class ScrollViewDelegate { -public: - ScrollViewDelegate(); - KDPoint offset() const; - bool setOffset(KDPoint offset); -private: - KDPoint m_offset; -}; - -#endif diff --git a/escher/include/escher/scrollable_view.h b/escher/include/escher/scrollable_view.h index b17803d2c..43965c692 100644 --- a/escher/include/escher/scrollable_view.h +++ b/escher/include/escher/scrollable_view.h @@ -6,7 +6,7 @@ class ScrollableView : public Responder, public ScrollView { public: - ScrollableView(Responder * parentResponder, View * view, ScrollViewDelegate * delegate); + ScrollableView(Responder * parentResponder, View * view, ScrollViewDataSource * dataSource); bool handleEvent(Ion::Events::Event event) override; void reloadScroll(); protected: diff --git a/escher/include/escher/selectable_table_view.h b/escher/include/escher/selectable_table_view.h index 2377427c0..f42c54e6d 100644 --- a/escher/include/escher/selectable_table_view.h +++ b/escher/include/escher/selectable_table_view.h @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -18,7 +19,7 @@ class SelectableTableView : public TableView, public Responder { public: SelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0, KDCoordinate bottomMargin = 0, - KDCoordinate leftMargin = 0, SelectableTableViewDelegate * delegate = nullptr, + KDCoordinate leftMargin = 0, SelectableTableViewDataSource * selectionDataSource = nullptr, SelectableTableViewDelegate * delegate = nullptr, bool showIndicators = true, bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen, KDCoordinate indicatorThickness = 20, KDColor indicatorColor = Palette::GreyDark, KDColor backgroundIndicatorColor = Palette::GreyMiddle, KDCoordinate indicatorMargin = 14); @@ -33,6 +34,7 @@ public: bool selectCellAtLocation(int i, int j); HighlightCell * selectedCell(); protected: + SelectableTableViewDataSource * m_selectionDataSource; SelectableTableViewDelegate * m_delegate; private: void unhighlightSelectedCell(); diff --git a/escher/include/escher/selectable_table_view_data_source.h b/escher/include/escher/selectable_table_view_data_source.h new file mode 100644 index 000000000..979b6357f --- /dev/null +++ b/escher/include/escher/selectable_table_view_data_source.h @@ -0,0 +1,21 @@ +#ifndef ESCHER_SELECTABLE_TABLE_VIEW_DATA_SOURCE_H +#define ESCHER_SELECTABLE_TABLE_VIEW_DATA_SOURCE_H + +#include + +class SelectableTableView; + +class SelectableTableViewDataSource : public ScrollViewDataSource { +public: + SelectableTableViewDataSource(); + int selectedRow(); + int selectedColumn(); + void selectRow(int j); + void selectColumn(int i); + void selectCellAtLocation(int i, int j); +private: + int m_selectedCellX; + int m_selectedCellY; +}; + +#endif diff --git a/escher/include/escher/selectable_table_view_delegate.h b/escher/include/escher/selectable_table_view_delegate.h index 7fdd78116..33249f3f9 100644 --- a/escher/include/escher/selectable_table_view_delegate.h +++ b/escher/include/escher/selectable_table_view_delegate.h @@ -1,22 +1,11 @@ #ifndef ESCHER_SELECTABLE_TABLE_VIEW_DELEGATE_H #define ESCHER_SELECTABLE_TABLE_VIEW_DELEGATE_H -#include - class SelectableTableView; -class SelectableTableViewDelegate : public ScrollViewDelegate { +class SelectableTableViewDelegate { public: - SelectableTableViewDelegate(); - int selectedRow(); - int selectedColumn(); - void selectRow(int j); - void selectColumn(int i); - void selectCellAtLocation(int i, int j); virtual void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY); -private: - int m_selectedCellX; - int m_selectedCellY; }; #endif diff --git a/escher/include/escher/table_view.h b/escher/include/escher/table_view.h index 191f4d705..a7a04551e 100644 --- a/escher/include/escher/table_view.h +++ b/escher/include/escher/table_view.h @@ -8,7 +8,7 @@ class TableView : public ScrollView { public: - TableView(TableViewDataSource * dataSource, ScrollViewDelegate * scrollDelegate, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, KDCoordinate topMargin = 0, + TableView(TableViewDataSource * dataSource, ScrollViewDataSource * scrollDataSource, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0, KDCoordinate bottomMargin = 0, KDCoordinate leftMargin = 0, bool showIndicators = true, bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen, KDCoordinate indicatorThickness = 20, KDColor indicatorColor = Palette::GreyDark, diff --git a/escher/include/escher/text_field.h b/escher/include/escher/text_field.h index b9d6e62dd..fc26b1142 100644 --- a/escher/include/escher/text_field.h +++ b/escher/include/escher/text_field.h @@ -6,7 +6,7 @@ #include #include -class TextField : public ScrollableView, public ScrollViewDelegate { +class TextField : public ScrollableView, public ScrollViewDataSource { public: TextField(Responder * parentResponder, char * textBuffer, char * draftTextBuffer, size_t textBufferSize, TextFieldDelegate * delegate = nullptr, bool hasTwoBuffers = true, KDText::FontSize size = KDText::FontSize::Large, float horizontalAlignment = 0.0f, diff --git a/escher/src/scroll_view.cpp b/escher/src/scroll_view.cpp index 8bf815446..f2cb4c9dd 100644 --- a/escher/src/scroll_view.cpp +++ b/escher/src/scroll_view.cpp @@ -4,13 +4,13 @@ extern "C" { #include } -ScrollView::ScrollView(View * contentView, ScrollViewDelegate * delegate, KDCoordinate topMargin, KDCoordinate rightMargin, +ScrollView::ScrollView(View * contentView, ScrollViewDataSource * dataSource, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin, bool showIndicators, bool colorBackground, KDColor backgroundColor, KDCoordinate indicatorThickness, KDColor indicatorColor, KDColor backgroundIndicatorColor, KDCoordinate indicatorMargin) : View(), m_topMargin(topMargin), - m_delegate(delegate), + m_dataSource(dataSource), m_contentView(contentView), m_verticalScrollIndicator(ScrollViewIndicator::Direction::Vertical, indicatorColor, backgroundIndicatorColor, indicatorMargin), m_horizontalScrollIndicator(ScrollViewIndicator::Direction::Horizontal, indicatorColor, backgroundIndicatorColor, indicatorMargin), @@ -22,7 +22,7 @@ ScrollView::ScrollView(View * contentView, ScrollViewDelegate * delegate, KDCoor m_colorBackground(colorBackground), m_backgroundColor(backgroundColor) { - assert(m_delegate != nullptr); + assert(m_dataSource != nullptr); } bool ScrollView::hasVerticalIndicator() const { @@ -130,13 +130,13 @@ void ScrollView::updateScrollIndicator() { } void ScrollView::setContentOffset(KDPoint offset) { - if (m_delegate->setOffset(offset)) { + if (m_dataSource->setOffset(offset)) { layoutSubviews(); } } KDPoint ScrollView::contentOffset() const { - return m_delegate->offset(); + return m_dataSource->offset(); } KDCoordinate ScrollView::topMargin() const { diff --git a/escher/src/scroll_view_data_source.cpp b/escher/src/scroll_view_data_source.cpp new file mode 100644 index 000000000..334a06e00 --- /dev/null +++ b/escher/src/scroll_view_data_source.cpp @@ -0,0 +1,19 @@ +#include + +ScrollViewDataSource::ScrollViewDataSource() : + m_offset(KDPointZero) +{ +} + +KDPoint ScrollViewDataSource::offset() const { + return m_offset; +} + +bool ScrollViewDataSource::setOffset(KDPoint offset) { + if (offset != m_offset) { + m_offset = offset; + return true; + } + return false; +} + diff --git a/escher/src/scroll_view_delegate.cpp b/escher/src/scroll_view_delegate.cpp deleted file mode 100644 index 0f7e011a3..000000000 --- a/escher/src/scroll_view_delegate.cpp +++ /dev/null @@ -1,19 +0,0 @@ -#include - -ScrollViewDelegate::ScrollViewDelegate() : - m_offset(KDPointZero) -{ -} - -KDPoint ScrollViewDelegate::offset() const { - return m_offset; -} - -bool ScrollViewDelegate::setOffset(KDPoint offset) { - if (offset != m_offset) { - m_offset = offset; - return true; - } - return false; -} - diff --git a/escher/src/scrollable_view.cpp b/escher/src/scrollable_view.cpp index 4d4e6da0a..abf8caf16 100644 --- a/escher/src/scrollable_view.cpp +++ b/escher/src/scrollable_view.cpp @@ -2,9 +2,9 @@ #include #include -ScrollableView::ScrollableView(Responder * parentResponder, View * view, ScrollViewDelegate * delegate) : +ScrollableView::ScrollableView(Responder * parentResponder, View * view, ScrollViewDataSource * dataSource) : Responder(parentResponder), - ScrollView(view, delegate, 0, 0, 0, 0, false, false), + ScrollView(view, dataSource, 0, 0, 0, 0, false, false), m_manualScrolling(0) { } diff --git a/escher/src/selectable_table_view.cpp b/escher/src/selectable_table_view.cpp index e95fe9172..b706d6495 100644 --- a/escher/src/selectable_table_view.cpp +++ b/escher/src/selectable_table_view.cpp @@ -2,35 +2,38 @@ #include SelectableTableView::SelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin, - SelectableTableViewDelegate * delegate, bool showIndicators, bool colorBackground, KDColor backgroundColor, + SelectableTableViewDataSource * selectionDataSource, SelectableTableViewDelegate * delegate, bool showIndicators, bool colorBackground, KDColor backgroundColor, KDCoordinate indicatorThickness, KDColor indicatorColor, KDColor backgroundIndicatorColor, KDCoordinate indicatorMargin) : - TableView(dataSource, delegate, horizontalCellOverlapping, verticalCellOverlapping, topMargin, rightMargin, bottomMargin, leftMargin, showIndicators, colorBackground, backgroundColor, + TableView(dataSource, selectionDataSource, horizontalCellOverlapping, verticalCellOverlapping, topMargin, rightMargin, bottomMargin, leftMargin, showIndicators, colorBackground, backgroundColor, indicatorThickness, indicatorColor, backgroundIndicatorColor, indicatorMargin), Responder(parentResponder), + m_selectionDataSource(selectionDataSource), m_delegate(delegate) { - assert(m_delegate != nullptr); + assert(m_selectionDataSource != nullptr); } int SelectableTableView::selectedRow() { - return m_delegate->selectedRow(); + return m_selectionDataSource->selectedRow(); } int SelectableTableView::selectedColumn() { - return m_delegate->selectedColumn(); + return m_selectionDataSource->selectedColumn(); } void SelectableTableView::selectRow(int j) { - m_delegate->selectRow(j); + m_selectionDataSource->selectRow(j); } void SelectableTableView::selectColumn(int i) { - m_delegate->selectColumn(i); + m_selectionDataSource->selectColumn(i); } void SelectableTableView::didEnterResponderChain(Responder * previousFirstResponder) { selectCellAtLocation(selectedColumn(), selectedRow()); - m_delegate->tableViewDidChangeSelection(this, 0, -1); + if (m_delegate) { + m_delegate->tableViewDidChangeSelection(this, 0, -1); + } } void SelectableTableView::willExitResponderChain(Responder * nextFirstResponder) { diff --git a/escher/src/selectable_table_view_data_source.cpp b/escher/src/selectable_table_view_data_source.cpp new file mode 100644 index 000000000..26ddc95d8 --- /dev/null +++ b/escher/src/selectable_table_view_data_source.cpp @@ -0,0 +1,28 @@ +#include + +SelectableTableViewDataSource::SelectableTableViewDataSource() : + m_selectedCellX(0), + m_selectedCellY(-1) +{ +} + +int SelectableTableViewDataSource::selectedRow() { + return m_selectedCellY; +} + +int SelectableTableViewDataSource::selectedColumn() { + return m_selectedCellX; +} + +void SelectableTableViewDataSource::selectRow(int j) { + m_selectedCellY = j; +} + +void SelectableTableViewDataSource::selectColumn(int i) { + m_selectedCellX = i; +} + +void SelectableTableViewDataSource::selectCellAtLocation(int i, int j) { + m_selectedCellX = i; + m_selectedCellY = j; +} diff --git a/escher/src/selectable_table_view_delegate.cpp b/escher/src/selectable_table_view_delegate.cpp index 98a28200f..3a8de3636 100644 --- a/escher/src/selectable_table_view_delegate.cpp +++ b/escher/src/selectable_table_view_delegate.cpp @@ -1,32 +1,4 @@ #include -SelectableTableViewDelegate::SelectableTableViewDelegate() : - m_selectedCellX(0), - m_selectedCellY(-1) -{ -} - -int SelectableTableViewDelegate::selectedRow() { - return m_selectedCellY; -} - -int SelectableTableViewDelegate::selectedColumn() { - return m_selectedCellX; -} - -void SelectableTableViewDelegate::selectRow(int j) { - m_selectedCellY = j; -} - -void SelectableTableViewDelegate::selectColumn(int i) { - m_selectedCellX = i; -} - -void SelectableTableViewDelegate::selectCellAtLocation(int i, int j) { - m_selectedCellX = i; - m_selectedCellY = j; -} - void SelectableTableViewDelegate::tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY) { } - diff --git a/escher/src/table_view.cpp b/escher/src/table_view.cpp index 97c4323d2..34f8de0eb 100644 --- a/escher/src/table_view.cpp +++ b/escher/src/table_view.cpp @@ -7,11 +7,11 @@ extern "C" { #define MIN(x,y) ((x)<(y) ? (x) : (y)) -TableView::TableView(TableViewDataSource * dataSource, ScrollViewDelegate * scrollDelegate, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, KDCoordinate topMargin, KDCoordinate rightMargin, +TableView::TableView(TableViewDataSource * dataSource, ScrollViewDataSource * scrollDataSource, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin, bool showIndicators, bool colorBackground, KDColor backgroundColor, KDCoordinate indicatorThickness, KDColor indicatorColor, KDColor backgroundIndicatorColor, KDCoordinate indicatorMargin) : - ScrollView(&m_contentView, scrollDelegate, topMargin, rightMargin, bottomMargin, leftMargin, showIndicators, colorBackground, + ScrollView(&m_contentView, scrollDataSource, topMargin, rightMargin, bottomMargin, leftMargin, showIndicators, colorBackground, backgroundColor, indicatorThickness, indicatorColor, backgroundIndicatorColor, indicatorMargin), m_contentView(this, dataSource, horizontalCellOverlapping, verticalCellOverlapping) {