void PolylineAnnotation::deleteClickedNode() { if ( state() != SceneGraphicsItem::Editing ) { return; } GeoDataLineString *line = static_cast<GeoDataLineString*>( placemark()->geometry() ); if ( m_nodesList.size() <= 2 ) { setRequest( SceneGraphicsItem::RemovePolylineRequest ); return; } m_nodesList.removeAt( m_clickedNodeIndex ); line->remove( m_clickedNodeIndex ); }
void PolylineAnnotation::deleteAllSelectedNodes() { if ( state() != SceneGraphicsItem::Editing ) { return; } GeoDataLineString *line = static_cast<GeoDataLineString*>( placemark()->geometry() ); for ( int i = 0; i < line->size(); ++i ) { if ( m_nodesList.at(i).isSelected() ) { if ( m_nodesList.size() <= 2 ) { setRequest( SceneGraphicsItem::RemovePolylineRequest ); return; } m_nodesList.removeAt( i ); line->remove( i ); --i; } } }