From 798b93ef6556feb0d4addb86921f9f44900b07ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Mon, 27 Feb 2017 12:59:41 +0100 Subject: [PATCH] [apps] Add a ok view on all interactive view controller Change-Id: I9fccf4d5ce9b34d1a7db1d0a1d7ea23d21f4b897 --- apps/regression/graph_controller.cpp | 7 ++--- apps/sequence/graph/term_sum_controller.cpp | 1 + apps/shared/curve_view.cpp | 29 +++++++++++++++++-- apps/shared/curve_view.h | 5 +++- .../interactive_curve_view_controller.cpp | 1 + .../interactive_curve_view_controller.h | 2 ++ apps/shared/zoom_parameter_controller.cpp | 4 +++ apps/shared/zoom_parameter_controller.h | 1 + 8 files changed, 41 insertions(+), 9 deletions(-) diff --git a/apps/regression/graph_controller.cpp b/apps/regression/graph_controller.cpp index 783aca83e..f7a685091 100644 --- a/apps/regression/graph_controller.cpp +++ b/apps/regression/graph_controller.cpp @@ -49,11 +49,8 @@ InteractiveCurveViewRange * GraphController::interactiveCurveViewRange() { } bool GraphController::handleEnter() { - if (m_selectedDotIndex == -1) { - stackController()->push(&m_predictionParameterController); - return true; - } - return false; + stackController()->push(&m_predictionParameterController); + return true; } void GraphController::reloadBannerView() { diff --git a/apps/sequence/graph/term_sum_controller.cpp b/apps/sequence/graph/term_sum_controller.cpp index 3345d052e..5cf3b7055 100644 --- a/apps/sequence/graph/term_sum_controller.cpp +++ b/apps/sequence/graph/term_sum_controller.cpp @@ -38,6 +38,7 @@ void TermSumController::viewWillAppear() { m_contentView.graphView()->setVerticalCursor(true); m_contentView.graphView()->setCursorView(&m_cursorView); m_contentView.graphView()->setBannerView(nullptr); + m_contentView.graphView()->setOkView(nullptr); m_contentView.graphView()->selectMainView(true); m_contentView.graphView()->setHighlightColor(false); m_contentView.graphView()->setHighlight(-1.0f,-1.0f); diff --git a/apps/shared/curve_view.cpp b/apps/shared/curve_view.cpp index c26832ef8..76c5ec93e 100644 --- a/apps/shared/curve_view.cpp +++ b/apps/shared/curve_view.cpp @@ -10,12 +10,13 @@ using namespace Poincare; namespace Shared { CurveView::CurveView(CurveViewRange * curveViewRange, CurveViewCursor * curveViewCursor, BannerView * bannerView, - View * cursorView) : + View * cursorView, View * okView) : View(), m_curveViewRange(curveViewRange), m_curveViewCursor(curveViewCursor), m_bannerView(bannerView), m_cursorView(cursorView), + m_okView(okView), m_drawnRangeVersion(0) { } @@ -59,6 +60,10 @@ void CurveView::setBannerView(BannerView * bannerView) { m_bannerView = bannerView; } +void CurveView::setOkView(View * okView) { + m_okView = okView; +} + float CurveView::min(Axis axis) const { assert(axis == Axis::Horizontal || axis == Axis::Vertical); return (axis == Axis::Horizontal ? m_curveViewRange->xMin(): m_curveViewRange->yMin()); @@ -440,16 +445,34 @@ void CurveView::layoutSubviews() { } m_bannerView->setFrame(bannerFrame); } + if (m_okView != nullptr) { + KDCoordinate bannerHeight = 0; + if (m_bannerView != nullptr) { + bannerHeight = m_bannerView->minimalSizeForOptimalDisplay().height(); + } + KDSize okSize = m_okView->minimalSizeForOptimalDisplay(); + KDRect okFrame(KDRect(bounds().width()- okSize.width()-k_okMargin, bounds().height()- bannerHeight-okSize.height()-k_okMargin, okSize)); + if (!m_mainViewSelected) { + okFrame = KDRectZero; + } + m_okView->setFrame(okFrame); + } } int CurveView::numberOfSubviews() const { - return (m_bannerView != nullptr) + (m_cursorView != nullptr); + return (m_bannerView != nullptr) + (m_cursorView != nullptr) + (m_okView != nullptr); }; View * CurveView::subviewAtIndex(int index) { - assert(index >= 0 && index < 2); + assert(index >= 0 && index < 3); if (index == 0 && m_bannerView != nullptr) { return m_bannerView; + } + if (index == 0 && m_bannerView != nullptr) { + return m_bannerView; + } + if (index == 1 && m_okView != nullptr) { + return m_okView; } return m_cursorView; } diff --git a/apps/shared/curve_view.h b/apps/shared/curve_view.h index 5c8e8fcef..eb0733069 100644 --- a/apps/shared/curve_view.h +++ b/apps/shared/curve_view.h @@ -18,17 +18,19 @@ public: Vertical = 1 }; CurveView(CurveViewRange * curveViewRange = nullptr, CurveViewCursor * curveViewCursor = nullptr, - BannerView * bannerView = nullptr, View * cursorView = nullptr); + BannerView * bannerView = nullptr, View * cursorView = nullptr, View * okView = nullptr); 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(BannerView * bannerView); + void setOkView(View * okView); protected: void setCurveViewRange(CurveViewRange * curveViewRange); // Drawing methods constexpr static KDCoordinate k_labelMargin = 4; + constexpr static KDCoordinate k_okMargin = 10; constexpr static KDCoordinate k_labelGraduationLength = 6; constexpr static int k_maxNumberOfXLabels = CurveViewRange::k_maxNumberOfXGridUnits; constexpr static int k_maxNumberOfYLabels = CurveViewRange::k_maxNumberOfYGridUnits; @@ -79,6 +81,7 @@ private: CurveViewCursor * m_curveViewCursor; BannerView * m_bannerView; View * m_cursorView; + View * m_okView; bool m_mainViewSelected; uint32_t m_drawnRangeVersion; }; diff --git a/apps/shared/interactive_curve_view_controller.cpp b/apps/shared/interactive_curve_view_controller.cpp index 07448a750..75009e926 100644 --- a/apps/shared/interactive_curve_view_controller.cpp +++ b/apps/shared/interactive_curve_view_controller.cpp @@ -151,6 +151,7 @@ void InteractiveCurveViewController::viewWillAppear() { headerViewController()->setSelectedButton(-1); reloadBannerView(); curveView()->reload(); + curveView()->setOkView(&m_okView); } Responder * InteractiveCurveViewController::tabController() const{ diff --git a/apps/shared/interactive_curve_view_controller.h b/apps/shared/interactive_curve_view_controller.h index 863401382..f018ec1b8 100644 --- a/apps/shared/interactive_curve_view_controller.h +++ b/apps/shared/interactive_curve_view_controller.h @@ -5,6 +5,7 @@ #include "interactive_curve_view_range.h" #include "curve_view.h" #include "cursor_view.h" +#include "ok_view.h" #include "banner_view.h" #include "range_parameter_controller.h" #include "zoom_parameter_controller.h" @@ -50,6 +51,7 @@ protected: virtual CurveView * curveView() = 0; CurveViewCursor m_cursor; CursorView m_cursorView; + OkView m_okView; private: uint32_t m_modelVersion; uint32_t m_rangeVersion; diff --git a/apps/shared/zoom_parameter_controller.cpp b/apps/shared/zoom_parameter_controller.cpp index 8da06a54a..db4e3fdd8 100644 --- a/apps/shared/zoom_parameter_controller.cpp +++ b/apps/shared/zoom_parameter_controller.cpp @@ -54,6 +54,10 @@ bool ZoomParameterController::handleEvent(Ion::Events::Event event) { return false; } +void ZoomParameterController::viewWillAppear() { + m_contentView.curveView()->setOkView(nullptr); +} + void ZoomParameterController::didBecomeFirstResponder() { m_contentView.layoutSubviews(); } diff --git a/apps/shared/zoom_parameter_controller.h b/apps/shared/zoom_parameter_controller.h index e3af7d2d9..49ce35f88 100644 --- a/apps/shared/zoom_parameter_controller.h +++ b/apps/shared/zoom_parameter_controller.h @@ -13,6 +13,7 @@ public: const char * title() const override; View * view() override; bool handleEvent(Ion::Events::Event event) override; + void viewWillAppear() override; void didBecomeFirstResponder() override; private: class ContentView : public View {