mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 19:13:24 +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();
|
||||
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_PROPERTY(int count READ count NOTIFY countChanged)
|
||||
Q_PROPERTY(quint32 selectedUuid READ selectedUuid WRITE setSelectedUuid NOTIFY selectedLocationChanged)
|
||||
|
||||
public:
|
||||
MapLocationModel(QObject *parent = NULL);
|
||||
|
@ -56,11 +57,16 @@ protected:
|
|||
QHash<int, QByteArray> roleNames() const;
|
||||
|
||||
private:
|
||||
quint32 selectedUuid();
|
||||
void setSelectedUuid(quint32);
|
||||
|
||||
QVector<MapLocation *> m_mapLocations;
|
||||
QHash<int, QByteArray> m_roles;
|
||||
quint32 m_selectedUuid;
|
||||
|
||||
signals:
|
||||
void countChanged(int c);
|
||||
void selectedLocationChanged(MapLocation *);
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue