diff --git a/apps/shared/curve_view.cpp b/apps/shared/curve_view.cpp index c1d2945b4..c263b65ed 100644 --- a/apps/shared/curve_view.cpp +++ b/apps/shared/curve_view.cpp @@ -10,7 +10,7 @@ using namespace Poincare; namespace Shared { CurveView::CurveView(CurveViewRange * curveViewRange, CurveViewCursor * curveViewCursor, BannerView * bannerView, - View * cursorView, View * okView) : + View * cursorView, View * okView, bool displayBanner) : View(), m_bannerView(bannerView), m_curveViewCursor(curveViewCursor), @@ -18,7 +18,8 @@ CurveView::CurveView(CurveViewRange * curveViewRange, CurveViewCursor * curveVie m_cursorView(cursorView), m_okView(okView), m_mainViewSelected(false), - m_drawnRangeVersion(0) + m_drawnRangeVersion(0), + m_displayBanner(displayBanner) { } @@ -27,7 +28,7 @@ void CurveView::reload() { if (m_drawnRangeVersion != rangeVersion) { // FIXME: This should also be called if the *curve* changed m_drawnRangeVersion = rangeVersion; - KDCoordinate bannerHeight = m_bannerView != nullptr ? m_bannerView->bounds().height() : 0; + KDCoordinate bannerHeight = (m_bannerView != nullptr && m_displayBanner) ? m_bannerView->bounds().height() : 0; markRectAsDirty(KDRect(0, 0, bounds().width(), bounds().height() - bannerHeight)); if (label(Axis::Horizontal, 0) != nullptr) { computeLabels(Axis::Horizontal); @@ -514,7 +515,7 @@ void CurveView::layoutSubviews() { if (m_curveViewCursor != nullptr && m_cursorView != nullptr) { m_cursorView->setFrame(cursorFrame()); } - if (m_bannerView != nullptr) { + if (m_bannerView != nullptr && m_displayBanner) { m_bannerView->setFrame(bannerFrame()); } if (m_okView != nullptr) { @@ -530,7 +531,7 @@ KDRect CurveView::cursorFrame() { KDCoordinate yCursorPixelPosition = std::round(floatToPixel(Axis::Vertical, m_curveViewCursor->y())); cursorFrame = KDRect(xCursorPixelPosition - (cursorSize.width()-1)/2, yCursorPixelPosition - (cursorSize.height()-1)/2, cursorSize.width(), cursorSize.height()); if (cursorSize.height() == 0) { - KDCoordinate bannerHeight = m_bannerView != nullptr ? m_bannerView->minimalSizeForOptimalDisplay().height() : 0; + KDCoordinate bannerHeight = (m_bannerView != nullptr && m_displayBanner) ? m_bannerView->minimalSizeForOptimalDisplay().height() : 0; cursorFrame = KDRect(xCursorPixelPosition - (cursorSize.width()-1)/2, 0, cursorSize.width(),bounds().height()-bannerHeight); } } @@ -539,7 +540,7 @@ KDRect CurveView::cursorFrame() { KDRect CurveView::bannerFrame() { KDRect bannerFrame = KDRectZero; - if (m_bannerView && m_mainViewSelected) { + if (m_bannerView && m_displayBanner && m_mainViewSelected) { KDCoordinate bannerHeight = m_bannerView->minimalSizeForOptimalDisplay().height(); bannerFrame = KDRect(0, bounds().height()- bannerHeight, bounds().width(), bannerHeight); } @@ -550,7 +551,7 @@ KDRect CurveView::okFrame() { KDRect okFrame = KDRectZero; if (m_okView && m_mainViewSelected) { KDCoordinate bannerHeight = 0; - if (m_bannerView != nullptr) { + if (m_bannerView != nullptr && m_displayBanner) { bannerHeight = m_bannerView->minimalSizeForOptimalDisplay().height(); } KDSize okSize = m_okView->minimalSizeForOptimalDisplay(); @@ -560,7 +561,7 @@ KDRect CurveView::okFrame() { } int CurveView::numberOfSubviews() const { - return (m_bannerView != nullptr) + (m_cursorView != nullptr) + (m_okView != nullptr); + return (m_bannerView != nullptr && m_displayBanner) + (m_cursorView != nullptr) + (m_okView != nullptr); }; View * CurveView::subviewAtIndex(int index) { @@ -572,12 +573,12 @@ View * CurveView::subviewAtIndex(int index) { if (m_okView != nullptr) { return m_okView; } else { - if (m_bannerView != nullptr) { + if (m_bannerView != nullptr && m_displayBanner) { return m_bannerView; } } } - if (index == 1 && m_bannerView != nullptr && m_okView != nullptr) { + if (index == 1 && m_bannerView != nullptr && m_displayBanner && m_okView != nullptr) { return m_bannerView; } return m_cursorView; diff --git a/apps/shared/curve_view.h b/apps/shared/curve_view.h index 7552b2e85..eb1b24c5a 100644 --- a/apps/shared/curve_view.h +++ b/apps/shared/curve_view.h @@ -17,14 +17,19 @@ public: Horizontal = 0, Vertical = 1 }; - CurveView(CurveViewRange * curveViewRange = nullptr, CurveViewCursor * curveViewCursor = nullptr, - BannerView * bannerView = nullptr, View * cursorView = nullptr, View * okView = nullptr); + CurveView(CurveViewRange * curveViewRange = nullptr, + CurveViewCursor * curveViewCursor = nullptr, + BannerView * bannerView = nullptr, + View * cursorView = nullptr, + View * okView = nullptr, + bool displayBanner = true); virtual void reload(); // When the main view is selected, the banner view is visible bool isMainViewSelected() const; void selectMainView(bool mainViewSelected); void setCursorView(View * cursorView); void setBannerView(View * bannerView); + void setDisplayBannerView(bool display) { m_displayBanner = display; } void setOkView(View * okView); float resolution() const; protected: @@ -86,6 +91,7 @@ private: View * m_okView; bool m_mainViewSelected; uint32_t m_drawnRangeVersion; + bool m_displayBanner; }; } diff --git a/apps/statistics/histogram_controller.cpp b/apps/statistics/histogram_controller.cpp index a1ae0a6f2..25bf9e09a 100644 --- a/apps/statistics/histogram_controller.cpp +++ b/apps/statistics/histogram_controller.cpp @@ -17,6 +17,9 @@ HistogramController::ContentView::ContentView(HistogramController * controller, m_bannerView(), m_store(store) { + m_histogramView1.setDisplayBannerView(false); + m_histogramView2.setDisplayBannerView(false); + m_histogramView3.setDisplayBannerView(false); } HistogramView * HistogramController::ContentView::histogramViewAtIndex(int index) {