diff --git a/apps/graph/graph/banner_view.cpp b/apps/graph/graph/banner_view.cpp index 5bc3b19bd..813d1d989 100644 --- a/apps/graph/graph/banner_view.cpp +++ b/apps/graph/graph/banner_view.cpp @@ -5,20 +5,22 @@ namespace Graph { BannerView::BannerView() : - m_abscissaView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle), - m_functionView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle), + Shared::XYBannerView(), m_derivativeView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle), m_tangentEquationView(KDFont::SmallFont, I18n::Message::LinearRegressionFormula, 0.0f, 0.5f, KDColorBlack, Palette::GreyMiddle), m_aView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle), m_bView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle), - m_numberOfSubviews(2) + m_numberOfSubviews(Shared::XYBannerView::k_numberOfSubviews) { } View * BannerView::subviewAtIndex(int index) { assert(0 <= index && index < numberOfSubviews()); - View * subviews[] = {&m_abscissaView, &m_functionView, &m_derivativeView, &m_tangentEquationView, &m_aView, &m_bView}; - return subviews[index]; + if (index < Shared::XYBannerView::k_numberOfSubviews) { + return Shared::XYBannerView::subviewAtIndex(index); + } + View * subviews[] = {&m_derivativeView, &m_tangentEquationView, &m_aView, &m_bView}; + return subviews[index - Shared::XYBannerView::k_numberOfSubviews]; } MessageTextView * BannerView::messageTextViewAtIndex(int i) const { diff --git a/apps/graph/graph/banner_view.h b/apps/graph/graph/banner_view.h index 848e23a19..25fcd9163 100644 --- a/apps/graph/graph/banner_view.h +++ b/apps/graph/graph/banner_view.h @@ -1,11 +1,11 @@ #ifndef GRAPH_BANNER_VIEW_H #define GRAPH_BANNER_VIEW_H -#include "../../shared/banner_view.h" +#include "../../shared/xy_banner_view.h" namespace Graph { -class BannerView : public Shared::BannerView { +class BannerView : public Shared::XYBannerView { public: BannerView(); void setNumberOfSubviews(int numberOfSubviews) { m_numberOfSubviews = numberOfSubviews; } @@ -13,8 +13,6 @@ private: int numberOfSubviews() const override { return m_numberOfSubviews; } View * subviewAtIndex(int index) override; MessageTextView * messageTextViewAtIndex(int i) const override; - BufferTextView m_abscissaView; - BufferTextView m_functionView; BufferTextView m_derivativeView; MessageTextView m_tangentEquationView; BufferTextView m_aView; diff --git a/apps/regression/banner_view.cpp b/apps/regression/banner_view.cpp index ba416ee06..0dcef4485 100644 --- a/apps/regression/banner_view.cpp +++ b/apps/regression/banner_view.cpp @@ -7,9 +7,8 @@ constexpr KDColor BannerView::k_textColor; constexpr KDColor BannerView::k_backgroundColor; BannerView::BannerView() : + Shared::XYBannerView(), m_dotNameView(k_font, 0.0f, 0.5f, k_textColor, k_backgroundColor), - m_xView(k_font, 0.5f, 0.5f, k_textColor, k_backgroundColor), - m_yView(k_font, 0.5f, 0.5f, k_textColor, k_backgroundColor), m_regressionTypeView(k_font, (I18n::Message)0, 0.0f, 0.5f, k_textColor,k_backgroundColor), m_subText1(k_font, 0.5f, 0.5f, k_textColor, k_backgroundColor), m_subText2(k_font, 0.5f, 0.5f, k_textColor, k_backgroundColor), @@ -21,7 +20,15 @@ BannerView::BannerView() : View * BannerView::subviewAtIndex(int index) { assert(0 <= index && index < numberOfSubviews()); - View * subviews[] = {&m_dotNameView, &m_xView, &m_yView, &m_regressionTypeView, &m_subText1, &m_subText2, &m_subText3, &m_subText4, &m_subText5}; + if (index == 0) { + return &m_dotNameView; + } + index--; + if (index < Shared::XYBannerView::k_numberOfSubviews) { + return Shared::XYBannerView::subviewAtIndex(index); + } + index -= Shared::XYBannerView::k_numberOfSubviews; + View * subviews[] = {&m_regressionTypeView, &m_subText1, &m_subText2, &m_subText3, &m_subText4, &m_subText5}; return subviews[index]; } diff --git a/apps/regression/banner_view.h b/apps/regression/banner_view.h index 0f107c4ab..3987deda1 100644 --- a/apps/regression/banner_view.h +++ b/apps/regression/banner_view.h @@ -1,12 +1,11 @@ #ifndef REGRESSION_BANNER_VIEW_H #define REGRESSION_BANNER_VIEW_H -#include -#include "../shared/banner_view.h" +#include "../shared/xy_banner_view.h" namespace Regression { -class BannerView : public Shared::BannerView { +class BannerView : public Shared::XYBannerView { public: BannerView(); int numberOfTextviews() const { return k_numberOfSubviews; } @@ -15,13 +14,11 @@ private: static constexpr const KDFont * k_font = KDFont::SmallFont; static constexpr KDColor k_textColor = KDColorBlack; static constexpr KDColor k_backgroundColor = Palette::GreyMiddle; - static constexpr int k_numberOfSubviews = 9; + static constexpr int k_numberOfSubviews = Shared::XYBannerView::k_numberOfSubviews + 7; int numberOfSubviews() const override { return k_numberOfSubviews; } View * subviewAtIndex(int index) override; MessageTextView * messageTextViewAtIndex(int i) const override; BufferTextView m_dotNameView; - BufferTextView m_xView; - BufferTextView m_yView; MessageTextView m_regressionTypeView; BufferTextView m_subText1; BufferTextView m_subText2; diff --git a/apps/sequence/Makefile b/apps/sequence/Makefile index 149b48e4e..9f5702e4d 100644 --- a/apps/sequence/Makefile +++ b/apps/sequence/Makefile @@ -3,7 +3,6 @@ app_headers += apps/sequence/app.h app_src += $(addprefix apps/sequence/,\ app.cpp \ - graph/banner_view.cpp \ graph/curve_parameter_controller.cpp \ graph/curve_view_range.cpp \ graph/go_to_parameter_controller.cpp \ diff --git a/apps/sequence/graph/banner_view.cpp b/apps/sequence/graph/banner_view.cpp deleted file mode 100644 index 2b48008d8..000000000 --- a/apps/sequence/graph/banner_view.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "banner_view.h" -#include - -namespace Sequence { - -BannerView::BannerView() : - m_abscissaView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle), - m_sequenceView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle) -{ -} - -View * BannerView::subviewAtIndex(int index) { - assert(0 <= index && index < numberOfSubviews()); - View * subviews[] = {&m_abscissaView, &m_sequenceView}; - return subviews[index]; -} - -} diff --git a/apps/sequence/graph/banner_view.h b/apps/sequence/graph/banner_view.h deleted file mode 100644 index 6da45ddf4..000000000 --- a/apps/sequence/graph/banner_view.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef SEQUENCE_BANNER_VIEW_H -#define SEQUENCE_BANNER_VIEW_H - -#include -#include "../../shared/banner_view.h" - -namespace Sequence { - -class BannerView : public Shared::BannerView { -public: - BannerView(); -private: - static constexpr int k_numberOfSubviews = 2; - int numberOfSubviews() const override { return k_numberOfSubviews; } - View * subviewAtIndex(int index) override; - BufferTextView m_abscissaView; - BufferTextView m_sequenceView; -}; - -} - -#endif diff --git a/apps/sequence/graph/graph_controller.h b/apps/sequence/graph/graph_controller.h index 54d897d5b..8c4ef8700 100644 --- a/apps/sequence/graph/graph_controller.h +++ b/apps/sequence/graph/graph_controller.h @@ -2,7 +2,7 @@ #define SEQUENCE_GRAPH_CONTROLLER_H #include "graph_view.h" -#include "banner_view.h" +#include "../../shared/xy_banner_view.h" #include "curve_parameter_controller.h" #include "curve_view_range.h" #include "term_sum_controller.h" @@ -21,7 +21,7 @@ public: float interestingXMin() const override; float interestingXHalfRange() const override; private: - BannerView * bannerView() override { return &m_bannerView; } + Shared::XYBannerView * bannerView() override { return &m_bannerView; } bool handleEnter() override; bool moveCursorHorizontally(int direction) override; double defaultCursorAbscissa() override; @@ -33,7 +33,7 @@ private: } CurveParameterController * curveParameterController() override { return &m_curveParameterController; } Shared::CursorView m_cursorView; - BannerView m_bannerView; + Shared::XYBannerView m_bannerView; GraphView m_view; CurveViewRange * m_graphRange; CurveParameterController m_curveParameterController; diff --git a/apps/shared/Makefile b/apps/shared/Makefile index 53d887f1a..0bcee7f82 100644 --- a/apps/shared/Makefile +++ b/apps/shared/Makefile @@ -69,5 +69,6 @@ app_src += $(addprefix apps/shared/,\ values_function_parameter_controller.cpp \ values_parameter_controller.cpp \ vertical_cursor_view.cpp \ + xy_banner_view.cpp\ zoom_parameter_controller.cpp \ ) diff --git a/apps/shared/xy_banner_view.cpp b/apps/shared/xy_banner_view.cpp new file mode 100644 index 000000000..453f8206e --- /dev/null +++ b/apps/shared/xy_banner_view.cpp @@ -0,0 +1,18 @@ +#include "xy_banner_view.h" +#include + +namespace Shared { + +XYBannerView::XYBannerView() : + m_abscissaView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle), + m_ordinateView(KDFont::SmallFont, 0.5f, 0.5f, KDColorBlack, Palette::GreyMiddle) +{ +} + +View * XYBannerView::subviewAtIndex(int index) { + assert(0 <= index && index < numberOfSubviews()); + View * subviews[] = {&m_abscissaView, &m_ordinateView}; + return subviews[index]; +} + +} diff --git a/apps/shared/xy_banner_view.h b/apps/shared/xy_banner_view.h new file mode 100644 index 000000000..0b5e76e0e --- /dev/null +++ b/apps/shared/xy_banner_view.h @@ -0,0 +1,22 @@ +#ifndef SHARED_XY_BANNER_VIEW_H +#define SHARED_XY_BANNER_VIEW_H + +#include "banner_view.h" + +namespace Shared { + +class XYBannerView : public BannerView { +public: + XYBannerView(); + static constexpr int k_numberOfSubviews = 2; +protected: + View * subviewAtIndex(int index) override; +private: + int numberOfSubviews() const override { return k_numberOfSubviews; } + BufferTextView m_abscissaView; + BufferTextView m_ordinateView; +}; + +} + +#endif