Moved out class for cached selected points on chart from private space.

This commit is contained in:
23rd 2023-11-17 02:37:09 +03:00 committed by John Preston
parent 4c6d33fd54
commit bc6556ebc4
4 changed files with 16 additions and 26 deletions

View file

@ -25,6 +25,15 @@ struct PaintContext final {
bool footer = false; bool footer = false;
}; };
struct CachedSelectedPoints final {
[[nodiscard]] bool isSame(int x, const PaintContext &c) const;
int lastXIndex = -1;
Limits lastHeightLimits;
Limits lastXLimits;
base::flat_map<int, QPointF> points;
};
class AbstractChartView { class AbstractChartView {
public: public:
virtual ~AbstractChartView() = default; virtual ~AbstractChartView() = default;
@ -82,24 +91,14 @@ public:
const QPoint &p) { const QPoint &p) {
} }
void setUpdateCallback(Fn<void()> callback) { void setUpdateCallback(Fn<void()> callback);
_updateCallback = std::move(callback); void update();
}
void update() {
if (_updateCallback) {
_updateCallback();
}
}
void setLinesFilterController(std::shared_ptr<LinesFilterController> c) { void setLinesFilterController(std::shared_ptr<LinesFilterController> c);
_linesFilterController = std::move(c);
}
protected: protected:
using LinesFilterControllerPtr = std::shared_ptr<LinesFilterController>; using LinesFilterControllerPtr = std::shared_ptr<LinesFilterController>;
[[nodiscard]] LinesFilterControllerPtr linesFilterController() { [[nodiscard]] LinesFilterControllerPtr linesFilterController() const;
return _linesFilterController;
}
private: private:
LinesFilterControllerPtr _linesFilterController; LinesFilterControllerPtr _linesFilterController;

View file

@ -140,11 +140,7 @@ void LinearChartView::paintSelectedXIndex(
p.setBrush(st::boxBg); p.setBrush(st::boxBg);
const auto r = st::statisticsDetailsDotRadius; const auto r = st::statisticsDetailsDotRadius;
const auto i = selectedXIndex; const auto i = selectedXIndex;
const auto isSameToken = (_selectedPoints.lastXIndex == selectedXIndex) const auto isSameToken = _selectedPoints.isSame(selectedXIndex, c);
&& (_selectedPoints.lastHeightLimits.min == c.heightLimits.min)
&& (_selectedPoints.lastHeightLimits.max == c.heightLimits.max)
&& (_selectedPoints.lastXLimits.min == c.xPercentageLimits.min)
&& (_selectedPoints.lastXLimits.max == c.xPercentageLimits.max);
auto linePainted = false; auto linePainted = false;
for (const auto &line : c.chartData.lines) { for (const auto &line : c.chartData.lines) {
const auto lineAlpha = linesFilter->alpha(line.id); const auto lineAlpha = linesFilter->alpha(line.id);

View file

@ -90,13 +90,7 @@ private:
base::flat_map<int, Cache> _mainCaches; base::flat_map<int, Cache> _mainCaches;
base::flat_map<int, Cache> _footerCaches; base::flat_map<int, Cache> _footerCaches;
struct SelectedPoints final { CachedSelectedPoints _selectedPoints;
int lastXIndex = -1;
Limits lastHeightLimits;
Limits lastXLimits;
base::flat_map<int, QPointF> points;
};
SelectedPoints _selectedPoints;
}; };

View file

@ -183,6 +183,7 @@ PRIVATE
statistics/statistics_common.h statistics/statistics_common.h
statistics/statistics_data_deserialize.cpp statistics/statistics_data_deserialize.cpp
statistics/statistics_data_deserialize.h statistics/statistics_data_deserialize.h
statistics/view/abstract_chart_view.cpp
statistics/view/abstract_chart_view.h statistics/view/abstract_chart_view.h
statistics/view/chart_rulers_view.cpp statistics/view/chart_rulers_view.cpp
statistics/view/chart_rulers_view.h statistics/view/chart_rulers_view.h