mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	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:
		
							parent
							
								
									dea1ef84d5
								
							
						
					
					
						commit
						e80c0d2c60
					
				
					 4 changed files with 15 additions and 8 deletions
				
			
		| 
						 | 
					@ -52,6 +52,16 @@ ShownChange DiveFilter::update(const QVector<dive *> &dives) const
 | 
				
			||||||
	return res;
 | 
						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
 | 
					ShownChange DiveFilter::updateAll() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	dive *old_current = current_dive;
 | 
						dive *old_current = current_dive;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,6 +39,7 @@ class DiveFilter {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
	static DiveFilter *instance();
 | 
						static DiveFilter *instance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void reset();
 | 
				
			||||||
	QString shownText() const;
 | 
						QString shownText() const;
 | 
				
			||||||
	bool diveSiteMode() const; // returns true if we're filtering on dive site (on mobile always returns false)
 | 
						bool diveSiteMode() const; // returns true if we're filtering on dive site (on mobile always returns false)
 | 
				
			||||||
#ifndef SUBSURFACE_MOBILE
 | 
					#ifndef SUBSURFACE_MOBILE
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -807,13 +807,9 @@ void process_loaded_dives()
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	struct dive *dive;
 | 
						struct dive *dive;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Register dive computer nick names and count shown dives. */
 | 
						/* Register dive computer nick names. */
 | 
				
			||||||
	shown_dives = 0;
 | 
						for_each_dive(i, dive)
 | 
				
			||||||
	for_each_dive(i, dive) {
 | 
					 | 
				
			||||||
		if (!dive->hidden_by_filter)
 | 
					 | 
				
			||||||
			shown_dives++;
 | 
					 | 
				
			||||||
		add_devices_of_dive(dive, &device_table);
 | 
							add_devices_of_dive(dive, &device_table);
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sort_dive_table(&dive_table);
 | 
						sort_dive_table(&dive_table);
 | 
				
			||||||
	sort_trip_table(&trip_table);
 | 
						sort_trip_table(&trip_table);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -706,7 +706,7 @@ DiveTripModelTree::DiveTripModelTree(QObject *parent) : DiveTripModelBase(parent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DiveTripModelTree::populate()
 | 
					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"
 | 
						// 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"));
 | 
						uiNotification(QObject::tr("populate data model"));
 | 
				
			||||||
| 
						 | 
					@ -1475,7 +1475,7 @@ DiveTripModelList::DiveTripModelList(QObject *parent) : DiveTripModelBase(parent
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DiveTripModelList::populate()
 | 
					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
 | 
						// Fill model
 | 
				
			||||||
	items.reserve(dive_table.nr);
 | 
						items.reserve(dive_table.nr);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue