mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-21 14:50:44 +01:00
[apps] Factorize the graph view controller of regression and graph apps
Change-Id: Ib586376c3afc0738ea39dd86fb693ec08811281e
This commit is contained in:
@@ -3,98 +3,14 @@
|
||||
namespace Regression {
|
||||
|
||||
GraphController::GraphController(Responder * parentResponder, HeaderViewController * headerViewController, Data * data) :
|
||||
ViewController(parentResponder),
|
||||
HeaderViewDelegate(headerViewController),
|
||||
CurveViewWindowWithBannerAndCursorController(parentResponder, headerViewController, data, &m_view),
|
||||
m_view(GraphView(data)),
|
||||
m_windowParameterController(WindowParameterController(this, data)),
|
||||
m_zoomParameterController(ZoomParameterController(this, data, &m_view)),
|
||||
m_windowButton(this, "Axes", Invocation([](void * context, void * sender) {
|
||||
GraphController * graphController = (GraphController *) context;
|
||||
StackViewController * stack = graphController->stackController();
|
||||
stack->push(graphController->windowParameterController());
|
||||
}, this)),
|
||||
m_zoomButton(this, "Zoom", Invocation([](void * context, void * sender) {
|
||||
GraphController * graphController = (GraphController *) context;
|
||||
StackViewController * stack = graphController->stackController();
|
||||
stack->push(graphController->zoomParameterController());
|
||||
}, this)),
|
||||
m_defaultInitialisationButton(this, "Initialisation", Invocation([](void * context, void * sender) {}, this)),
|
||||
m_data(data)
|
||||
{
|
||||
}
|
||||
|
||||
const char * GraphController::title() const {
|
||||
return "Graph";
|
||||
}
|
||||
|
||||
View * GraphController::view() {
|
||||
return &m_view;
|
||||
}
|
||||
|
||||
bool GraphController::handleEvent(Ion::Events::Event event) {
|
||||
if (!m_view.isMainViewSelected()) {
|
||||
if (event == Ion::Events::Down) {
|
||||
headerViewController()->setSelectedButton(-1);
|
||||
m_view.selectMainView(true);
|
||||
m_view.reloadSelection();
|
||||
return true;
|
||||
}
|
||||
if (event == Ion::Events::Up) {
|
||||
headerViewController()->setSelectedButton(-1);
|
||||
app()->setFirstResponder(tabController());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (event == Ion::Events::Down || event == Ion::Events::Up) {
|
||||
int direction = event == Ion::Events::Down ? -1 : 1;
|
||||
m_view.reloadSelection();
|
||||
int didMoveCursor = m_data->moveCursorVertically(direction);
|
||||
if ( event == Ion::Events::Up && didMoveCursor < 0) {
|
||||
m_view.selectMainView(false);
|
||||
headerViewController()->setSelectedButton(0);
|
||||
return true;
|
||||
}
|
||||
if (didMoveCursor == 0) {
|
||||
m_view.reloadSelection();
|
||||
} else {
|
||||
m_view.reload();
|
||||
}
|
||||
return (didMoveCursor >= 0);
|
||||
}
|
||||
if (event == Ion::Events::Left || event == Ion::Events::Right) {
|
||||
int direction = event == Ion::Events::Left ? -1 : 1;
|
||||
m_view.reloadSelection();
|
||||
int didMoveCursor = m_data->moveCursorHorizontally(direction);
|
||||
if (didMoveCursor == 0) {
|
||||
m_view.reloadSelection();
|
||||
} else {
|
||||
m_view.reload();
|
||||
}
|
||||
return (didMoveCursor >= 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void GraphController::didBecomeFirstResponder() {
|
||||
headerViewController()->setSelectedButton(-1);
|
||||
m_view.selectMainView(true);
|
||||
// Layout view whe the graph view that might have been modified by the zoom page
|
||||
headerViewController()->layoutView();
|
||||
m_view.reload();
|
||||
}
|
||||
|
||||
int GraphController::numberOfButtons() const {
|
||||
return 3;
|
||||
}
|
||||
Button * GraphController::buttonAtIndex(int index) {
|
||||
if (index == 0) {
|
||||
return &m_windowButton;
|
||||
}
|
||||
if (index == 1) {
|
||||
return &m_zoomButton;
|
||||
}
|
||||
return &m_defaultInitialisationButton;
|
||||
ViewController * GraphController::initialisationParameterController() {
|
||||
return &m_windowParameterController;
|
||||
}
|
||||
|
||||
bool GraphController::isEmpty() {
|
||||
@@ -108,24 +24,8 @@ const char * GraphController::emptyMessage() {
|
||||
return "Aucune donnee a tracer";
|
||||
}
|
||||
|
||||
Responder * GraphController::defaultController() {
|
||||
return tabController();
|
||||
}
|
||||
|
||||
ViewController * GraphController::windowParameterController() {
|
||||
return &m_windowParameterController;
|
||||
}
|
||||
|
||||
ViewController * GraphController::zoomParameterController() {
|
||||
return &m_zoomParameterController;
|
||||
}
|
||||
|
||||
Responder * GraphController::tabController() const {
|
||||
return (parentResponder()->parentResponder()->parentResponder()->parentResponder());
|
||||
}
|
||||
|
||||
StackViewController * GraphController::stackController() const{
|
||||
return (StackViewController *)(parentResponder()->parentResponder()->parentResponder());
|
||||
bool GraphController::handleEnter() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user