void MarkerList::ValueTreeWrapper::readFrom (const MarkerList& markerList, UndoManager* undoManager) { state.removeAllChildren (undoManager); for (int i = 0; i < markerList.getNumMarkers(); ++i) setMarker (*markerList.getMarker(i), undoManager); }
bool MarkerList::operator== (const MarkerList& other) const noexcept { if (other.markers.size() != markers.size()) return false; for (int i = markers.size(); --i >= 0;) { const Marker* const m1 = markers.getUnchecked(i); jassert (m1 != nullptr); const Marker* const m2 = other.getMarker (m1->name); if (m2 == nullptr || *m1 != *m2) return false; } return true; }
//============================================================================== void MarkerList::ValueTreeWrapper::applyTo (MarkerList& markerList) { const int numMarkers = getNumMarkers(); StringArray updatedMarkers; for (int i = 0; i < numMarkers; ++i) { const ValueTree marker (state.getChild (i)); const String name (marker [nameProperty].toString()); markerList.setMarker (name, RelativeCoordinate (marker [posProperty].toString())); updatedMarkers.add (name); } for (int i = markerList.getNumMarkers(); --i >= 0;) if (! updatedMarkers.contains (markerList.getMarker (i)->name)) markerList.removeMarker (i); }