diff --git a/escher/include/escher/childless_view.h b/escher/include/escher/childless_view.h new file mode 100644 index 000000000..2d09740c1 --- /dev/null +++ b/escher/include/escher/childless_view.h @@ -0,0 +1,12 @@ +#ifndef ESCHER_CHILDLESS_VIEW_H +#define ESCHER_CHILDLESS_VIEW_H + +#include + +class ChildlessView : public View { +protected: + int numberOfSubviews() override; + View * subview(int index) override; +}; + +#endif diff --git a/escher/include/escher/text_view.h b/escher/include/escher/text_view.h index 0dcb108a9..3ec4281a6 100644 --- a/escher/include/escher/text_view.h +++ b/escher/include/escher/text_view.h @@ -1,7 +1,7 @@ #ifndef ESCHER_TEXT_VIEW_H #define ESCHER_TEXT_VIEW_H -#include +#include class TextView : public View { public: diff --git a/escher/include/escher/view.h b/escher/include/escher/view.h index 19c1db0ea..aa92e020a 100644 --- a/escher/include/escher/view.h +++ b/escher/include/escher/view.h @@ -22,20 +22,25 @@ public: virtual void drawRect(KDRect rect); // To be implemented. Draw ourself. - void addSubview(View * subview); - void removeFromSuperview(); + //void addSubview(View * subview); + //void removeFromSuperview(); void setFrame(KDRect frame); protected: KDRect bounds(); + virtual int numberOfSubviews() = 0; + virtual View * subview(int index) = 0; private: void redraw(); void redraw(KDRect rect); KDRect absoluteDrawingArea(); - //TODO: We may want a dynamic size at some point - static constexpr uint8_t k_maxNumberOfSubviews = 4; - KDRect m_frame; + View * m_superview; + KDRect m_frame; + //TODO: We may want a dynamic size at some point + /* + static constexpr uint8_t k_maxNumberOfSubviews = 4; View * m_subviews[k_maxNumberOfSubviews]; + */ }; #endif diff --git a/escher/src/view.cpp b/escher/src/view.cpp index ec3c4382b..7049fed41 100644 --- a/escher/src/view.cpp +++ b/escher/src/view.cpp @@ -4,12 +4,14 @@ extern "C" { #include View::View(KDRect frame) : - m_frame(frame), - m_superview(nullptr) + m_superview(nullptr), + m_frame(frame) { + /* for (uint8_t i=0; idrawRect(rect); // Then, let's recursively draw our children over ourself - for (uint8_t i=0; isubview(i); if (subview == nullptr) { continue; } @@ -44,6 +46,7 @@ void View::redraw(KDRect rect) { } } +/* void View::addSubview(View * subview) { // Let's find a spot for that subview uint8_t i = 0; @@ -66,6 +69,7 @@ void View::removeFromSuperview() { // Then, redraw the parent m_superview->redraw(m_frame); } +*/ void View::setFrame(KDRect frame) { // TODO: Return if frame is equal to m_frame