mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Added basic editing functionality for Cylinders and Weigthsystems
This patch adds basic editing functionality for Cylinders and Weigthsystems, it still doesn't use delegates to show the data to the user in a better way, and it does not take in consideration user preferences yet, but it's a starting point. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
This commit is contained in:
		
							parent
							
								
									8cfb2aa237
								
							
						
					
					
						commit
						75956f0f91
					
				
					 2 changed files with 62 additions and 4 deletions
				
			
		|  | @ -113,6 +113,47 @@ QVariant CylindersModel::data(const QModelIndex& index, int role) const | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, int role) | ||||||
|  | { | ||||||
|  | 	cylinder_t *cyl = ¤t->cylinder[index.row()]; | ||||||
|  | 	switch(index.column()){ | ||||||
|  | 		case TYPE:{ | ||||||
|  | 			QByteArray desc = value.toByteArray(); | ||||||
|  | 			cyl->type.description = strdup(desc.data()); | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  | 		case SIZE: | ||||||
|  | 			// we can't use get_volume_string because the idiotic imperial tank
 | ||||||
|  | 			// sizes take working pressure into account...
 | ||||||
|  | 			if (cyl->type.size.mliter) { | ||||||
|  | 				if (prefs.units.volume == prefs.units.CUFT) { | ||||||
|  | 					double liters = cuft_to_l(value.toDouble()); | ||||||
|  | 					cyl->type.size.mliter = liters * 1000.0; | ||||||
|  | 				} else { | ||||||
|  | 					cyl->type.size.mliter = value.toDouble() * 1000.0; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			break; | ||||||
|  | 		case MAXPRESS: | ||||||
|  | 			cyl->type.workingpressure.mbar = value.toInt(); | ||||||
|  | 			break; | ||||||
|  | 		case START: | ||||||
|  | 			cyl->start.mbar = value.toInt(); | ||||||
|  | 			break; | ||||||
|  | 		case END: | ||||||
|  | 			cyl->end.mbar = value.toInt(); | ||||||
|  | 			break; | ||||||
|  | 		case O2: | ||||||
|  | 			cyl->gasmix.o2.permille = value.toInt() * 10 - 5; | ||||||
|  | 			break; | ||||||
|  | 		case HE: | ||||||
|  | 			cyl->gasmix.he.permille = value.toInt() * 10 - 5; | ||||||
|  | 			break; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  |     return QAbstractItemModel::setData(index, value, role); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| int CylindersModel::rowCount(const QModelIndex& parent) const | int CylindersModel::rowCount(const QModelIndex& parent) const | ||||||
| { | { | ||||||
| 	return 	rows; | 	return 	rows; | ||||||
|  | @ -176,7 +217,7 @@ Qt::ItemFlags CylindersModel::flags(const QModelIndex& index) const | ||||||
| { | { | ||||||
| 	if (index.column() == REMOVE) | 	if (index.column() == REMOVE) | ||||||
| 		return Qt::ItemIsEnabled; | 		return Qt::ItemIsEnabled; | ||||||
| 	return QAbstractItemModel::flags(index); | 	return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void CylindersModel::remove(const QModelIndex& index) | void CylindersModel::remove(const QModelIndex& index) | ||||||
|  | @ -239,11 +280,26 @@ QVariant WeightModel::data(const QModelIndex& index, int role) const | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | bool WeightModel::setData(const QModelIndex& index, const QVariant& value, int role) | ||||||
|  | { | ||||||
|  | 	weightsystem_t *ws = ¤t_dive->weightsystem[index.row()]; | ||||||
|  | 	switch(index.column()) { | ||||||
|  | 	case TYPE:{ | ||||||
|  | 		QByteArray desc = value.toByteArray(); | ||||||
|  | 		ws->description = strdup(desc.data()); | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | 	case WEIGHT: | ||||||
|  | 		ws->weight.grams = value.toInt() *1000; | ||||||
|  | 		break; | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| Qt::ItemFlags WeightModel::flags(const QModelIndex& index) const | Qt::ItemFlags WeightModel::flags(const QModelIndex& index) const | ||||||
| { | { | ||||||
| 	if (index.column() == REMOVE) | 	if (index.column() == REMOVE) | ||||||
| 		return Qt::ItemIsEnabled; | 		return Qt::ItemIsEnabled; | ||||||
| 	return QAbstractItemModel::flags(index); | 	return QAbstractItemModel::flags(index) | Qt::ItemIsEditable; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int WeightModel::rowCount(const QModelIndex& parent) const | int WeightModel::rowCount(const QModelIndex& parent) const | ||||||
|  |  | ||||||
|  | @ -46,6 +46,7 @@ public: | ||||||
| 	/*reimp*/ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; | 	/*reimp*/ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; | ||||||
| 	/*reimp*/ int rowCount(const QModelIndex& parent = QModelIndex()) const; | 	/*reimp*/ int rowCount(const QModelIndex& parent = QModelIndex()) const; | ||||||
| 	/*reimp*/ Qt::ItemFlags flags(const QModelIndex& index) const; | 	/*reimp*/ Qt::ItemFlags flags(const QModelIndex& index) const; | ||||||
|  | 	/*reimp*/ bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole); | ||||||
| 
 | 
 | ||||||
| 	void add(cylinder_t *cyl); | 	void add(cylinder_t *cyl); | ||||||
| 	void clear(); | 	void clear(); | ||||||
|  | @ -70,6 +71,7 @@ public: | ||||||
| 	/*reimp*/ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; | 	/*reimp*/ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const; | ||||||
| 	/*reimp*/ int rowCount(const QModelIndex& parent = QModelIndex()) const; | 	/*reimp*/ int rowCount(const QModelIndex& parent = QModelIndex()) const; | ||||||
| 	/*reimp*/ Qt::ItemFlags flags(const QModelIndex& index) const; | 	/*reimp*/ Qt::ItemFlags flags(const QModelIndex& index) const; | ||||||
|  | 	/*reimp*/ bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole); | ||||||
| 
 | 
 | ||||||
| 	void add(weightsystem_t *weight); | 	void add(weightsystem_t *weight); | ||||||
| 	void clear(); | 	void clear(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue