Files
Upsilon/apps/statistics/histogram_controller.cpp
Émilie Feral f1f67acca6 [apps/statistics] Display the histogram parameter page when clicking on
the histogram parameter button

Change-Id: Ie9bbe3f94bf1c4eb5901b39f82a2e4caf36e3c0e
2017-01-09 15:08:53 +01:00

103 lines
2.7 KiB
C++

#include "histogram_controller.h"
#include <assert.h>
namespace Statistics {
HistogramController::HistogramController(Responder * parentResponder, HeaderViewController * headerViewController, Data * data) :
ViewController(parentResponder),
HeaderViewDelegate(headerViewController),
m_view(HistogramView(data)),
m_settingButton(Button(this, "Reglages de l'histogramme",Invocation([](void * context, void * sender) {
HistogramController * histogramController = (HistogramController *) context;
StackViewController * stack = ((StackViewController *)histogramController->stackController());
stack->push(histogramController->histogramParameterController());
}, this))),
m_data(data),
m_histogramParameterController(nullptr, data)
{
}
const char * HistogramController::title() const {
return "Histogramme";
}
View * HistogramController::view() {
return &m_view;
}
StackViewController * HistogramController::stackController() {
StackViewController * stack = (StackViewController *)(parentResponder()->parentResponder()->parentResponder());
return stack;
}
HistogramParameterController * HistogramController::histogramParameterController() {
return &m_histogramParameterController;
}
bool HistogramController::handleEvent(Ion::Events::Event event) {
if (event == Ion::Events::Down) {
if (!m_view.selectedBins()) {
headerViewController()->setSelectedButton(-1);
m_view.selectBins(true);
m_view.reload();
return true;
}
return false;
}
if (event == Ion::Events::Up) {
if (!m_view.selectedBins()) {
headerViewController()->setSelectedButton(-1);
app()->setFirstResponder(tabController());
return true;
}
m_view.selectBins(false);
headerViewController()->setSelectedButton(0);
return true;
}
if (event == Ion::Events::Left) {
m_data->selectNextBinToward(-1);
m_view.reload();
return true;
}
if (event == Ion::Events::Right) {
m_data->selectNextBinToward(1);
m_view.reload();
return true;
}
return false;
}
void HistogramController::didBecomeFirstResponder() {
headerViewController()->setSelectedButton(-1);
m_view.selectBins(true);
m_view.reload();
}
int HistogramController::numberOfButtons() const {
return 1;
}
Button * HistogramController::buttonAtIndex(int index) {
return &m_settingButton;
}
bool HistogramController::isEmpty() {
if (m_data->numberOfPairs() == 0) {
return true;
}
return false;
}
const char * HistogramController::emptyMessage() {
return "Aucune donnee a tracer";
}
Responder * HistogramController::defaultController() {
return tabController();
}
Responder * HistogramController::tabController() const {
return (parentResponder()->parentResponder()->parentResponder()->parentResponder());
}
}