summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-08-31 23:24:21 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-09-06 11:48:47 -0700
commit1d01fff0061bde6260259a9a2b46f80a31ad1218 (patch)
tree0bf79ebf5e2beaa5b0fa7b5b8c07d3ae9a7a02a8
parent9322092e415946e212f94b3e0a4e330f4b7c07d6 (diff)
downloadsubsurface-1d01fff0061bde6260259a9a2b46f80a31ad1218.tar.gz
Map: export isSelected as attribute from MapLocationModel
Recently we changed the MapLocationModel-items to store whether they are selected. Thus, we can directly export an isSelected flag instead of calling a function taking a dive-site argument. 1) This makes the QML easier to read. 2) This avoids passing pointers through QML which has caused us lots of pain. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
-rw-r--r--map-widget/qml/MapWidget.qml6
-rw-r--r--qt-models/maplocationmodel.cpp3
-rw-r--r--qt-models/maplocationmodel.h3
3 files changed, 8 insertions, 4 deletions
diff --git a/map-widget/qml/MapWidget.qml b/map-widget/qml/MapWidget.qml
index 8116163cf..a71ade59c 100644
--- a/map-widget/qml/MapWidget.qml
+++ b/map-widget/qml/MapWidget.qml
@@ -66,7 +66,7 @@ Item {
PropertyAnimation { target: mapItemImage; property: "scale"; from: 0.7; to: 1.0; duration: 80 }
}
MouseArea {
- drag.target: (mapHelper.editMode && mapHelper.model.isSelected(model.divesite)) ? mapItem : undefined
+ drag.target: (mapHelper.editMode && model.isSelected) ? mapItem : undefined
anchors.fill: parent
onClicked: {
if (!mapHelper.editMode && model.divesite)
@@ -74,7 +74,7 @@ Item {
}
onDoubleClicked: map.doubleClickHandler(mapItem.coordinate)
onReleased: {
- if (mapHelper.editMode && mapHelper.model.isSelected(model.divesite)) {
+ if (mapHelper.editMode && model.isSelected) {
mapHelper.updateCurrentDiveSiteCoordinatesFromMap(model.divesite, mapItem.coordinate)
}
}
@@ -94,7 +94,7 @@ Item {
id: mapItemText
text: model.name
font.pointSize: 11.0
- color: mapHelper.model.isSelected(model.divesite) ? "white" : "lightgrey"
+ color: model.isSelected ? "white" : "lightgrey"
}
}
}
diff --git a/qt-models/maplocationmodel.cpp b/qt-models/maplocationmodel.cpp
index 57fc76179..3aad02980 100644
--- a/qt-models/maplocationmodel.cpp
+++ b/qt-models/maplocationmodel.cpp
@@ -48,6 +48,8 @@ QVariant MapLocation::getRole(int role) const
QString("qrc:///dive-location-marker-icon");
case Roles::RoleZ:
return m_selected ? 1 : 0;
+ case Roles::RoleIsSelected:
+ return QVariant::fromValue(m_selected);
default:
return QVariant();
}
@@ -105,6 +107,7 @@ QHash<int, QByteArray> MapLocationModel::roleNames() const
roles[MapLocation::Roles::RoleName] = "name";
roles[MapLocation::Roles::RolePixmap] = "pixmap";
roles[MapLocation::Roles::RoleZ] = "z";
+ roles[MapLocation::Roles::RoleIsSelected] = "isSelected";
return roles;
}
diff --git a/qt-models/maplocationmodel.h b/qt-models/maplocationmodel.h
index ce1f999fb..05a772bcf 100644
--- a/qt-models/maplocationmodel.h
+++ b/qt-models/maplocationmodel.h
@@ -33,7 +33,8 @@ public:
RoleCoordinate,
RoleName,
RolePixmap,
- RoleZ
+ RoleZ,
+ RoleIsSelected
};
private: