Merge "[apps] Add a ok view on all interactive view controller"

This commit is contained in:
Émilie Feral
2017-03-03 15:33:06 +01:00
committed by Gerrit
8 changed files with 41 additions and 9 deletions

View File

@@ -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() {

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;
};

View File

@@ -151,6 +151,7 @@ void InteractiveCurveViewController::viewWillAppear() {
headerViewController()->setSelectedButton(-1);
reloadBannerView();
curveView()->reload();
curveView()->setOkView(&m_okView);
}
Responder * InteractiveCurveViewController::tabController() const{

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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 {