Statistics: remove global state / calculate only when needed

Statistics were calculated into global variables every time the
current dive was changed.

Calculate statistics only when needed and into a structure
provided by the caller.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-10-06 10:58:12 +02:00 committed by Dirk Hohndel
parent 68fdc0b6f4
commit 97991e2b9f
7 changed files with 141 additions and 107 deletions

View file

@ -424,13 +424,7 @@ void MainTab::updateDiveInfo(bool clear)
setEnabled(false);
editMode = IGNORE; // don't trigger on changes to the widgets
// This method updates ALL tabs whenever a new dive or trip is
// selected.
// If exactly one trip has been selected, we show the location / notes
// for the trip in the Info tab, otherwise we show the info of the
// selected_dive
process_selected_dives();
process_all_dives();
for (auto widget : extraWidgets) {
widget->updateData();

View file

@ -207,8 +207,10 @@ QString TemplateLayout::generateStatistics()
QVariantList years;
int i = 0;
while (stats_yearly != NULL && stats_yearly[i].period) {
YearInfo year(stats_yearly[i]);
stats_summary_auto_free stats;
calculate_stats_summary(&stats);
while (stats.stats_yearly != NULL && stats.stats_yearly[i].period) {
YearInfo year(stats.stats_yearly[i]);
years.append(QVariant::fromValue(year));
i++;
}