diff --git a/apps/statistics/app.cpp b/apps/statistics/app.cpp index eea3cb2dc..fd396fdaa 100644 --- a/apps/statistics/app.cpp +++ b/apps/statistics/app.cpp @@ -23,7 +23,9 @@ App::Snapshot::Snapshot() : m_storeVersion(0), m_barVersion(0), m_rangeVersion(0), + m_selectedHistogramSeriesIndex(-1), m_selectedHistogramBarIndex(0), + m_selectedBoxSeriesIndex(-1), m_selectedBoxQuantile(BoxView::Quantile::Min) { } @@ -52,10 +54,10 @@ App::App(Container * container, Snapshot * snapshot) : m_calculationController(&m_calculationAlternateEmptyViewController, &m_calculationHeader, snapshot->store()), m_calculationAlternateEmptyViewController(&m_calculationHeader, &m_calculationController, &m_calculationController), m_calculationHeader(&m_tabViewController, &m_calculationAlternateEmptyViewController, &m_calculationController), - m_boxController(&m_boxAlternateEmptyViewController, &m_boxHeader, snapshot->store(), snapshot->selectedBoxQuantile()), + m_boxController(&m_boxAlternateEmptyViewController, &m_boxHeader, snapshot->store(), snapshot->selectedBoxQuantile(), snapshot->selectedBoxSeriesIndex()), m_boxAlternateEmptyViewController(&m_boxHeader, &m_boxController, &m_boxController), m_boxHeader(&m_tabViewController, &m_boxAlternateEmptyViewController, &m_boxController), - m_histogramController(&m_histogramAlternateEmptyViewController, &m_histogramHeader, snapshot->store(), snapshot->storeVersion(), snapshot->barVersion(), snapshot->rangeVersion(), snapshot->selectedHistogramBarIndex()), + m_histogramController(&m_histogramAlternateEmptyViewController, &m_histogramHeader, snapshot->store(), snapshot->storeVersion(), snapshot->barVersion(), snapshot->rangeVersion(), snapshot->selectedHistogramBarIndex(), snapshot->selectedHistogramSeriesIndex()), m_histogramAlternateEmptyViewController(&m_histogramHeader, &m_histogramController, &m_histogramController), m_histogramHeader(&m_histogramStackViewController, &m_histogramAlternateEmptyViewController, &m_histogramController), m_histogramStackViewController(&m_tabViewController, &m_histogramHeader), diff --git a/apps/statistics/app.h b/apps/statistics/app.h index 60784bebc..06871fae4 100644 --- a/apps/statistics/app.h +++ b/apps/statistics/app.h @@ -29,16 +29,19 @@ public: uint32_t * storeVersion() { return &m_storeVersion; } uint32_t * barVersion() { return &m_barVersion; } uint32_t * rangeVersion() { return &m_rangeVersion; } + int * selectedHistogramSeriesIndex() { return &m_selectedHistogramSeriesIndex; } int * selectedHistogramBarIndex() { return &m_selectedHistogramBarIndex; } + int * selectedBoxSeriesIndex() { return &m_selectedBoxSeriesIndex; } BoxView::Quantile * selectedBoxQuantile() { return &m_selectedBoxQuantile; } private: Store m_store; uint32_t m_storeVersion; uint32_t m_barVersion; uint32_t m_rangeVersion; + int m_selectedHistogramSeriesIndex; int m_selectedHistogramBarIndex; + int m_selectedBoxSeriesIndex; BoxView::Quantile m_selectedBoxQuantile; - // TODO add selected Series for both histogram and box }; private: App(Container * container, Snapshot * snapshot); diff --git a/apps/statistics/box_controller.cpp b/apps/statistics/box_controller.cpp index 29d0b55e0..80129022f 100644 --- a/apps/statistics/box_controller.cpp +++ b/apps/statistics/box_controller.cpp @@ -6,17 +6,17 @@ using namespace Poincare; namespace Statistics { -BoxController::BoxController(Responder * parentResponder, ButtonRowController * header, Store * store, BoxView::Quantile * selectedQuantile) : - MultipleDataViewController(parentResponder, store, (int *)(selectedQuantile)), +BoxController::BoxController(Responder * parentResponder, ButtonRowController * header, Store * store, BoxView::Quantile * selectedQuantile, int * selectedSeriesIndex) : + MultipleDataViewController(parentResponder, store, (int *)(selectedQuantile), selectedSeriesIndex), ButtonRowDelegate(header, nullptr), m_view(this, store, selectedQuantile) { } bool BoxController::moveSelectionHorizontally(int deltaIndex) { - int selectedQuantile = (int)m_view.dataViewAtIndex(selectedSeries())->selectedQuantile(); + int selectedQuantile = (int)m_view.dataViewAtIndex(selectedSeriesIndex())->selectedQuantile(); int nextSelectedQuantile = selectedQuantile + deltaIndex; - if (m_view.dataViewAtIndex(selectedSeries())->selectQuantile(nextSelectedQuantile)) { + if (m_view.dataViewAtIndex(selectedSeriesIndex())->selectQuantile(nextSelectedQuantile)) { reloadBannerView(); return true; } @@ -32,14 +32,14 @@ Responder * BoxController::tabController() const { } void BoxController::reloadBannerView() { - if (selectedSeries() < 0) { + if (selectedSeriesIndex() < 0) { return; } - int selectedQuantile = (int)m_view.dataViewAtIndex(selectedSeries())->selectedQuantile(); + int selectedQuantile = (int)m_view.dataViewAtIndex(selectedSeriesIndex())->selectedQuantile(); // Set series name - char seriesChar = '0' + selectedSeries() + 1; + char seriesChar = '0' + selectedSeriesIndex() + 1; char bufferName[] = {' ', 'V', seriesChar, '/', 'N', seriesChar, 0}; m_view.editableBannerView()->setLegendAtIndex(bufferName, 0); @@ -52,7 +52,7 @@ void BoxController::reloadBannerView() { char buffer[PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits) + 1]; CalculPointer calculationMethods[5] = {&Store::minValue, &Store::firstQuartile, &Store::median, &Store::thirdQuartile, &Store::maxValue}; - double calculation = (m_store->*calculationMethods[selectedQuantile])(selectedSeries()); + double calculation = (m_store->*calculationMethods[selectedQuantile])(selectedSeriesIndex()); int numberOfChar = PrintFloat::convertFloatToText(calculation, buffer, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits); buffer[numberOfChar++] = ' '; buffer[numberOfChar] = 0; diff --git a/apps/statistics/box_controller.h b/apps/statistics/box_controller.h index 2ee62a35e..1a9b30084 100644 --- a/apps/statistics/box_controller.h +++ b/apps/statistics/box_controller.h @@ -10,7 +10,7 @@ namespace Statistics { class BoxController : public MultipleDataViewController, public ButtonRowDelegate { public: - BoxController(Responder * parentResponder, ButtonRowController * header, Store * store, BoxView::Quantile * selectedQuantile); + BoxController(Responder * parentResponder, ButtonRowController * header, Store * store, BoxView::Quantile * selectedQuantile, int * selectedSeriesIndex); MultipleDataView * multipleDataView() override { return &m_view; } bool moveSelectionHorizontally(int deltaIndex) override; diff --git a/apps/statistics/box_view.cpp b/apps/statistics/box_view.cpp index a81a4812c..0ff506527 100644 --- a/apps/statistics/box_view.cpp +++ b/apps/statistics/box_view.cpp @@ -64,7 +64,7 @@ void BoxView::drawRect(KDContext * ctx, KDRect rect) const { double thirdQuart = m_store->thirdQuartile(m_series); double maxVal = m_store->maxValue(m_series); - bool isSelected = m_boxController->selectedSeries() == m_series; + bool isSelected = m_boxController->selectedSeriesIndex() == m_series; KDColor boxColor = isSelected ? m_selectedHistogramLightColor : Palette::GreyWhite; // Draw the main box KDCoordinate firstQuartilePixels = std::round(floatToPixel(Axis::Horizontal, firstQuart)); diff --git a/apps/statistics/histogram_controller.cpp b/apps/statistics/histogram_controller.cpp index 185788d23..d0a818f33 100644 --- a/apps/statistics/histogram_controller.cpp +++ b/apps/statistics/histogram_controller.cpp @@ -13,8 +13,8 @@ namespace Statistics { static inline float min(float x, float y) { return (xy ? x : y); } -HistogramController::HistogramController(Responder * parentResponder, ButtonRowController * header, Store * store, uint32_t * storeVersion, uint32_t * barVersion, uint32_t * rangeVersion, int * selectedBarIndex) : - MultipleDataViewController(parentResponder, store, selectedBarIndex), +HistogramController::HistogramController(Responder * parentResponder, ButtonRowController * header, Store * store, uint32_t * storeVersion, uint32_t * barVersion, uint32_t * rangeVersion, int * selectedBarIndex, int * selectedSeriesIndex) : + MultipleDataViewController(parentResponder, store, selectedBarIndex, selectedSeriesIndex), ButtonRowDelegate(header, nullptr), m_view(this, store), m_storeVersion(storeVersion), @@ -38,7 +38,7 @@ const char * HistogramController::title() { } bool HistogramController::handleEvent(Ion::Events::Event event) { - assert(selectedSeries() >= 0); + assert(selectedSeriesIndex() >= 0); if (event == Ion::Events::OK) { stackController()->push(histogramParameterController()); return true; @@ -66,14 +66,14 @@ void HistogramController::didBecomeFirstResponder() { initBarSelection(); reloadBannerView(); } - HistogramView * selectedHistogramView = static_cast(m_view.dataViewAtIndex(selectedSeries())); - selectedHistogramView->setHighlight(m_store->startOfBarAtIndex(selectedSeries(), *m_selectedBarIndex), m_store->endOfBarAtIndex(selectedSeries(), *m_selectedBarIndex)); + HistogramView * selectedHistogramView = static_cast(m_view.dataViewAtIndex(selectedSeriesIndex())); + selectedHistogramView->setHighlight(m_store->startOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex), m_store->endOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex)); } void HistogramController::willExitResponderChain(Responder * nextFirstResponder) { if (nextFirstResponder == nullptr || nextFirstResponder == tabController()) { - if (selectedSeries() >= 0) { - m_view.dataViewAtIndex(selectedSeries())->setForceOkDisplay(false); + if (selectedSeriesIndex() >= 0) { + m_view.dataViewAtIndex(selectedSeriesIndex())->setForceOkDisplay(false); } } MultipleDataViewController::willExitResponderChain(nextFirstResponder); @@ -84,7 +84,7 @@ Responder * HistogramController::tabController() const { } void HistogramController::reloadBannerView() { - if (selectedSeries() < 0) { + if (selectedSeriesIndex() < 0) { return; } char buffer[k_maxNumberOfCharacters+ PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits)*2]; @@ -97,16 +97,16 @@ void HistogramController::reloadBannerView() { numberOfChar += legendLength; // Add lower bound - if (selectedSeries() >= 0) { - double lowerBound = m_store->startOfBarAtIndex(selectedSeries(), *m_selectedBarIndex); + if (selectedSeriesIndex() >= 0) { + double lowerBound = m_store->startOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex); numberOfChar += PrintFloat::convertFloatToText(lowerBound, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits); } buffer[numberOfChar++] = ';'; // Add upper bound - if (selectedSeries() >= 0) { - double upperBound = m_store->endOfBarAtIndex(selectedSeries(), *m_selectedBarIndex); + if (selectedSeriesIndex() >= 0) { + double upperBound = m_store->endOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex); numberOfChar += PrintFloat::convertFloatToText(upperBound, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits); } @@ -126,8 +126,8 @@ void HistogramController::reloadBannerView() { strlcpy(buffer, legend, legendLength+1); numberOfChar += legendLength; double size = 0; - if (selectedSeries() >= 0) { - size = m_store->heightOfBarAtIndex(selectedSeries(), *m_selectedBarIndex); + if (selectedSeriesIndex() >= 0) { + size = m_store->heightOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex); numberOfChar += PrintFloat::convertFloatToText(size, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits); } // Padding @@ -143,8 +143,8 @@ void HistogramController::reloadBannerView() { legendLength = strlen(legend); strlcpy(buffer, legend, legendLength+1); numberOfChar += legendLength; - if (selectedSeries() >= 0) { - double frequency = size/m_store->sumOfOccurrences(selectedSeries()); + if (selectedSeriesIndex() >= 0) { + double frequency = size/m_store->sumOfOccurrences(selectedSeriesIndex()); numberOfChar += PrintFloat::convertFloatToText(frequency, buffer+numberOfChar, PrintFloat::bufferSizeForFloatsWithPrecision(Constant::LargeNumberOfSignificantDigits), Constant::LargeNumberOfSignificantDigits); } // Padding @@ -159,17 +159,17 @@ bool HistogramController::moveSelectionHorizontally(int deltaIndex) { int newSelectedBarIndex = *m_selectedBarIndex; do { newSelectedBarIndex+=deltaIndex; - } while (m_store->heightOfBarAtIndex(selectedSeries(), newSelectedBarIndex) == 0 + } while (m_store->heightOfBarAtIndex(selectedSeriesIndex(), newSelectedBarIndex) == 0 && newSelectedBarIndex >= 0 - && newSelectedBarIndex < m_store->numberOfBars(selectedSeries())); + && newSelectedBarIndex < m_store->numberOfBars(selectedSeriesIndex())); if (newSelectedBarIndex >= 0 - && newSelectedBarIndex < m_store->numberOfBars(selectedSeries()) + && newSelectedBarIndex < m_store->numberOfBars(selectedSeriesIndex()) && *m_selectedBarIndex != newSelectedBarIndex) { *m_selectedBarIndex = newSelectedBarIndex; - m_view.dataViewAtIndex(selectedSeries())->setHighlight(m_store->startOfBarAtIndex(selectedSeries(), *m_selectedBarIndex), m_store->endOfBarAtIndex(selectedSeries(), *m_selectedBarIndex)); - if (m_store->scrollToSelectedBarIndex(selectedSeries(), *m_selectedBarIndex)) { + m_view.dataViewAtIndex(selectedSeriesIndex())->setHighlight(m_store->startOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex), m_store->endOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex)); + if (m_store->scrollToSelectedBarIndex(selectedSeriesIndex(), *m_selectedBarIndex)) { multipleDataView()->reload(); } reloadBannerView(); @@ -179,7 +179,7 @@ bool HistogramController::moveSelectionHorizontally(int deltaIndex) { } void HistogramController::initRangeParameters() { - assert(selectedSeries() >= 0 && m_store->sumOfOccurrences(selectedSeries()) > 0); + assert(selectedSeriesIndex() >= 0 && m_store->sumOfOccurrences(selectedSeriesIndex()) > 0); float minValue = m_store->firstDrawnBarAbscissa(); float maxValue = -FLT_MAX; for (int i = 0; i < Store::k_numberOfSeries; i ++) { @@ -201,7 +201,7 @@ void HistogramController::initRangeParameters() { m_store->setXMin(xMin - Store::k_displayLeftMarginRatio*(xMax-xMin)); m_store->setXMax(xMax + Store::k_displayRightMarginRatio*(xMax-xMin)); - initYRangeParameters(selectedSeries()); + initYRangeParameters(selectedSeriesIndex()); } void HistogramController::initYRangeParameters(int series) { @@ -232,7 +232,7 @@ void HistogramController::initYRangeParameters(int series) { } void HistogramController::initBarParameters() { - assert(selectedSeries() >= 0 && m_store->sumOfOccurrences(selectedSeries()) > 0); + assert(selectedSeriesIndex() >= 0 && m_store->sumOfOccurrences(selectedSeriesIndex()) > 0); float minValue = FLT_MAX; float maxValue = -FLT_MAX; for (int i = 0; i < Store::k_numberOfSeries; i ++) { @@ -251,20 +251,20 @@ void HistogramController::initBarParameters() { } void HistogramController::initBarSelection() { - assert(selectedSeries() >= 0 && m_store->sumOfOccurrences(selectedSeries()) > 0); + assert(selectedSeriesIndex() >= 0 && m_store->sumOfOccurrences(selectedSeriesIndex()) > 0); *m_selectedBarIndex = 0; - while ((m_store->heightOfBarAtIndex(selectedSeries(), *m_selectedBarIndex) == 0 || - m_store->startOfBarAtIndex(selectedSeries(), *m_selectedBarIndex) < m_store->firstDrawnBarAbscissa()) && *m_selectedBarIndex < m_store->numberOfBars(selectedSeries())) { + while ((m_store->heightOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex) == 0 || + m_store->startOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex) < m_store->firstDrawnBarAbscissa()) && *m_selectedBarIndex < m_store->numberOfBars(selectedSeriesIndex())) { *m_selectedBarIndex = *m_selectedBarIndex+1; } - if (*m_selectedBarIndex >= m_store->numberOfBars(selectedSeries())) { + if (*m_selectedBarIndex >= m_store->numberOfBars(selectedSeriesIndex())) { /* No bar is after m_firstDrawnBarAbscissa, so we select the first bar */ *m_selectedBarIndex = 0; - while (m_store->heightOfBarAtIndex(selectedSeries(), *m_selectedBarIndex) == 0 && *m_selectedBarIndex < m_store->numberOfBars(selectedSeries())) { + while (m_store->heightOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex) == 0 && *m_selectedBarIndex < m_store->numberOfBars(selectedSeriesIndex())) { *m_selectedBarIndex = *m_selectedBarIndex+1; } } - m_store->scrollToSelectedBarIndex(selectedSeries(), *m_selectedBarIndex); + m_store->scrollToSelectedBarIndex(selectedSeriesIndex(), *m_selectedBarIndex); } } diff --git a/apps/statistics/histogram_controller.h b/apps/statistics/histogram_controller.h index 826075cc9..1790723b6 100644 --- a/apps/statistics/histogram_controller.h +++ b/apps/statistics/histogram_controller.h @@ -11,7 +11,7 @@ namespace Statistics { class HistogramController : public MultipleDataViewController, public ButtonRowDelegate { public: - HistogramController(Responder * parentResponder, ButtonRowController * header, Store * store, uint32_t * m_storeVersion, uint32_t * m_barVersion, uint32_t * m_rangeVersion, int * m_selectedBarIndex); + HistogramController(Responder * parentResponder, ButtonRowController * header, Store * store, uint32_t * m_storeVersion, uint32_t * m_barVersion, uint32_t * m_rangeVersion, int * m_selectedBarIndex, int * selectedSeriesIndex); HistogramParameterController * histogramParameterController() { return &m_histogramParameterController; } void setCurrentDrawnSeries(int series); diff --git a/apps/statistics/multiple_data_view_controller.cpp b/apps/statistics/multiple_data_view_controller.cpp index df5b06b1f..876164e51 100644 --- a/apps/statistics/multiple_data_view_controller.cpp +++ b/apps/statistics/multiple_data_view_controller.cpp @@ -6,10 +6,10 @@ using namespace Shared; namespace Statistics { -MultipleDataViewController::MultipleDataViewController(Responder * parentResponder, Store * store, int * selectedBarIndex) : +MultipleDataViewController::MultipleDataViewController(Responder * parentResponder, Store * store, int * selectedBarIndex, int * selectedSeriesIndex) : ViewController(parentResponder), m_store(store), - m_selectedSeries(-1), + m_selectedSeriesIndex(selectedSeriesIndex), m_selectedBarIndex(selectedBarIndex) { } @@ -28,23 +28,23 @@ Responder * MultipleDataViewController::defaultController() { void MultipleDataViewController::viewWillAppear() { multipleDataView()->setDisplayBanner(true); - if (m_selectedSeries < 0) { - m_selectedSeries = multipleDataView()->seriesOfSubviewAtIndex(0); - multipleDataView()->selectDataView(m_selectedSeries); + if (*m_selectedSeriesIndex < 0) { + *m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(0); + multipleDataView()->selectDataView(*m_selectedSeriesIndex); } reloadBannerView(); multipleDataView()->reload(); } bool MultipleDataViewController::handleEvent(Ion::Events::Event event) { - assert(m_selectedSeries >= 0); + assert(*m_selectedSeriesIndex >= 0); if (event == Ion::Events::Down) { - int currentSelectedSubview = multipleDataView()->indexOfSubviewAtSeries(m_selectedSeries); + int currentSelectedSubview = multipleDataView()->indexOfSubviewAtSeries(*m_selectedSeriesIndex); if (currentSelectedSubview < m_store->numberOfNonEmptySeries() - 1) { - multipleDataView()->deselectDataView(m_selectedSeries); - m_selectedSeries = multipleDataView()->seriesOfSubviewAtIndex(currentSelectedSubview+1); + multipleDataView()->deselectDataView(*m_selectedSeriesIndex); + *m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(currentSelectedSubview+1); *m_selectedBarIndex = MultipleDataView::k_defaultSelectedBar; - multipleDataView()->selectDataView(m_selectedSeries); + multipleDataView()->selectDataView(*m_selectedSeriesIndex); reloadBannerView(); app()->setFirstResponder(this); return true; @@ -52,12 +52,12 @@ bool MultipleDataViewController::handleEvent(Ion::Events::Event event) { return false; } if (event == Ion::Events::Up) { - int currentSelectedSubview = multipleDataView()->indexOfSubviewAtSeries(m_selectedSeries); + int currentSelectedSubview = multipleDataView()->indexOfSubviewAtSeries(*m_selectedSeriesIndex); if (currentSelectedSubview > 0) { - multipleDataView()->deselectDataView(m_selectedSeries); - m_selectedSeries = multipleDataView()->seriesOfSubviewAtIndex(currentSelectedSubview-1); + multipleDataView()->deselectDataView(*m_selectedSeriesIndex); + *m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(currentSelectedSubview-1); *m_selectedBarIndex = MultipleDataView::k_defaultSelectedBar; - multipleDataView()->selectDataView(m_selectedSeries); + multipleDataView()->selectDataView(*m_selectedSeriesIndex); app()->setFirstResponder(this); } else { app()->setFirstResponder(tabController()); @@ -65,7 +65,7 @@ bool MultipleDataViewController::handleEvent(Ion::Events::Event event) { reloadBannerView(); return true; } - if (m_selectedSeries >= 0 && (event == Ion::Events::Left || event == Ion::Events::Right)) { + if (*m_selectedSeriesIndex >= 0 && (event == Ion::Events::Left || event == Ion::Events::Right)) { int direction = event == Ion::Events::Left ? -1 : 1; moveSelectionHorizontally(direction); return true; @@ -75,21 +75,21 @@ bool MultipleDataViewController::handleEvent(Ion::Events::Event event) { void MultipleDataViewController::didBecomeFirstResponder() { multipleDataView()->setDisplayBanner(true); - if (m_selectedSeries < 0 || m_store->sumOfOccurrences(m_selectedSeries) == 0) { - if (m_selectedSeries >= 0) { - multipleDataView()->deselectDataView(m_selectedSeries); + if (*m_selectedSeriesIndex < 0 || m_store->sumOfOccurrences(*m_selectedSeriesIndex) == 0) { + if (*m_selectedSeriesIndex >= 0) { + multipleDataView()->deselectDataView(*m_selectedSeriesIndex); } - m_selectedSeries = multipleDataView()->seriesOfSubviewAtIndex(0); - multipleDataView()->selectDataView(m_selectedSeries); + *m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(0); + multipleDataView()->selectDataView(*m_selectedSeriesIndex); multipleDataView()->reload(); } } void MultipleDataViewController::willExitResponderChain(Responder * nextFirstResponder) { if (nextFirstResponder == nullptr || nextFirstResponder == tabController()) { - if (m_selectedSeries >= 0) { - multipleDataView()->dataViewAtIndex(m_selectedSeries)->selectMainView(false); - m_selectedSeries = -1; + if (*m_selectedSeriesIndex >= 0) { + multipleDataView()->dataViewAtIndex(*m_selectedSeriesIndex)->selectMainView(false); + *m_selectedSeriesIndex = -1; multipleDataView()->setDisplayBanner(false); } } diff --git a/apps/statistics/multiple_data_view_controller.h b/apps/statistics/multiple_data_view_controller.h index b8f5041d0..e3dfa92ed 100644 --- a/apps/statistics/multiple_data_view_controller.h +++ b/apps/statistics/multiple_data_view_controller.h @@ -10,9 +10,9 @@ namespace Statistics { class MultipleDataViewController : public ViewController, public AlternateEmptyViewDelegate { public: - MultipleDataViewController(Responder * parentResponder, Store * store, int * m_selectedBarIndex); + MultipleDataViewController(Responder * parentResponder, Store * store, int * m_selectedBarIndex, int * selectedSeriesIndex); virtual MultipleDataView * multipleDataView() = 0; - int selectedSeries() const { return m_selectedSeries; } + int selectedSeriesIndex() const { return *m_selectedSeriesIndex; } // AlternateEmptyViewDelegate bool isEmpty() const override; I18n::Message emptyMessage() override; @@ -31,7 +31,7 @@ protected: virtual void reloadBannerView() = 0; virtual bool moveSelectionHorizontally(int deltaIndex) = 0; Store * m_store; - int m_selectedSeries; + int * m_selectedSeriesIndex; int * m_selectedBarIndex; };