[apps] Factorize banner view implementation.

Change-Id: Iedc4350d2bed0f1b1c597c2492e028293f58d5f2
This commit is contained in:
Émilie Feral
2017-01-05 18:08:21 +01:00
parent b17222112a
commit 6e9528103b
37 changed files with 324 additions and 340 deletions

View File

@@ -5,7 +5,8 @@ namespace Statistics {
BoxController::BoxController(Responder * parentResponder, Store * store) :
ViewController(parentResponder),
m_view(BoxView(store)),
m_boxBannerView(BoxBannerView()),
m_view(BoxView(store, &m_boxBannerView)),
m_store(store)
{
}
@@ -26,7 +27,11 @@ bool BoxController::handleEvent(Ion::Events::Event event) {
}
if (event == Ion::Events::Left || event == Ion::Events::Right) {
int nextSelectedQuantile = event == Ion::Events::Left ? m_view.selectedQuantile()-1 : m_view.selectedQuantile()+1;
return m_view.selectQuantile(nextSelectedQuantile);
if (m_view.selectQuantile(nextSelectedQuantile)) {
reloadBannerView();
return true;
}
return false;
}
return false;
}
@@ -40,6 +45,7 @@ void BoxController::didBecomeFirstResponder() {
}
m_view.selectMainView(true);
m_view.reload();
reloadBannerView();
}
bool BoxController::isEmpty() {
@@ -60,4 +66,32 @@ Responder * BoxController::tabController() const {
return (parentResponder()->parentResponder()->parentResponder());
}
void BoxController::reloadBannerView() {
const char * calculationName[5] = {"Minimum", "Premier quartile", "Mediane", "Troisieme quartile", "Maximum"};
m_boxBannerView.setLegendAtIndex((char *)calculationName[m_view.selectedQuantile()], 0);
char buffer[Constant::FloatBufferSizeInScientificMode];
float calculation = 0.0f;
switch(m_view.selectedQuantile()) {
case 0:
calculation = m_store->minValue();
break;
case 1:
calculation = m_store->firstQuartile();
break;
case 2:
calculation = m_store->median();
break;
case 3:
calculation = m_store->thirdQuartile();
break;
case 4:
calculation = m_store->maxValue();
break;
}
Float(calculation).convertFloatToText(buffer, Constant::FloatBufferSizeInScientificMode, Constant::NumberOfDigitsInMantissaInScientificMode);
m_boxBannerView.setLegendAtIndex(buffer, 1);
m_boxBannerView.layoutSubviews();
}
}