| 
									
										
										
										
											2020-05-27 08:17:06 +02:00
										 |  |  | // 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); | 
					
						
							| 
									
										
										
										
											2020-05-28 00:19:22 +02:00
										 |  |  | 	connect(&diveListNotifier, &DiveListNotifier::filterPresetAdded, this, &FilterPresetModel::filterPresetAdded); | 
					
						
							|  |  |  | 	connect(&diveListNotifier, &DiveListNotifier::filterPresetRemoved, this, &FilterPresetModel::filterPresetRemoved); | 
					
						
							|  |  |  | 	connect(&diveListNotifier, &DiveListNotifier::filterPresetChanged, this, &FilterPresetModel::filterPresetChanged); | 
					
						
							| 
									
										
										
										
											2020-05-27 08:17:06 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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(); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-05-28 00:19:22 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | void FilterPresetModel::filterPresetAdded(int index) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	beginInsertRows(QModelIndex(), index, index); | 
					
						
							|  |  |  | 	endInsertRows(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void FilterPresetModel::filterPresetChanged(int i) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	QModelIndex idx = index(i, 0); | 
					
						
							|  |  |  | 	dataChanged(idx, idx); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void FilterPresetModel::filterPresetRemoved(int index) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	beginRemoveRows(QModelIndex(), index, index); | 
					
						
							|  |  |  | 	endRemoveRows(); | 
					
						
							|  |  |  | } |