mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	maplocationmodel: add a "selectedUuid" property to MapLocationModel
Inside the QML Map class there is a MapItemView item. This item uses a delegate that receive a "model" property from the MapLocationModel, but infact that's a QObject with the MapLocation defined properties. That's how MapItemView works. The problem here is that "model" QObject cannot be cast back to a MapLocation as the meta data in there does not include a MapLocation sub-class, for some reason. Even if using propery() on that QObject to fetch data like coordinates works, instead of storing this strange object pointer, store the MapLocation UUID (from dive_site) which is a uint32_t. setSelectedUuid() deals with this oddity and finds the correct MapLocation pointer in the table and dispatches a selectedLocationChanged() signal for it. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
This commit is contained in:
		
							parent
							
								
									a9c0abd71a
								
							
						
					
					
						commit
						4b03216fdb
					
				
					 2 changed files with 22 additions and 0 deletions
				
			
		|  | @ -92,3 +92,19 @@ void MapLocationModel::clear() | ||||||
| 	m_mapLocations.clear(); | 	m_mapLocations.clear(); | ||||||
| 	endRemoveRows(); | 	endRemoveRows(); | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | quint32 MapLocationModel::selectedUuid() | ||||||
|  | { | ||||||
|  | 	return m_selectedUuid; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void MapLocationModel::setSelectedUuid(quint32 uuid) | ||||||
|  | { | ||||||
|  | 	m_selectedUuid = uuid; | ||||||
|  | 	MapLocation *location = NULL; | ||||||
|  | 	foreach(location, m_mapLocations) { | ||||||
|  | 		if (location->getRole(MapLocation::Roles::RoleUuid) == uuid) | ||||||
|  | 			break; | ||||||
|  | 	} | ||||||
|  | 	emit selectedLocationChanged(location); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | @ -38,6 +38,7 @@ class MapLocationModel : public QAbstractListModel | ||||||
| { | { | ||||||
| 	Q_OBJECT | 	Q_OBJECT | ||||||
| 	Q_PROPERTY(int count READ count NOTIFY countChanged) | 	Q_PROPERTY(int count READ count NOTIFY countChanged) | ||||||
|  | 	Q_PROPERTY(quint32 selectedUuid READ selectedUuid WRITE setSelectedUuid NOTIFY selectedLocationChanged) | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
| 	MapLocationModel(QObject *parent = NULL); | 	MapLocationModel(QObject *parent = NULL); | ||||||
|  | @ -56,11 +57,16 @@ protected: | ||||||
| 	QHash<int, QByteArray> roleNames() const; | 	QHash<int, QByteArray> roleNames() const; | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|  | 	quint32 selectedUuid(); | ||||||
|  | 	void setSelectedUuid(quint32); | ||||||
|  | 
 | ||||||
| 	QVector<MapLocation *> m_mapLocations; | 	QVector<MapLocation *> m_mapLocations; | ||||||
| 	QHash<int, QByteArray> m_roles; | 	QHash<int, QByteArray> m_roles; | ||||||
|  | 	quint32 m_selectedUuid; | ||||||
| 
 | 
 | ||||||
| signals: | signals: | ||||||
| 	void countChanged(int c); | 	void countChanged(int c); | ||||||
|  | 	void selectedLocationChanged(MapLocation *); | ||||||
| 
 | 
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue