#include "Visualization/VisualizationSelectionZoneManager.h" #include "Visualization/VisualizationSelectionZoneItem.h" struct VisualizationSelectionZoneManager::VisualizationSelectionZoneManagerPrivate { QVector m_SelectedItems; }; VisualizationSelectionZoneManager::VisualizationSelectionZoneManager() : impl{spimpl::make_unique_impl()} { } void VisualizationSelectionZoneManager::select( const QVector &items) { clearSelection(); for (auto item : items) { setSelected(item, true); } } void VisualizationSelectionZoneManager::setSelected(VisualizationSelectionZoneItem *item, bool value) { if (value != item->selected()) { item->setSelected(value); item->parentPlot()->replot(QCustomPlot::rpQueuedReplot); } if (!value && impl->m_SelectedItems.contains(item)) { impl->m_SelectedItems.removeAll(item); } else if (value) { impl->m_SelectedItems << item; } } void VisualizationSelectionZoneManager::clearSelection() { for (auto item : impl->m_SelectedItems) { item->setSelected(false); item->parentPlot()->replot(QCustomPlot::rpQueuedReplot); } impl->m_SelectedItems.clear(); } QVector VisualizationSelectionZoneManager::selectedItems() const { return impl->m_SelectedItems; }