mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[statistics] Fix histogram_controller and multiple_data_view_controller
life cycle (viewWillAppear, didEnterResponderChain) This fixes the histogram labels when a serie is added
This commit is contained in:
committed by
LeaNumworks
parent
fe3b9ad5ba
commit
737393072e
@@ -47,9 +47,8 @@ bool HistogramController::handleEvent(Ion::Events::Event event) {
|
||||
return MultipleDataViewController::handleEvent(event);
|
||||
}
|
||||
|
||||
void HistogramController::didBecomeFirstResponder() {
|
||||
MultipleDataViewController::didBecomeFirstResponder();
|
||||
|
||||
void HistogramController::viewWillAppear() {
|
||||
MultipleDataViewController::viewWillAppear();
|
||||
uint32_t storeChecksum = m_store->storeChecksum();
|
||||
if (*m_storeVersion != storeChecksum) {
|
||||
*m_storeVersion = storeChecksum;
|
||||
@@ -67,8 +66,6 @@ void HistogramController::didBecomeFirstResponder() {
|
||||
initBarSelection();
|
||||
reloadBannerView();
|
||||
}
|
||||
HistogramView * selectedHistogramView = static_cast<HistogramView *>(m_view.dataViewAtIndex(selectedSeriesIndex()));
|
||||
selectedHistogramView->setHighlight(m_store->startOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex), m_store->endOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex));
|
||||
}
|
||||
|
||||
void HistogramController::willExitResponderChain(Responder * nextFirstResponder) {
|
||||
@@ -80,6 +77,11 @@ void HistogramController::willExitResponderChain(Responder * nextFirstResponder)
|
||||
MultipleDataViewController::willExitResponderChain(nextFirstResponder);
|
||||
}
|
||||
|
||||
void HistogramController::highlightSelection() {
|
||||
HistogramView * selectedHistogramView = static_cast<HistogramView *>(m_view.dataViewAtIndex(selectedSeriesIndex()));
|
||||
selectedHistogramView->setHighlight(m_store->startOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex), m_store->endOfBarAtIndex(selectedSeriesIndex(), *m_selectedBarIndex));
|
||||
}
|
||||
|
||||
Responder * HistogramController::tabController() const {
|
||||
return (parentResponder()->parentResponder()->parentResponder()->parentResponder());
|
||||
}
|
||||
|
||||
@@ -19,17 +19,18 @@ public:
|
||||
|
||||
// ViewController
|
||||
const char * title() override;
|
||||
void viewWillAppear() override;
|
||||
MultipleDataView * multipleDataView() override { return &m_view; }
|
||||
|
||||
// Responder
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
void willExitResponderChain(Responder * nextFirstResponder) override;
|
||||
private:
|
||||
constexpr static int k_maxNumberOfBarsPerWindow = 100;
|
||||
constexpr static int k_maxIntervalLegendLength = 33;
|
||||
constexpr static int k_maxLegendLength = 13;
|
||||
constexpr static int k_maxNumberOfCharacters = 30;
|
||||
void highlightSelection() override;
|
||||
Responder * tabController() const override;
|
||||
void reloadBannerView() override;
|
||||
void initRangeParameters();
|
||||
|
||||
@@ -27,11 +27,9 @@ Responder * MultipleDataViewController::defaultController() {
|
||||
}
|
||||
|
||||
void MultipleDataViewController::viewWillAppear() {
|
||||
multipleDataView()->setDisplayBanner(true);
|
||||
if (*m_selectedSeriesIndex < 0) {
|
||||
if (*m_selectedSeriesIndex < 0 || m_store->sumOfOccurrences(*m_selectedSeriesIndex) == 0) {
|
||||
*m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(0);
|
||||
}
|
||||
multipleDataView()->selectDataView(*m_selectedSeriesIndex);
|
||||
reloadBannerView();
|
||||
multipleDataView()->reload();
|
||||
}
|
||||
@@ -45,8 +43,8 @@ bool MultipleDataViewController::handleEvent(Ion::Events::Event event) {
|
||||
*m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(currentSelectedSubview+1);
|
||||
*m_selectedBarIndex = MultipleDataView::k_defaultSelectedBar;
|
||||
multipleDataView()->selectDataView(*m_selectedSeriesIndex);
|
||||
highlightSelection();
|
||||
reloadBannerView();
|
||||
app()->setFirstResponder(this);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -58,7 +56,7 @@ bool MultipleDataViewController::handleEvent(Ion::Events::Event event) {
|
||||
*m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(currentSelectedSubview-1);
|
||||
*m_selectedBarIndex = MultipleDataView::k_defaultSelectedBar;
|
||||
multipleDataView()->selectDataView(*m_selectedSeriesIndex);
|
||||
app()->setFirstResponder(this);
|
||||
highlightSelection();
|
||||
} else {
|
||||
app()->setFirstResponder(tabController());
|
||||
}
|
||||
@@ -73,26 +71,18 @@ bool MultipleDataViewController::handleEvent(Ion::Events::Event event) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void MultipleDataViewController::didBecomeFirstResponder() {
|
||||
void MultipleDataViewController::didEnterResponderChain(Responder * firstResponder) {
|
||||
assert(*m_selectedSeriesIndex >= 0);
|
||||
multipleDataView()->setDisplayBanner(true);
|
||||
if (*m_selectedSeriesIndex < 0 || m_store->sumOfOccurrences(*m_selectedSeriesIndex) == 0) {
|
||||
if (*m_selectedSeriesIndex >= 0) {
|
||||
multipleDataView()->deselectDataView(*m_selectedSeriesIndex);
|
||||
}
|
||||
*m_selectedSeriesIndex = multipleDataView()->seriesOfSubviewAtIndex(0);
|
||||
multipleDataView()->selectDataView(*m_selectedSeriesIndex);
|
||||
multipleDataView()->reload();
|
||||
} else {
|
||||
multipleDataView()->dataViewAtIndex(*m_selectedSeriesIndex)->selectMainView(true);
|
||||
}
|
||||
multipleDataView()->selectDataView(*m_selectedSeriesIndex);
|
||||
highlightSelection();
|
||||
}
|
||||
|
||||
void MultipleDataViewController::willExitResponderChain(Responder * nextFirstResponder) {
|
||||
if (nextFirstResponder == nullptr || nextFirstResponder == tabController()) {
|
||||
if (*m_selectedSeriesIndex >= 0) {
|
||||
multipleDataView()->dataViewAtIndex(*m_selectedSeriesIndex)->selectMainView(false);
|
||||
multipleDataView()->setDisplayBanner(false);
|
||||
}
|
||||
assert(*m_selectedSeriesIndex >= 0);
|
||||
multipleDataView()->deselectDataView(*m_selectedSeriesIndex);
|
||||
multipleDataView()->setDisplayBanner(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,10 @@ public:
|
||||
|
||||
// Responder
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
void didEnterResponderChain(Responder * previousFirstResponder) override;
|
||||
void willExitResponderChain(Responder * nextFirstResponder) override;
|
||||
protected:
|
||||
virtual void highlightSelection() {}
|
||||
virtual Responder * tabController() const = 0;
|
||||
virtual void reloadBannerView() = 0;
|
||||
virtual bool moveSelectionHorizontally(int deltaIndex) = 0;
|
||||
|
||||
Reference in New Issue
Block a user