mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-24 00:00:44 +01:00
[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:
committed by
Émilie Feral
parent
e2be17f150
commit
07a9116147
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user