[apps/statistics] Remove public MultipleDataView::editableBannerView() getter

Instead use existing protected virtual bannerView() getter. The reason
why both existed is that one was const but not the other. A const
variant is needed only exceptionally: in bannerFrame() which is called
by drawRect().
Moreover, bannerView() is virtual and is overridden in its derived
classes using co-variant return types. That fact is important in the
following commit.
This commit is contained in:
Ruben Dashyan
2019-02-22 14:36:04 +01:00
committed by Émilie Feral
parent e2be17f150
commit 07a9116147
6 changed files with 16 additions and 17 deletions

View File

@@ -43,12 +43,12 @@ void BoxController::reloadBannerView() {
// Set series name
char seriesChar = '0' + selectedSeriesIndex() + 1;
char bufferName[] = {' ', 'V', seriesChar, '/', 'N', seriesChar, 0};
m_view.editableBannerView()->setLegendAtIndex(bufferName, 0);
m_view.bannerView()->setLegendAtIndex(bufferName, 0);
// Set calculation name
I18n::Message calculationName[5] = {I18n::Message::Minimum, I18n::Message::FirstQuartile, I18n::Message::Median, I18n::Message::ThirdQuartile, I18n::Message::Maximum};
m_view.editableBannerView()->setMessageAtIndex(calculationName[selectedQuantile], 1);
m_view.bannerView()->setMessageAtIndex(calculationName[selectedQuantile], 1);
// Set calculation result
assert(UTF8Decoder::CharSizeOfCodePoint(' ') == 1);
@@ -60,7 +60,7 @@ void BoxController::reloadBannerView() {
int numberOfChar = PoincareHelpers::ConvertFloatToText<double>(calculation, buffer, bufferSize - 1, Constant::LargeNumberOfSignificantDigits);
buffer[numberOfChar++] = ' ';
buffer[numberOfChar] = 0;
m_view.editableBannerView()->setLegendAtIndex(buffer, 2);
m_view.bannerView()->setLegendAtIndex(buffer, 2);
}
}

View File

@@ -124,7 +124,7 @@ void HistogramController::reloadBannerView() {
numberOfChar+= UTF8Decoder::CodePointToChars(' ', buffer + numberOfChar, bufferSize - numberOfChar);
}
buffer[k_maxIntervalLegendLength] = 0;
m_view.editableBannerView()->setLegendAtIndex(buffer, 1);
m_view.bannerView()->setLegendAtIndex(buffer, 1);
// Add Size Data
numberOfChar = 0;
@@ -142,7 +142,7 @@ void HistogramController::reloadBannerView() {
numberOfChar+= UTF8Decoder::CodePointToChars(' ', buffer + numberOfChar, bufferSize - numberOfChar);
}
buffer[k_maxLegendLength] = 0;
m_view.editableBannerView()->setLegendAtIndex(buffer, 3);
m_view.bannerView()->setLegendAtIndex(buffer, 3);
// Add Frequency Data
numberOfChar = 0;
@@ -159,7 +159,7 @@ void HistogramController::reloadBannerView() {
numberOfChar+= UTF8Decoder::CodePointToChars(' ', buffer + numberOfChar, bufferSize - numberOfChar);
}
buffer[k_maxLegendLength] = 0;
m_view.editableBannerView()->setLegendAtIndex(buffer, 5);
m_view.bannerView()->setLegendAtIndex(buffer, 5);
}
bool HistogramController::moveSelectionHorizontally(int deltaIndex) {

View File

@@ -17,7 +17,7 @@ public:
MultipleBoxesView(Store * store, BoxView::Quantile * selectedQuantile);
// MultipleDataView
int seriesOfSubviewAtIndex(int index) override;
const BoxBannerView * bannerView() const override { return &m_bannerView; }
BoxBannerView * bannerView() override { return &m_bannerView; }
BoxView * dataViewAtIndex(int index) override;
void layoutDataSubviews() override;
void reload() override;

View File

@@ -49,7 +49,7 @@ int MultipleDataView::numberOfSubviews() const {
View * MultipleDataView::subviewAtIndex(int index) {
if (index == MultipleDataView::numberOfSubviews() -1) {
return editableBannerView();
return bannerView();
}
int seriesIndex = 0;
int nonEmptySeriesIndex = -1;
@@ -68,7 +68,7 @@ View * MultipleDataView::subviewAtIndex(int index) {
void MultipleDataView::layoutSubviews() {
// We need to set the banner width first, so its height can be computed
editableBannerView()->setFrame(KDRect(0, 0, bounds().width(), 0));
bannerView()->setFrame(KDRect(0, 0, bounds().width(), 0));
layoutDataSubviews();
layoutBanner();
}
@@ -76,7 +76,7 @@ void MultipleDataView::layoutSubviews() {
void MultipleDataView::layoutDataSubviews() {
int numberDataSubviews = m_store->numberOfNonEmptySeries();
assert(numberDataSubviews > 0);
KDCoordinate bannerHeight = bannerFrame().height();
KDCoordinate bannerHeight = bannerView()->minimalSizeForOptimalDisplay().height();
KDCoordinate subviewHeight = (bounds().height() - bannerHeight)/numberDataSubviews + 1; // +1 to make sure that all pixel rows are drawn
int displayedSubviewIndex = 0;
for (int i = 0; i < Store::k_numberOfSeries; i++) {
@@ -95,18 +95,18 @@ void MultipleDataView::changeDataViewSelection(int index, bool select) {
}
KDRect MultipleDataView::bannerFrame() const {
KDCoordinate bannerHeight = bannerView()->minimalSizeForOptimalDisplay().height();
KDCoordinate bannerHeight = const_cast<MultipleDataView *>(this)->bannerView()->minimalSizeForOptimalDisplay().height();
KDRect frame = KDRect(0, bounds().height() - bannerHeight, bounds().width(), bannerHeight);
return frame;
}
void MultipleDataView::layoutBanner() {
KDCoordinate bannerHeight = bannerFrame().height();
KDCoordinate bannerHeight = bannerView()->minimalSizeForOptimalDisplay().height();
if (m_displayBanner) {
editableBannerView()->setFrame(bannerFrame());
bannerView()->setFrame(bannerFrame());
} else {
KDRect frame = KDRect(0, bounds().height() - bannerHeight, bounds().width(), 0);
editableBannerView()->setFrame(frame);
bannerView()->setFrame(frame);
}
}

View File

@@ -19,7 +19,6 @@ public:
void selectDataView(int index);
void deselectDataView(int index);
virtual Shared::CurveView * dataViewAtIndex(int index) = 0;
Shared::BannerView * editableBannerView() { return const_cast<Shared::BannerView *>(bannerView()); }
// Index/series
int indexOfSubviewAtSeries(int series);
@@ -32,7 +31,7 @@ public:
// View
int numberOfSubviews() const override;
protected:
virtual const Shared::BannerView * bannerView() const = 0;
virtual Shared::BannerView * bannerView() = 0;
void layoutSubviews() override;
virtual void layoutDataSubviews();
View * subviewAtIndex(int index) override;

View File

@@ -16,7 +16,7 @@ public:
MultipleHistogramsView(HistogramController * controller, Store * store);
// MultipleDataView
int seriesOfSubviewAtIndex(int index) override;
const HistogramBannerView * bannerView() const override { return &m_bannerView; }
HistogramBannerView * bannerView() override { return &m_bannerView; }
HistogramView * dataViewAtIndex(int index) override;
private:
void layoutSubviews() override;