mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	filter: add (very primitive) filterpresetmodel
Implement a trivial model to provide the filter preset names to the UI. Sadly, for now this features the QWidget/QML column / name dichotomy. However, in this simple case that shouldn't be too much of an issue. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
		
							parent
							
								
									937fdb500b
								
							
						
					
					
						commit
						536fc05dd6
					
				
					 4 changed files with 93 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -146,6 +146,7 @@ SOURCES += ../../subsurface-mobile-main.cpp \
 | 
			
		|||
	../../qt-models/models.cpp \
 | 
			
		||||
	../../qt-models/weightsysteminfomodel.cpp \
 | 
			
		||||
	../../qt-models/filterconstraintmodel.cpp \
 | 
			
		||||
	../../qt-models/filterpresetmodel.cpp \
 | 
			
		||||
	../../profile-widget/qmlprofile.cpp \
 | 
			
		||||
	../../profile-widget/divecartesianaxis.cpp \
 | 
			
		||||
	../../profile-widget/diveeventitem.cpp \
 | 
			
		||||
| 
						 | 
				
			
			@ -297,6 +298,7 @@ HEADERS += \
 | 
			
		|||
	../../qt-models/models.h \
 | 
			
		||||
	../../qt-models/weightsysteminfomodel.h \
 | 
			
		||||
	../../qt-models/filterconstraintmodel.h \
 | 
			
		||||
	../../qt-models/filterpresetmodel.h \
 | 
			
		||||
	../../profile-widget/qmlprofile.h \
 | 
			
		||||
	../../profile-widget/diveprofileitem.h \
 | 
			
		||||
	../../profile-widget/profilewidget2.h \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,6 +21,8 @@ set(SUBSURFACE_GENERIC_MODELS_LIB_SRCS
 | 
			
		|||
	divetripmodel.h
 | 
			
		||||
	filterconstraintmodel.cpp
 | 
			
		||||
	filterconstraintmodel.h
 | 
			
		||||
	filterpresetmodel.cpp
 | 
			
		||||
	filterpresetmodel.h
 | 
			
		||||
	maplocationmodel.cpp
 | 
			
		||||
	maplocationmodel.h
 | 
			
		||||
	models.cpp
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										59
									
								
								qt-models/filterpresetmodel.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								qt-models/filterpresetmodel.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,59 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
#include "filterpresetmodel.h"
 | 
			
		||||
#include "core/filterconstraint.h"
 | 
			
		||||
#include "core/filterpreset.h"
 | 
			
		||||
#include "core/qthelper.h"
 | 
			
		||||
#include "core/subsurface-qt/divelistnotifier.h"
 | 
			
		||||
 | 
			
		||||
FilterPresetModel::FilterPresetModel()
 | 
			
		||||
{
 | 
			
		||||
	setHeaderDataStrings(QStringList{ "", tr("Name") });
 | 
			
		||||
	connect(&diveListNotifier, &DiveListNotifier::dataReset, this, &FilterPresetModel::reset);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FilterPresetModel::~FilterPresetModel()
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FilterPresetModel *FilterPresetModel::instance()
 | 
			
		||||
{
 | 
			
		||||
	static FilterPresetModel self;
 | 
			
		||||
	return &self;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QVariant FilterPresetModel::data(const QModelIndex &index, int role) const
 | 
			
		||||
{
 | 
			
		||||
	if (!index.isValid() || index.row() >= filter_presets_count())
 | 
			
		||||
		return QVariant();
 | 
			
		||||
 | 
			
		||||
	switch (role) {
 | 
			
		||||
	case Qt::DisplayRole:
 | 
			
		||||
		if (index.column() == NAME)
 | 
			
		||||
			return filter_preset_name_qstring(index.row());
 | 
			
		||||
		break;
 | 
			
		||||
	case Qt::DecorationRole:
 | 
			
		||||
		if (index.column() == REMOVE)
 | 
			
		||||
			return trashIcon();
 | 
			
		||||
		break;
 | 
			
		||||
	case Qt::SizeHintRole:
 | 
			
		||||
		if (index.column() == REMOVE)
 | 
			
		||||
			return trashIcon().size();
 | 
			
		||||
		break;
 | 
			
		||||
	case Qt::ToolTipRole:
 | 
			
		||||
		if (index.column() == REMOVE)
 | 
			
		||||
			return tr("Clicking here will remove this filter set.");
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
	return QVariant();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int FilterPresetModel::rowCount(const QModelIndex &parent) const
 | 
			
		||||
{
 | 
			
		||||
	return filter_presets_count();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FilterPresetModel::reset()
 | 
			
		||||
{
 | 
			
		||||
	beginResetModel();
 | 
			
		||||
	endResetModel();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								qt-models/filterpresetmodel.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								qt-models/filterpresetmodel.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
// SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
#ifndef FILTERPRESETMODEL_H
 | 
			
		||||
#define FILTERPRESETMODEL_H
 | 
			
		||||
 | 
			
		||||
#include "cleanertablemodel.h"
 | 
			
		||||
#include "core/filterpreset.h"
 | 
			
		||||
 | 
			
		||||
class FilterPresetModel : public CleanerTableModel {
 | 
			
		||||
	Q_OBJECT
 | 
			
		||||
public:
 | 
			
		||||
	// For QML we will have to define roles
 | 
			
		||||
	enum Column {
 | 
			
		||||
		REMOVE,
 | 
			
		||||
		NAME
 | 
			
		||||
	};
 | 
			
		||||
private
 | 
			
		||||
slots:
 | 
			
		||||
	void reset();
 | 
			
		||||
public:
 | 
			
		||||
	// there is one global filter preset list, therefore this model is a singleton
 | 
			
		||||
	static FilterPresetModel *instance();
 | 
			
		||||
private:
 | 
			
		||||
	FilterPresetModel();
 | 
			
		||||
	~FilterPresetModel();
 | 
			
		||||
	QVariant data(const QModelIndex &index, int role) const override;
 | 
			
		||||
	int rowCount(const QModelIndex &parent) const override;
 | 
			
		||||
	std::vector<filter_constraint> constraints;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue