From daee2998c556884c5abf16bf87cb84d5fd47cd8b Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Wed, 9 May 2018 17:14:04 +0200 Subject: [PATCH] [escher] Add a ScrollViewDelegate --- escher/include/escher/scroll_view_data_source.h | 15 +++++++++++++-- escher/include/escher/scrollable_view.h | 2 +- escher/src/scroll_view_data_source.cpp | 13 +++---------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/escher/include/escher/scroll_view_data_source.h b/escher/include/escher/scroll_view_data_source.h index 132888264..61a97aa87 100644 --- a/escher/include/escher/scroll_view_data_source.h +++ b/escher/include/escher/scroll_view_data_source.h @@ -3,12 +3,23 @@ #include +class ScrollViewDataSource; + +class ScrollViewDelegate { +public: + virtual void scrollViewDidChangeOffset(ScrollViewDataSource * scrollViewDataSource) = 0; +}; + class ScrollViewDataSource { public: - ScrollViewDataSource(); - KDPoint offset() const; + ScrollViewDataSource() : m_delegate(nullptr), m_offset(KDPointZero) {} + KDPoint offset() const { return m_offset; } bool setOffset(KDPoint offset); + void setScrollViewDelegate(ScrollViewDelegate * delegate) { + m_delegate = delegate; + } private: + ScrollViewDelegate * m_delegate; KDPoint m_offset; }; diff --git a/escher/include/escher/scrollable_view.h b/escher/include/escher/scrollable_view.h index a6b08bf36..73d6b7067 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, ScrollViewDataSource * dataSource); + ScrollableView(Responder * parentResponder, View * view, ScrollViewDataSource * dataSource); bool handleEvent(Ion::Events::Event event) override; void reloadScroll(bool forceRelayout = false); protected: diff --git a/escher/src/scroll_view_data_source.cpp b/escher/src/scroll_view_data_source.cpp index 334a06e00..3dbf32dc1 100644 --- a/escher/src/scroll_view_data_source.cpp +++ b/escher/src/scroll_view_data_source.cpp @@ -1,19 +1,12 @@ #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; + if (m_delegate) { + m_delegate->scrollViewDidChangeOffset(this); + } return true; } return false; } -