| 
									
										
										
										
											2013-04-13 20:44:02 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * models.cpp | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * classes for the equipment models of Subsurface | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2013-04-13 10:17:59 -03:00
										 |  |  | #include "models.h"
 | 
					
						
							| 
									
										
										
										
											2014-11-03 17:32:12 -08:00
										 |  |  | #include "helpers.h"
 | 
					
						
							| 
									
										
										
										
											2015-05-28 18:33:51 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-29 14:19:56 -03:00
										 |  |  | #include <QLocale>
 | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | #include <QSettings>
 | 
					
						
							| 
									
										
										
										
											2013-04-24 16:57:30 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-19 16:15:20 +02:00
										 |  |  | // initialize the trash icon if necessary
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-10-31 14:28:39 -07:00
										 |  |  | const QPixmap &trashIcon() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-05-28 16:23:49 -03:00
										 |  |  | 	static QPixmap trash = QPixmap(":trash").scaledToHeight(defaultIconMetrics().sz_small); | 
					
						
							|  |  |  | 	return trash; | 
					
						
							| 
									
										
										
										
											2013-05-22 11:00:20 -03:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-14 17:39:35 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | Qt::ItemFlags GasSelectionModel::flags(const QModelIndex &index) const | 
					
						
							| 
									
										
										
										
											2013-11-14 17:39:35 -02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-11-19 18:17:50 -08:00
										 |  |  | 	return Qt::ItemIsEnabled | Qt::ItemIsSelectable; | 
					
						
							| 
									
										
										
										
											2013-11-14 17:39:35 -02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | GasSelectionModel *GasSelectionModel::instance() | 
					
						
							| 
									
										
										
										
											2013-11-14 17:39:35 -02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2013-11-30 09:18:04 -08:00
										 |  |  | 	static QScopedPointer<GasSelectionModel> self(new GasSelectionModel()); | 
					
						
							|  |  |  | 	return self.data(); | 
					
						
							| 
									
										
										
										
											2013-11-14 17:39:35 -02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-05-28 16:23:49 -03:00
										 |  |  | //TODO: Remove this #include here when the issue below is fixed.
 | 
					
						
							|  |  |  | #include "diveplannermodel.h"
 | 
					
						
							| 
									
										
										
										
											2013-11-14 17:39:35 -02:00
										 |  |  | void GasSelectionModel::repopulate() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2015-05-28 16:23:49 -03:00
										 |  |  | 	/* TODO:
 | 
					
						
							|  |  |  | 	 * getGasList shouldn't be a member of DivePlannerPointsModel, | 
					
						
							|  |  |  | 	 * it has nothing to do with the current plain being calculated: | 
					
						
							|  |  |  | 	 * it's internal to the current_dive. | 
					
						
							|  |  |  | 	 */ | 
					
						
							| 
									
										
										
										
											2013-11-19 18:17:50 -08:00
										 |  |  | 	setStringList(DivePlannerPointsModel::instance()->getGasList()); | 
					
						
							| 
									
										
										
										
											2013-11-14 17:39:35 -02:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2013-11-14 17:43:28 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | QVariant GasSelectionModel::data(const QModelIndex &index, int role) const | 
					
						
							| 
									
										
										
										
											2013-11-14 17:43:28 -02:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2014-01-16 11:50:56 +07:00
										 |  |  | 	if (role == Qt::FontRole) { | 
					
						
							| 
									
										
										
										
											2013-11-14 17:43:28 -02:00
										 |  |  | 		return defaultModelFont(); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	return QStringListModel::data(index, role); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Language Model, The Model to populate the list of possible Languages.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | LanguageModel *LanguageModel::instance() | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | { | 
					
						
							|  |  |  | 	static LanguageModel *self = new LanguageModel(); | 
					
						
							|  |  |  | 	QLocale l; | 
					
						
							|  |  |  | 	return self; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | LanguageModel::LanguageModel(QObject *parent) : QAbstractListModel(parent) | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | { | 
					
						
							|  |  |  | 	QSettings s; | 
					
						
							| 
									
										
										
										
											2013-12-06 18:30:05 -02:00
										 |  |  | 	QDir d(getSubsurfaceDataPath("translations")); | 
					
						
							| 
									
										
										
										
											2014-07-15 14:43:20 -03:00
										 |  |  | 	Q_FOREACH (const QString &s, d.entryList()) { | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 		if (s.startsWith("subsurface_") && s.endsWith(".qm")) { | 
					
						
							|  |  |  | 			languages.push_back((s == "subsurface_source.qm") ? "English" : s); | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | QVariant LanguageModel::data(const QModelIndex &index, int role) const | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | { | 
					
						
							|  |  |  | 	QLocale loc; | 
					
						
							| 
									
										
										
										
											2013-12-06 17:48:38 -02:00
										 |  |  | 	QString currentString = languages.at(index.row()); | 
					
						
							| 
									
										
										
										
											2014-01-16 11:50:56 +07:00
										 |  |  | 	if (!index.isValid()) | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | 		return QVariant(); | 
					
						
							| 
									
										
										
										
											2014-01-16 11:50:56 +07:00
										 |  |  | 	switch (role) { | 
					
						
							| 
									
										
										
										
											2014-02-12 06:18:15 -08:00
										 |  |  | 	case Qt::DisplayRole: { | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 		QLocale l(currentString.remove("subsurface_")); | 
					
						
							| 
									
										
										
										
											2014-02-12 06:18:15 -08:00
										 |  |  | 		return currentString == "English" ? currentString : QString("%1 (%2)").arg(l.languageToString(l.language())).arg(l.countryToString(l.country())); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	case Qt::UserRole: | 
					
						
							|  |  |  | 		return currentString == "English" ? "en_US" : currentString.remove("subsurface_"); | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	return QVariant(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | int LanguageModel::rowCount(const QModelIndex &parent) const | 
					
						
							| 
									
										
										
										
											2013-12-06 14:29:38 -02:00
										 |  |  | { | 
					
						
							|  |  |  | 	return languages.count(); | 
					
						
							|  |  |  | } |