mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
Merge "[apps] Add a ok view on all interactive view controller"
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -151,6 +151,7 @@ void InteractiveCurveViewController::viewWillAppear() {
|
||||
headerViewController()->setSelectedButton(-1);
|
||||
reloadBannerView();
|
||||
curveView()->reload();
|
||||
curveView()->setOkView(&m_okView);
|
||||
}
|
||||
|
||||
Responder * InteractiveCurveViewController::tabController() const{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user