mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Move Tankinfomodel to its own file
Another change to make it easier to program the mobile ui. This was a fairly easy patch: just moved the contents of the file and fixed the includes. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									f432b764e7
								
							
						
					
					
						commit
						32b0afa3e7
					
				
					 8 changed files with 154 additions and 140 deletions
				
			
		| 
						 | 
					@ -252,6 +252,7 @@ set(SUBSURFACE_MODELS_LIB_SRCS
 | 
				
			||||||
	qt-models/diveplannermodel.cpp
 | 
						qt-models/diveplannermodel.cpp
 | 
				
			||||||
	qt-models/models.cpp
 | 
						qt-models/models.cpp
 | 
				
			||||||
	qt-models/filtermodels.cpp
 | 
						qt-models/filtermodels.cpp
 | 
				
			||||||
 | 
						qt-models/tankinfomodel.cpp
 | 
				
			||||||
	qt-models/completionmodels.cpp
 | 
						qt-models/completionmodels.cpp
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
source_group("Subsurface Models" FILES ${SUBSURFACE_MODELS})
 | 
					source_group("Subsurface Models" FILES ${SUBSURFACE_MODELS})
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
#include "cylindermodel.h"
 | 
					#include "cylindermodel.h"
 | 
				
			||||||
 | 
					#include "tankinfomodel.h"
 | 
				
			||||||
#include "models.h"
 | 
					#include "models.h"
 | 
				
			||||||
#include "helpers.h"
 | 
					#include "helpers.h"
 | 
				
			||||||
#include "dive.h"
 | 
					#include "dive.h"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -441,117 +441,6 @@ void WSInfoModel::update()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TankInfoModel *TankInfoModel::instance()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	static QScopedPointer<TankInfoModel> self(new TankInfoModel());
 | 
					 | 
				
			||||||
	return self.data();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const QString &TankInfoModel::biggerString() const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return biggerEntry;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool TankInfoModel::insertRows(int row, int count, const QModelIndex &parent)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	beginInsertRows(parent, rowCount(), rowCount());
 | 
					 | 
				
			||||||
	rows += count;
 | 
					 | 
				
			||||||
	endInsertRows();
 | 
					 | 
				
			||||||
	return true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool TankInfoModel::setData(const QModelIndex &index, const QVariant &value, int role)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	struct tank_info_t *info = &tank_info[index.row()];
 | 
					 | 
				
			||||||
	switch (index.column()) {
 | 
					 | 
				
			||||||
	case DESCRIPTION:
 | 
					 | 
				
			||||||
		info->name = strdup(value.toByteArray().data());
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	case ML:
 | 
					 | 
				
			||||||
		info->ml = value.toInt();
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	case BAR:
 | 
					 | 
				
			||||||
		info->bar = value.toInt();
 | 
					 | 
				
			||||||
		break;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	emit dataChanged(index, index);
 | 
					 | 
				
			||||||
	return true;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void TankInfoModel::clear()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
QVariant TankInfoModel::data(const QModelIndex &index, int role) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	QVariant ret;
 | 
					 | 
				
			||||||
	if (!index.isValid()) {
 | 
					 | 
				
			||||||
		return ret;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if (role == Qt::FontRole) {
 | 
					 | 
				
			||||||
		return defaultModelFont();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if (role == Qt::DisplayRole || role == Qt::EditRole) {
 | 
					 | 
				
			||||||
		struct tank_info_t *info = &tank_info[index.row()];
 | 
					 | 
				
			||||||
		int ml = info->ml;
 | 
					 | 
				
			||||||
		double bar = (info->psi) ? psi_to_bar(info->psi) : info->bar;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (info->cuft && info->psi)
 | 
					 | 
				
			||||||
			ml = cuft_to_l(info->cuft) * 1000 / bar_to_atm(bar);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		switch (index.column()) {
 | 
					 | 
				
			||||||
		case BAR:
 | 
					 | 
				
			||||||
			ret = bar * 1000;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case ML:
 | 
					 | 
				
			||||||
			ret = ml;
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		case DESCRIPTION:
 | 
					 | 
				
			||||||
			ret = QString(info->name);
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return ret;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int TankInfoModel::rowCount(const QModelIndex &parent) const
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return rows + 1;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
TankInfoModel::TankInfoModel() : rows(-1)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	setHeaderDataStrings(QStringList() << tr("Description") << tr("ml") << tr("bar"));
 | 
					 | 
				
			||||||
	struct tank_info_t *info = tank_info;
 | 
					 | 
				
			||||||
	for (info = tank_info; info->name; info++, rows++) {
 | 
					 | 
				
			||||||
		QString infoName = gettextFromC::instance()->tr(info->name);
 | 
					 | 
				
			||||||
		if (infoName.count() > biggerEntry.count())
 | 
					 | 
				
			||||||
			biggerEntry = infoName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (rows > -1) {
 | 
					 | 
				
			||||||
		beginInsertRows(QModelIndex(), 0, rows);
 | 
					 | 
				
			||||||
		endInsertRows();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void TankInfoModel::update()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	if (rows > -1) {
 | 
					 | 
				
			||||||
		beginRemoveRows(QModelIndex(), 0, rows);
 | 
					 | 
				
			||||||
		endRemoveRows();
 | 
					 | 
				
			||||||
		rows = -1;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	struct tank_info_t *info = tank_info;
 | 
					 | 
				
			||||||
	for (info = tank_info; info->name; info++, rows++)
 | 
					 | 
				
			||||||
		;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (rows > -1) {
 | 
					 | 
				
			||||||
		beginInsertRows(QModelIndex(), 0, rows);
 | 
					 | 
				
			||||||
		endInsertRows();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//#################################################################################################
 | 
					//#################################################################################################
 | 
				
			||||||
//#
 | 
					//#
 | 
				
			||||||
//#	Tree Model - a Basic Tree Model so I don't need to kill myself repeating this for every model.
 | 
					//#	Tree Model - a Basic Tree Model so I don't need to kill myself repeating this for every model.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,35 +21,6 @@
 | 
				
			||||||
#include "../divecomputer.h"
 | 
					#include "../divecomputer.h"
 | 
				
			||||||
#include "cleanertablemodel.h"
 | 
					#include "cleanertablemodel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Encapsulates the tank_info global variable
 | 
					 | 
				
			||||||
 * to show on Qt's Model View System.*/
 | 
					 | 
				
			||||||
class TankInfoModel : public CleanerTableModel {
 | 
					 | 
				
			||||||
	Q_OBJECT
 | 
					 | 
				
			||||||
public:
 | 
					 | 
				
			||||||
	static TankInfoModel *instance();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	enum Column {
 | 
					 | 
				
			||||||
		DESCRIPTION,
 | 
					 | 
				
			||||||
		ML,
 | 
					 | 
				
			||||||
		BAR
 | 
					 | 
				
			||||||
	};
 | 
					 | 
				
			||||||
	TankInfoModel();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*reimp*/ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
 | 
					 | 
				
			||||||
	/*reimp*/ int rowCount(const QModelIndex &parent = QModelIndex()) const;
 | 
					 | 
				
			||||||
	/*reimp*/ bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
 | 
					 | 
				
			||||||
	/*reimp*/ bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
 | 
					 | 
				
			||||||
	const QString &biggerString() const;
 | 
					 | 
				
			||||||
	void clear();
 | 
					 | 
				
			||||||
public
 | 
					 | 
				
			||||||
slots:
 | 
					 | 
				
			||||||
	void update();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private:
 | 
					 | 
				
			||||||
	int rows;
 | 
					 | 
				
			||||||
	QString biggerEntry;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Encapsulate ws_info */
 | 
					/* Encapsulate ws_info */
 | 
				
			||||||
class WSInfoModel : public CleanerTableModel {
 | 
					class WSInfoModel : public CleanerTableModel {
 | 
				
			||||||
	Q_OBJECT
 | 
						Q_OBJECT
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										115
									
								
								qt-models/tankinfomodel.cpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								qt-models/tankinfomodel.cpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,115 @@
 | 
				
			||||||
 | 
					#include "tankinfomodel.h"
 | 
				
			||||||
 | 
					#include "dive.h"
 | 
				
			||||||
 | 
					#include "gettextfromc.h"
 | 
				
			||||||
 | 
					#include "metrics.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TankInfoModel *TankInfoModel::instance()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						static QScopedPointer<TankInfoModel> self(new TankInfoModel());
 | 
				
			||||||
 | 
						return self.data();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const QString &TankInfoModel::biggerString() const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return biggerEntry;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool TankInfoModel::insertRows(int row, int count, const QModelIndex &parent)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						beginInsertRows(parent, rowCount(), rowCount());
 | 
				
			||||||
 | 
						rows += count;
 | 
				
			||||||
 | 
						endInsertRows();
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool TankInfoModel::setData(const QModelIndex &index, const QVariant &value, int role)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct tank_info_t *info = &tank_info[index.row()];
 | 
				
			||||||
 | 
						switch (index.column()) {
 | 
				
			||||||
 | 
						case DESCRIPTION:
 | 
				
			||||||
 | 
							info->name = strdup(value.toByteArray().data());
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case ML:
 | 
				
			||||||
 | 
							info->ml = value.toInt();
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						case BAR:
 | 
				
			||||||
 | 
							info->bar = value.toInt();
 | 
				
			||||||
 | 
							break;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						emit dataChanged(index, index);
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TankInfoModel::clear()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					QVariant TankInfoModel::data(const QModelIndex &index, int role) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						QVariant ret;
 | 
				
			||||||
 | 
						if (!index.isValid()) {
 | 
				
			||||||
 | 
							return ret;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (role == Qt::FontRole) {
 | 
				
			||||||
 | 
							return defaultModelFont();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if (role == Qt::DisplayRole || role == Qt::EditRole) {
 | 
				
			||||||
 | 
							struct tank_info_t *info = &tank_info[index.row()];
 | 
				
			||||||
 | 
							int ml = info->ml;
 | 
				
			||||||
 | 
							double bar = (info->psi) ? psi_to_bar(info->psi) : info->bar;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (info->cuft && info->psi)
 | 
				
			||||||
 | 
								ml = cuft_to_l(info->cuft) * 1000 / bar_to_atm(bar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							switch (index.column()) {
 | 
				
			||||||
 | 
							case BAR:
 | 
				
			||||||
 | 
								ret = bar * 1000;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case ML:
 | 
				
			||||||
 | 
								ret = ml;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							case DESCRIPTION:
 | 
				
			||||||
 | 
								ret = QString(info->name);
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int TankInfoModel::rowCount(const QModelIndex &parent) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return rows + 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TankInfoModel::TankInfoModel() : rows(-1)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						setHeaderDataStrings(QStringList() << tr("Description") << tr("ml") << tr("bar"));
 | 
				
			||||||
 | 
						struct tank_info_t *info = tank_info;
 | 
				
			||||||
 | 
						for (info = tank_info; info->name; info++, rows++) {
 | 
				
			||||||
 | 
							QString infoName = gettextFromC::instance()->tr(info->name);
 | 
				
			||||||
 | 
							if (infoName.count() > biggerEntry.count())
 | 
				
			||||||
 | 
								biggerEntry = infoName;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (rows > -1) {
 | 
				
			||||||
 | 
							beginInsertRows(QModelIndex(), 0, rows);
 | 
				
			||||||
 | 
							endInsertRows();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TankInfoModel::update()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (rows > -1) {
 | 
				
			||||||
 | 
							beginRemoveRows(QModelIndex(), 0, rows);
 | 
				
			||||||
 | 
							endRemoveRows();
 | 
				
			||||||
 | 
							rows = -1;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						struct tank_info_t *info = tank_info;
 | 
				
			||||||
 | 
						for (info = tank_info; info->name; info++, rows++)
 | 
				
			||||||
 | 
							;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (rows > -1) {
 | 
				
			||||||
 | 
							beginInsertRows(QModelIndex(), 0, rows);
 | 
				
			||||||
 | 
							endInsertRows();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										35
									
								
								qt-models/tankinfomodel.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								qt-models/tankinfomodel.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					#ifndef TANKINFOMODEL_H
 | 
				
			||||||
 | 
					#define TANKINFOMODEL_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "cleanertablemodel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Encapsulates the tank_info global variable
 | 
				
			||||||
 | 
					 * to show on Qt's Model View System.*/
 | 
				
			||||||
 | 
					class TankInfoModel : public CleanerTableModel {
 | 
				
			||||||
 | 
						Q_OBJECT
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
						static TankInfoModel *instance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						enum Column {
 | 
				
			||||||
 | 
							DESCRIPTION,
 | 
				
			||||||
 | 
							ML,
 | 
				
			||||||
 | 
							BAR
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						TankInfoModel();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/*reimp*/ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
 | 
				
			||||||
 | 
						/*reimp*/ int rowCount(const QModelIndex &parent = QModelIndex()) const;
 | 
				
			||||||
 | 
						/*reimp*/ bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
 | 
				
			||||||
 | 
						/*reimp*/ bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
 | 
				
			||||||
 | 
						const QString &biggerString() const;
 | 
				
			||||||
 | 
						void clear();
 | 
				
			||||||
 | 
					public
 | 
				
			||||||
 | 
					slots:
 | 
				
			||||||
 | 
						void update();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
						int rows;
 | 
				
			||||||
 | 
						QString biggerEntry;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,7 @@
 | 
				
			||||||
#include <QPrintDialog>
 | 
					#include <QPrintDialog>
 | 
				
			||||||
#include "printdialog.h"
 | 
					#include "printdialog.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#include "tankinfomodel.h"
 | 
				
			||||||
#include "diveplannermodel.h"
 | 
					#include "diveplannermodel.h"
 | 
				
			||||||
#include "divelogimportdialog.h"
 | 
					#include "divelogimportdialog.h"
 | 
				
			||||||
#include "divelogexportdialog.h"
 | 
					#include "divelogexportdialog.h"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@
 | 
				
			||||||
#include "models.h"
 | 
					#include "models.h"
 | 
				
			||||||
#include "starwidget.h"
 | 
					#include "starwidget.h"
 | 
				
			||||||
#include "profile/profilewidget2.h"
 | 
					#include "profile/profilewidget2.h"
 | 
				
			||||||
 | 
					#include "tankinfomodel.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <QCompleter>
 | 
					#include <QCompleter>
 | 
				
			||||||
#include <QKeyEvent>
 | 
					#include <QKeyEvent>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue