[escher] Divide class selectable table view delegate in 2: selectable

table view data source & selectable table view delegate

Change-Id: I90fbd61e271db3754c13bd0069b95c2026de6814
This commit is contained in:
Émilie Feral
2017-05-17 17:03:03 +02:00
parent 71284311bb
commit af4d6b6e81
54 changed files with 153 additions and 136 deletions

View File

@@ -181,7 +181,7 @@ CalculationSelectableTableView * HistoryController::selectableTableView() {
} }
View * HistoryController::loadView() { 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++) { for (int i = 0; i < k_maxNumberOfDisplayedRows; i++) {
m_calculationHistory[i] = new HistoryViewCell(tableView); m_calculationHistory[i] = new HistoryViewCell(tableView);
} }

View File

@@ -11,7 +11,7 @@ namespace Calculation {
class App; class App;
class HistoryController : public DynamicViewController, public ListViewDataSource, public SelectableTableViewDelegate { class HistoryController : public DynamicViewController, public ListViewDataSource, public SelectableTableViewDataSource, public SelectableTableViewDelegate {
public: public:
HistoryController(Responder * parentResponder, CalculationStore * calculationStore); HistoryController(Responder * parentResponder, CalculationStore * calculationStore);

View File

@@ -5,7 +5,7 @@
namespace Calculation { namespace Calculation {
class ScrollableExpressionView : public ScrollableView, public ScrollViewDelegate { class ScrollableExpressionView : public ScrollableView, public ScrollViewDataSource {
public: public:
ScrollableExpressionView(Responder * parentResponder); ScrollableExpressionView(Responder * parentResponder);
void setExpression(Poincare::ExpressionLayout * expressionLayout); void setExpression(Poincare::ExpressionLayout * expressionLayout);

View File

@@ -3,8 +3,8 @@
namespace Calculation { namespace Calculation {
CalculationSelectableTableView::CalculationSelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, CalculationSelectableTableView::CalculationSelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource,
SelectableTableViewDelegate * delegate) : SelectableTableViewDataSource * selectionDataSource, SelectableTableViewDelegate * delegate) :
::SelectableTableView(parentResponder, dataSource, 0, 0, 0, 0, 0, 0, delegate, false) ::SelectableTableView(parentResponder, dataSource, 0, 0, 0, 0, 0, 0, selectionDataSource, delegate, false)
{ {
} }

View File

@@ -8,7 +8,7 @@ namespace Calculation {
class CalculationSelectableTableView : public ::SelectableTableView { class CalculationSelectableTableView : public ::SelectableTableView {
public: public:
CalculationSelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, CalculationSelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource,
SelectableTableViewDelegate * delegate = nullptr); SelectableTableViewDataSource * selectionDataSource, SelectableTableViewDelegate * delegate = nullptr);
void scrollToCell(int i, int j) override; void scrollToCell(int i, int j) override;
void scrollToSubviewOfTypeOfCellAtLocation(HistoryViewCell::SubviewType subviewType, int i, int j); void scrollToSubviewOfTypeOfCellAtLocation(HistoryViewCell::SubviewType subviewType, int i, int j);
}; };

View File

@@ -8,7 +8,7 @@ namespace Graph {
class ValuesController; class ValuesController;
class DerivativeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class DerivativeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
DerivativeParameterController(ValuesController * valuesController); DerivativeParameterController(ValuesController * valuesController);

View File

@@ -7,7 +7,7 @@ extern "C" {
namespace Home { namespace Home {
Controller::ContentView::ContentView(Controller * controller) : 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) KDColorBlack, k_indicatorThickness, Palette::GreyDark, Palette::GreyMiddle, k_indicatorMargin)
{ {
} }

View File

@@ -8,7 +8,7 @@ class AppsContainer;
namespace Home { namespace Home {
class Controller : public ViewController, public SimpleTableViewDataSource, public SelectableTableViewDelegate { class Controller : public ViewController, public SimpleTableViewDataSource, public SelectableTableViewDataSource, public SelectableTableViewDelegate {
public: public:
Controller(Responder * parentResponder, ::AppsContainer * container); Controller(Responder * parentResponder, ::AppsContainer * container);

View File

@@ -134,7 +134,7 @@ void MathToolbox::ListController::setFirstSelectedRow(int firstSelectedRow) {
MathToolbox::MathToolbox() : MathToolbox::MathToolbox() :
Toolbox(nullptr, &m_listController), 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_listController(this, &m_selectableTableView),
m_nodeModel(nullptr) m_nodeModel(nullptr)
{ {

View File

@@ -8,7 +8,7 @@
* where we are located. It enables to know which rows are leaves and which are * where we are located. It enables to know which rows are leaves and which are
* subtrees. */ * subtrees. */
class MathToolbox : public Toolbox, public ListViewDataSource, public SelectableTableViewDelegate { class MathToolbox : public Toolbox, public ListViewDataSource, public SelectableTableViewDataSource {
public: public:
MathToolbox(); MathToolbox();
void didBecomeFirstResponder() override; void didBecomeFirstResponder() override;

View File

@@ -8,7 +8,7 @@
namespace OnBoarding { namespace OnBoarding {
class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class LanguageController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController); LanguageController(Responder * parentResponder, LogoController * logoController, UpdateController * updateController);
View * view() override; View * view() override;

View File

@@ -56,7 +56,7 @@ void ImageCell::setImage(const Image * image, const Image * focusedImage) {
ImageTableView::ImageTableView(Responder * parentResponder, Calculation * calculation, CalculationController * calculationController) : ImageTableView::ImageTableView(Responder * parentResponder, Calculation * calculation, CalculationController * calculationController) :
View(), View(),
Responder(parentResponder), 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_isSelected(false),
m_selectedIcon(0), m_selectedIcon(0),
m_calculation(calculation), m_calculation(calculation),

View File

@@ -26,7 +26,7 @@ private:
const Image * m_focusedIcon; 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: public:
ImageTableView(Responder * parentResponder, Calculation * calculation, CalculationController * calculationController); ImageTableView(Responder * parentResponder, Calculation * calculation, CalculationController * calculationController);
void setCalculation(Calculation * calculation, int index); void setCalculation(Calculation * calculation, int index);

View File

@@ -8,7 +8,7 @@
namespace Probability { namespace Probability {
class LawController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class LawController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
LawController(Responder * parentResponder); LawController(Responder * parentResponder);
~LawController(); ~LawController();

View File

@@ -7,7 +7,7 @@
namespace Regression { namespace Regression {
class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
InitialisationParameterController(Responder * parentResponder, Store * store); InitialisationParameterController(Responder * parentResponder, Store * store);
View * view() override; View * view() override;

View File

@@ -8,7 +8,7 @@
namespace Regression { namespace Regression {
class PredictionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class PredictionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
PredictionParameterController(Responder * parentResponder, Store * store, Shared::CurveViewCursor * cursor); PredictionParameterController(Responder * parentResponder, Store * store, Shared::CurveViewCursor * cursor);
View * view() override; View * view() override;

View File

@@ -15,7 +15,7 @@ TypeParameterController::TypeParameterController(Responder * parentResponder, Se
m_singleRecurrenceCell(I18n::Message::SingleRecurrence, cellLayout), m_singleRecurrenceCell(I18n::Message::SingleRecurrence, cellLayout),
m_doubleRecurenceCell(I18n::Message::DoubleRecurrence, cellLayout), m_doubleRecurenceCell(I18n::Message::DoubleRecurrence, cellLayout),
m_expressionLayouts{}, 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_sequenceStore(sequenceStore),
m_sequence(nullptr), m_sequence(nullptr),
m_listController(list) m_listController(list)

View File

@@ -8,7 +8,7 @@ namespace Sequence {
class ListController; class ListController;
class TypeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class TypeParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
TypeParameterController(Responder * parentResponder, SequenceStore * sequenceStore, ListController * list, TypeParameterController(Responder * parentResponder, SequenceStore * sequenceStore, ListController * list,
TableCell::Layout cellLayout, KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0, TableCell::Layout cellLayout, KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0,

View File

@@ -7,7 +7,7 @@
namespace Settings { namespace Settings {
class MainController : public ViewController, public ListViewDataSource, public SelectableTableViewDelegate { class MainController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource {
public: public:
MainController(Responder * parentResponder); MainController(Responder * parentResponder);
~MainController(); ~MainController();

View File

@@ -6,7 +6,7 @@
namespace Settings { namespace Settings {
class SubController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class SubController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
SubController(Responder * parentResponder); SubController(Responder * parentResponder);
~SubController(); ~SubController();

View File

@@ -189,7 +189,7 @@ I18n::Message FloatParameterController::okButtonText() {
} }
View * FloatParameterController::loadView() { 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) { m_okButton = new ButtonWithSeparator(tableView, okButtonText(), Invocation([](void * context, void * sender) {
FloatParameterController * parameterController = (FloatParameterController *) context; FloatParameterController * parameterController = (FloatParameterController *) context;
parameterController->buttonAction(); parameterController->buttonAction();

View File

@@ -10,7 +10,7 @@ namespace Shared {
/* This controller edits float parameter of any model (given through /* This controller edits float parameter of any model (given through
* parameterAtIndex and setParameterAtIndex). */ * 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: public:
FloatParameterController(Responder * parentResponder); FloatParameterController(Responder * parentResponder);
void didBecomeFirstResponder() override; void didBecomeFirstResponder() override;

View File

@@ -9,7 +9,7 @@
namespace Shared { namespace Shared {
class FunctionCurveParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class FunctionCurveParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
FunctionCurveParameterController(InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor); FunctionCurveParameterController(InteractiveCurveViewRange * graphRange, CurveViewCursor * cursor);
View * view() override; View * view() override;

View File

@@ -7,7 +7,7 @@
namespace Shared { namespace Shared {
class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class InitialisationParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
InitialisationParameterController(Responder * parentResponder, Shared::InteractiveCurveViewRange * graphRange); InitialisationParameterController(Responder * parentResponder, Shared::InteractiveCurveViewRange * graphRange);
View * view() override; View * view() override;

View File

@@ -294,7 +294,7 @@ bool ListController::removeFunctionRow(Function * function) {
View * ListController::loadView() { View * ListController::loadView() {
m_emptyCell = new EvenOddCell(); m_emptyCell = new EvenOddCell();
m_addNewFunction = new NewFunctionCell(m_addNewMessage); 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) { void ListController::unloadView(View * view) {

View File

@@ -9,7 +9,7 @@
namespace Shared { namespace Shared {
class ListController : public DynamicViewController, public ButtonRowDelegate, public TableViewDataSource, public SelectableTableViewDelegate { class ListController : public DynamicViewController, public ButtonRowDelegate, public TableViewDataSource, public SelectableTableViewDataSource {
public: public:
ListController(Responder * parentResponder, FunctionStore * functionStore, ButtonRowController * header, ButtonRowController * footer, I18n::Message text); ListController(Responder * parentResponder, FunctionStore * functionStore, ButtonRowController * header, ButtonRowController * footer, I18n::Message text);
int numberOfColumns() override; int numberOfColumns() override;

View File

@@ -8,7 +8,7 @@
namespace Shared { namespace Shared {
class ListParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class ListParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
ListParameterController(Responder * parentResponder, FunctionStore * functionStore, I18n::Message functionColorMessage, I18n::Message deleteFunctionMessage); ListParameterController(Responder * parentResponder, FunctionStore * functionStore, I18n::Message functionColorMessage, I18n::Message deleteFunctionMessage);

View File

@@ -7,7 +7,7 @@
namespace Shared { namespace Shared {
class StoreParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class StoreParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
StoreParameterController(Responder * parentResponder, FloatPairStore * store); StoreParameterController(Responder * parentResponder, FloatPairStore * store);
void selectXColumn(bool xColumnSelected); void selectXColumn(bool xColumnSelected);

View File

@@ -29,7 +29,7 @@ SelectableTableView * TabTableController::selectableTableView() {
} }
View * TabTableController::loadView() { 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) { void TabTableController::unloadView(View * view) {

View File

@@ -8,7 +8,7 @@ namespace Shared {
/* Tab table controller is a controller whose view is a selectable table view /* Tab table controller is a controller whose view is a selectable table view
* and whose one ancestor is a tab */ * and whose one ancestor is a tab */
class TabTableController : public DynamicViewController, public SelectableTableViewDelegate { class TabTableController : public DynamicViewController, public SelectableTableViewDelegate, public SelectableTableViewDataSource {
public: public:
TabTableController(Responder * parentResponder, TableViewDataSource * dataSource); TabTableController(Responder * parentResponder, TableViewDataSource * dataSource);
void didBecomeFirstResponder() override; void didBecomeFirstResponder() override;

View File

@@ -296,7 +296,7 @@ float ValuesController::evaluationOfAbscissaAtColumn(float abscissa, int columnI
} }
View * ValuesController::loadView() { 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); m_abscissaTitleCell = new EvenOddMessageTextCell(KDText::FontSize::Small);
for (int i = 0; i < k_maxNumberOfAbscissaCells; i++) { for (int i = 0; i < k_maxNumberOfAbscissaCells; i++) {
m_abscissaCells[i] = new EvenOddEditableTextCell(tableView, this, m_draftTextBuffer, KDText::FontSize::Small); m_abscissaCells[i] = new EvenOddEditableTextCell(tableView, this, m_draftTextBuffer, KDText::FontSize::Small);

View File

@@ -7,7 +7,7 @@
namespace Shared { namespace Shared {
class ValuesFunctionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class ValuesFunctionParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
ValuesFunctionParameterController(char symbol); ValuesFunctionParameterController(char symbol);

View File

@@ -5,7 +5,7 @@
#include "interval_parameter_controller.h" #include "interval_parameter_controller.h"
namespace Shared { namespace Shared {
class ValuesParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDelegate { class ValuesParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
public: public:
ValuesParameterController(Responder * parentResponder, IntervalParameterController * intervalParameterController, I18n::Message title); ValuesParameterController(Responder * parentResponder, IntervalParameterController * intervalParameterController, I18n::Message title);

View File

@@ -12,7 +12,7 @@ VariableBoxController::ContentViewController::ContentViewController(Responder *
m_firstSelectedRow(0), m_firstSelectedRow(0),
m_previousSelectedRow(0), m_previousSelectedRow(0),
m_currentPage(Page::RootMenu), 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))
{ {
} }

View File

@@ -14,7 +14,7 @@ public:
void viewWillAppear() override; void viewWillAppear() override;
void viewDidDisappear() override; void viewDidDisappear() override;
private: private:
class ContentViewController : public ViewController, public ListViewDataSource, public SelectableTableViewDelegate { class ContentViewController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource {
public: public:
ContentViewController(Responder * parentResponder, Poincare::Context * context); ContentViewController(Responder * parentResponder, Poincare::Context * context);
View * view() override; View * view() override;

View File

@@ -40,10 +40,11 @@ objs += $(addprefix escher/src/,\
responder.o\ responder.o\
run_loop.o\ run_loop.o\
scroll_view.o\ scroll_view.o\
scroll_view_delegate.o\ scroll_view_data_source.o\
scroll_view_indicator.o\ scroll_view_indicator.o\
scrollable_view.o\ scrollable_view.o\
selectable_table_view.o\ selectable_table_view.o\
selectable_table_view_data_source.o\
selectable_table_view_delegate.o\ selectable_table_view_delegate.o\
simple_list_view_data_source.o\ simple_list_view_data_source.o\
simple_table_view_data_source.o\ simple_table_view_data_source.o\

View File

@@ -43,10 +43,11 @@
#include <escher/palette.h> #include <escher/palette.h>
#include <escher/responder.h> #include <escher/responder.h>
#include <escher/scroll_view.h> #include <escher/scroll_view.h>
#include <escher/scroll_view_delegate.h> #include <escher/scroll_view_data_source.h>
#include <escher/scroll_view_indicator.h> #include <escher/scroll_view_indicator.h>
#include <escher/scrollable_view.h> #include <escher/scrollable_view.h>
#include <escher/selectable_table_view.h> #include <escher/selectable_table_view.h>
#include <escher/selectable_table_view_data_source.h>
#include <escher/selectable_table_view_delegate.h> #include <escher/selectable_table_view_delegate.h>
#include <escher/simple_table_view_data_source.h> #include <escher/simple_table_view_data_source.h>
#include <escher/simple_list_view_data_source.h> #include <escher/simple_list_view_data_source.h>

View File

@@ -3,12 +3,12 @@
#include <escher/view.h> #include <escher/view.h>
#include <escher/scroll_view_indicator.h> #include <escher/scroll_view_indicator.h>
#include <escher/scroll_view_delegate.h> #include <escher/scroll_view_data_source.h>
#include <escher/palette.h> #include <escher/palette.h>
class ScrollView : public View { class ScrollView : public View {
public: 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, KDCoordinate bottomMargin = 0, KDCoordinate leftMargin = 0, bool showIndicators = true,
bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen, KDCoordinate indicatorThickness = 20, bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen, KDCoordinate indicatorThickness = 20,
KDColor indicatorColor = Palette::GreyDark, KDColor backgroundIndicatorColor = Palette::GreyMiddle, KDColor indicatorColor = Palette::GreyDark, KDColor backgroundIndicatorColor = Palette::GreyMiddle,
@@ -30,7 +30,7 @@ protected:
virtual void logAttributes(std::ostream &os) const override; virtual void logAttributes(std::ostream &os) const override;
#endif #endif
private: private:
ScrollViewDelegate * m_delegate; ScrollViewDataSource * m_dataSource;
int numberOfSubviews() const override; int numberOfSubviews() const override;
View * subviewAtIndex(int index) override; View * subviewAtIndex(int index) override;

View File

@@ -0,0 +1,15 @@
#ifndef ESCHER_SCROLL_VIEW_DATA_SOURCE_H
#define ESCHER_SCROLL_VIEW_DATA_SOURCE_H
#include <kandinsky.h>
class ScrollViewDataSource {
public:
ScrollViewDataSource();
KDPoint offset() const;
bool setOffset(KDPoint offset);
private:
KDPoint m_offset;
};
#endif

View File

@@ -1,15 +0,0 @@
#ifndef ESCHER_SCROLL_VIEW_DELEGATE_H
#define ESCHER_SCROLL_VIEW_DELEGATE_H
#include <kandinsky.h>
class ScrollViewDelegate {
public:
ScrollViewDelegate();
KDPoint offset() const;
bool setOffset(KDPoint offset);
private:
KDPoint m_offset;
};
#endif

View File

@@ -6,7 +6,7 @@
class ScrollableView : public Responder, public ScrollView { class ScrollableView : public Responder, public ScrollView {
public: public:
ScrollableView(Responder * parentResponder, View * view, ScrollViewDelegate * delegate); ScrollableView(Responder * parentResponder, View * view, ScrollViewDataSource * dataSource);
bool handleEvent(Ion::Events::Event event) override; bool handleEvent(Ion::Events::Event event) override;
void reloadScroll(); void reloadScroll();
protected: protected:

View File

@@ -3,6 +3,7 @@
#include <escher/table_view.h> #include <escher/table_view.h>
#include <escher/app.h> #include <escher/app.h>
#include <escher/selectable_table_view_data_source.h>
#include <escher/selectable_table_view_delegate.h> #include <escher/selectable_table_view_delegate.h>
#include <escher/table_view_data_source.h> #include <escher/table_view_data_source.h>
#include <escher/palette.h> #include <escher/palette.h>
@@ -18,7 +19,7 @@ class SelectableTableView : public TableView, public Responder {
public: public:
SelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, SelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping,
KDCoordinate topMargin = 0, KDCoordinate rightMargin = 0, KDCoordinate bottomMargin = 0, 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, bool showIndicators = true, bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen,
KDCoordinate indicatorThickness = 20, KDColor indicatorColor = Palette::GreyDark, KDCoordinate indicatorThickness = 20, KDColor indicatorColor = Palette::GreyDark,
KDColor backgroundIndicatorColor = Palette::GreyMiddle, KDCoordinate indicatorMargin = 14); KDColor backgroundIndicatorColor = Palette::GreyMiddle, KDCoordinate indicatorMargin = 14);
@@ -33,6 +34,7 @@ public:
bool selectCellAtLocation(int i, int j); bool selectCellAtLocation(int i, int j);
HighlightCell * selectedCell(); HighlightCell * selectedCell();
protected: protected:
SelectableTableViewDataSource * m_selectionDataSource;
SelectableTableViewDelegate * m_delegate; SelectableTableViewDelegate * m_delegate;
private: private:
void unhighlightSelectedCell(); void unhighlightSelectedCell();

View File

@@ -0,0 +1,21 @@
#ifndef ESCHER_SELECTABLE_TABLE_VIEW_DATA_SOURCE_H
#define ESCHER_SELECTABLE_TABLE_VIEW_DATA_SOURCE_H
#include <escher/scroll_view_data_source.h>
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

View File

@@ -1,22 +1,11 @@
#ifndef ESCHER_SELECTABLE_TABLE_VIEW_DELEGATE_H #ifndef ESCHER_SELECTABLE_TABLE_VIEW_DELEGATE_H
#define ESCHER_SELECTABLE_TABLE_VIEW_DELEGATE_H #define ESCHER_SELECTABLE_TABLE_VIEW_DELEGATE_H
#include <escher/scroll_view_delegate.h>
class SelectableTableView; class SelectableTableView;
class SelectableTableViewDelegate : public ScrollViewDelegate { class SelectableTableViewDelegate {
public: 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); virtual void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY);
private:
int m_selectedCellX;
int m_selectedCellY;
}; };
#endif #endif

View File

@@ -8,7 +8,7 @@
class TableView : public ScrollView { class TableView : public ScrollView {
public: 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, KDCoordinate rightMargin = 0, KDCoordinate bottomMargin = 0, KDCoordinate leftMargin = 0,
bool showIndicators = true, bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen, bool showIndicators = true, bool colorBackground = true, KDColor backgroundColor = Palette::WallScreen,
KDCoordinate indicatorThickness = 20, KDColor indicatorColor = Palette::GreyDark, KDCoordinate indicatorThickness = 20, KDColor indicatorColor = Palette::GreyDark,

View File

@@ -6,7 +6,7 @@
#include <escher/text_cursor_view.h> #include <escher/text_cursor_view.h>
#include <string.h> #include <string.h>
class TextField : public ScrollableView, public ScrollViewDelegate { class TextField : public ScrollableView, public ScrollViewDataSource {
public: public:
TextField(Responder * parentResponder, char * textBuffer, char * draftTextBuffer, size_t textBufferSize, 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, TextFieldDelegate * delegate = nullptr, bool hasTwoBuffers = true, KDText::FontSize size = KDText::FontSize::Large, float horizontalAlignment = 0.0f,

View File

@@ -4,13 +4,13 @@ extern "C" {
#include <assert.h> #include <assert.h>
} }
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, KDCoordinate bottomMargin, KDCoordinate leftMargin, bool showIndicators, bool colorBackground,
KDColor backgroundColor, KDCoordinate indicatorThickness, KDColor indicatorColor, KDColor backgroundColor, KDCoordinate indicatorThickness, KDColor indicatorColor,
KDColor backgroundIndicatorColor, KDCoordinate indicatorMargin) : KDColor backgroundIndicatorColor, KDCoordinate indicatorMargin) :
View(), View(),
m_topMargin(topMargin), m_topMargin(topMargin),
m_delegate(delegate), m_dataSource(dataSource),
m_contentView(contentView), m_contentView(contentView),
m_verticalScrollIndicator(ScrollViewIndicator::Direction::Vertical, indicatorColor, backgroundIndicatorColor, indicatorMargin), m_verticalScrollIndicator(ScrollViewIndicator::Direction::Vertical, indicatorColor, backgroundIndicatorColor, indicatorMargin),
m_horizontalScrollIndicator(ScrollViewIndicator::Direction::Horizontal, 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_colorBackground(colorBackground),
m_backgroundColor(backgroundColor) m_backgroundColor(backgroundColor)
{ {
assert(m_delegate != nullptr); assert(m_dataSource != nullptr);
} }
bool ScrollView::hasVerticalIndicator() const { bool ScrollView::hasVerticalIndicator() const {
@@ -130,13 +130,13 @@ void ScrollView::updateScrollIndicator() {
} }
void ScrollView::setContentOffset(KDPoint offset) { void ScrollView::setContentOffset(KDPoint offset) {
if (m_delegate->setOffset(offset)) { if (m_dataSource->setOffset(offset)) {
layoutSubviews(); layoutSubviews();
} }
} }
KDPoint ScrollView::contentOffset() const { KDPoint ScrollView::contentOffset() const {
return m_delegate->offset(); return m_dataSource->offset();
} }
KDCoordinate ScrollView::topMargin() const { KDCoordinate ScrollView::topMargin() const {

View File

@@ -0,0 +1,19 @@
#include <escher/scroll_view_data_source.h>
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;
}

View File

@@ -1,19 +0,0 @@
#include <escher/scroll_view_delegate.h>
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;
}

View File

@@ -2,9 +2,9 @@
#include <escher/metric.h> #include <escher/metric.h>
#include <assert.h> #include <assert.h>
ScrollableView::ScrollableView(Responder * parentResponder, View * view, ScrollViewDelegate * delegate) : ScrollableView::ScrollableView(Responder * parentResponder, View * view, ScrollViewDataSource * dataSource) :
Responder(parentResponder), Responder(parentResponder),
ScrollView(view, delegate, 0, 0, 0, 0, false, false), ScrollView(view, dataSource, 0, 0, 0, 0, false, false),
m_manualScrolling(0) m_manualScrolling(0)
{ {
} }

View File

@@ -2,35 +2,38 @@
#include <assert.h> #include <assert.h>
SelectableTableView::SelectableTableView(Responder * parentResponder, TableViewDataSource * dataSource, KDCoordinate horizontalCellOverlapping, KDCoordinate verticalCellOverlapping, KDCoordinate topMargin, KDCoordinate rightMargin, KDCoordinate bottomMargin, KDCoordinate leftMargin, 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) : 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), indicatorThickness, indicatorColor, backgroundIndicatorColor, indicatorMargin),
Responder(parentResponder), Responder(parentResponder),
m_selectionDataSource(selectionDataSource),
m_delegate(delegate) m_delegate(delegate)
{ {
assert(m_delegate != nullptr); assert(m_selectionDataSource != nullptr);
} }
int SelectableTableView::selectedRow() { int SelectableTableView::selectedRow() {
return m_delegate->selectedRow(); return m_selectionDataSource->selectedRow();
} }
int SelectableTableView::selectedColumn() { int SelectableTableView::selectedColumn() {
return m_delegate->selectedColumn(); return m_selectionDataSource->selectedColumn();
} }
void SelectableTableView::selectRow(int j) { void SelectableTableView::selectRow(int j) {
m_delegate->selectRow(j); m_selectionDataSource->selectRow(j);
} }
void SelectableTableView::selectColumn(int i) { void SelectableTableView::selectColumn(int i) {
m_delegate->selectColumn(i); m_selectionDataSource->selectColumn(i);
} }
void SelectableTableView::didEnterResponderChain(Responder * previousFirstResponder) { void SelectableTableView::didEnterResponderChain(Responder * previousFirstResponder) {
selectCellAtLocation(selectedColumn(), selectedRow()); selectCellAtLocation(selectedColumn(), selectedRow());
m_delegate->tableViewDidChangeSelection(this, 0, -1); if (m_delegate) {
m_delegate->tableViewDidChangeSelection(this, 0, -1);
}
} }
void SelectableTableView::willExitResponderChain(Responder * nextFirstResponder) { void SelectableTableView::willExitResponderChain(Responder * nextFirstResponder) {

View File

@@ -0,0 +1,28 @@
#include <escher/selectable_table_view_data_source.h>
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;
}

View File

@@ -1,32 +1,4 @@
#include <escher/selectable_table_view_delegate.h> #include <escher/selectable_table_view_delegate.h>
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) { void SelectableTableViewDelegate::tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY) {
} }

View File

@@ -7,11 +7,11 @@ extern "C" {
#define MIN(x,y) ((x)<(y) ? (x) : (y)) #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, KDCoordinate bottomMargin, KDCoordinate leftMargin, bool showIndicators, bool colorBackground,
KDColor backgroundColor, KDCoordinate indicatorThickness, KDColor indicatorColor, KDColor backgroundColor, KDCoordinate indicatorThickness, KDColor indicatorColor,
KDColor backgroundIndicatorColor, KDCoordinate indicatorMargin) : 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), backgroundColor, indicatorThickness, indicatorColor, backgroundIndicatorColor, indicatorMargin),
m_contentView(this, dataSource, horizontalCellOverlapping, verticalCellOverlapping) m_contentView(this, dataSource, horizontalCellOverlapping, verticalCellOverlapping)
{ {