From 3c75ac4f9e1d927b53d1e1f34461c3883eab2ef7 Mon Sep 17 00:00:00 2001 From: srcejon Date: Thu, 4 Apr 2024 15:21:09 +0100 Subject: [PATCH] Add add and removed channels or features. --- sdrbase/availablechannelorfeaturehandler.cpp | 19 ++++++++++++++++++- sdrbase/availablechannelorfeaturehandler.h | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/sdrbase/availablechannelorfeaturehandler.cpp b/sdrbase/availablechannelorfeaturehandler.cpp index eb08af7ff..af0d82ad7 100644 --- a/sdrbase/availablechannelorfeaturehandler.cpp +++ b/sdrbase/availablechannelorfeaturehandler.cpp @@ -81,11 +81,28 @@ void AvailableChannelOrFeatureHandler::scanAvailableChannelsAndFeatures() } } + // Create lists of which channels and features have been added or removed + QStringList added; + QStringList removed; + + for (const auto& channelOrFeature : availableChannelOrFeatureList) + { + if (m_availableChannelOrFeatureList.indexOfObject(channelOrFeature.m_object) < 0) { + added.append(channelOrFeature.getId()); + } + } + for (const auto& channelOrFeature : m_availableChannelOrFeatureList) + { + if (availableChannelOrFeatureList.indexOfObject(channelOrFeature.m_object) < 0) { + removed.append(channelOrFeature.getId()); + } + } + m_availableChannelOrFeatureList = availableChannelOrFeatureList; // Signal if list has changed if (changes) { - emit channelsOrFeaturesChanged(renameFrom, renameTo); + emit channelsOrFeaturesChanged(renameFrom, renameTo, removed, added); } } diff --git a/sdrbase/availablechannelorfeaturehandler.h b/sdrbase/availablechannelorfeaturehandler.h index 6c94c7c50..5568799d5 100644 --- a/sdrbase/availablechannelorfeaturehandler.h +++ b/sdrbase/availablechannelorfeaturehandler.h @@ -78,7 +78,7 @@ private slots: void handleFeatureRemoved(int featureSetIndex, Feature *feature); signals: - void channelsOrFeaturesChanged(const QStringList& renameFrom, const QStringList& renameTo); //!< Emitted when list of channels or features has changed + void channelsOrFeaturesChanged(const QStringList& renameFrom, const QStringList& renameTo, const QStringList& removed, const QStringList& added); //!< Emitted when list of channels or features has changed void messageEnqueued(MessageQueue *messageQueue); //!< Emitted when message enqueued to a pipe };