Files
Upsilon/apps/statistics/box_banner_view.cpp
Émilie Feral ce7aa7f2ab [apps] Create an abstract class for banner view
Change-Id: Ib0235866a2850caa78dc7caf246b42a5c4bc7db5
2017-01-09 15:08:55 +01:00

65 lines
1.7 KiB
C++

#include "box_banner_view.h"
#include "box_view.h"
#include "../constant.h"
#include <assert.h>
#include <poincare.h>
namespace Statistics {
BoxBannerView::BoxBannerView(Data * data, BoxView * boxView) :
m_calculationName(nullptr, 0.0f, 0.5f),
m_calculationValue(1.0f, 0.5f),
m_data(data),
m_boxView(boxView)
{
}
void BoxBannerView::reload() {
markRectAsDirty(bounds());
const char * calculationName[5] = {"Minimum", "Premier quartile", "Mediane", "Troisieme quartile", "Maximum"};
m_calculationName.setText(calculationName[m_boxView->selectedQuantile()]);
char buffer[Constant::FloatBufferSizeInScientificMode];
float calculation = 0.0f;
switch(m_boxView->selectedQuantile()) {
case 0:
calculation = m_data->minValue();
break;
case 1:
calculation = m_data->firstQuartile();
break;
case 2:
calculation = m_data->median();
break;
case 3:
calculation = m_data->thirdQuartile();
break;
case 4:
calculation = m_data->maxValue();
break;
}
Float(calculation).convertFloatToText(buffer, Constant::FloatBufferSizeInScientificMode, Constant::NumberOfDigitsInMantissaInScientificMode);
m_calculationValue.setText(buffer);
}
int BoxBannerView::numberOfSubviews() const {
return 2;
}
View * BoxBannerView::subviewAtIndex(int index) {
assert(index == 0 || index == 1);
if (index == 0) {
return &m_calculationName;
}
return &m_calculationValue;
}
void BoxBannerView::layoutSubviews() {
KDCoordinate height = bounds().height();
KDCoordinate width = bounds().width();
m_calculationName.setFrame(KDRect(0, 0, width/2, height));
m_calculationValue.setFrame(KDRect(width/2, 0, width/2, height));
}
}