filter: reset shown_dives in filter

The shown_dives variable was reset by the dive_list code. Arguably,
the filter should keep track of the number of shown dives, so move
the resetting there. This means adding a new "reset()" member function
to the filter and call that instead of "updateAll()" when the core
data is reset.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2020-10-30 21:28:11 +01:00 committed by Dirk Hohndel
parent dea1ef84d5
commit e80c0d2c60
4 changed files with 15 additions and 8 deletions

View file

@ -52,6 +52,16 @@ ShownChange DiveFilter::update(const QVector<dive *> &dives) const
return res;
}
void DiveFilter::reset()
{
int i;
dive *d;
shown_dives = dive_table.nr;
for_each_dive(i, d)
d->hidden_by_filter = false;
updateAll();
}
ShownChange DiveFilter::updateAll() const
{
dive *old_current = current_dive;

View file

@ -39,6 +39,7 @@ class DiveFilter {
public:
static DiveFilter *instance();
void reset();
QString shownText() const;
bool diveSiteMode() const; // returns true if we're filtering on dive site (on mobile always returns false)
#ifndef SUBSURFACE_MOBILE

View file

@ -807,13 +807,9 @@ void process_loaded_dives()
int i;
struct dive *dive;
/* Register dive computer nick names and count shown dives. */
shown_dives = 0;
for_each_dive(i, dive) {
if (!dive->hidden_by_filter)
shown_dives++;
/* Register dive computer nick names. */
for_each_dive(i, dive)
add_devices_of_dive(dive, &device_table);
}
sort_dive_table(&dive_table);
sort_trip_table(&trip_table);

View file

@ -706,7 +706,7 @@ DiveTripModelTree::DiveTripModelTree(QObject *parent) : DiveTripModelBase(parent
void DiveTripModelTree::populate()
{
DiveFilter::instance()->updateAll(); // The data was reset - update filter status. TODO: should this really be done here?
DiveFilter::instance()->reset(); // The data was reset - update filter status. TODO: should this really be done here?
// we want this to be two calls as the second text is overwritten below by the lines starting with "\r"
uiNotification(QObject::tr("populate data model"));
@ -1475,7 +1475,7 @@ DiveTripModelList::DiveTripModelList(QObject *parent) : DiveTripModelBase(parent
void DiveTripModelList::populate()
{
DiveFilter::instance()->updateAll(); // The data was reset - update filter status. TODO: should this really be done here?
DiveFilter::instance()->reset(); // The data was reset - update filter status. TODO: should this really be done here?
// Fill model
items.reserve(dive_table.nr);