// SPDX-License-Identifier: AGPL-3.0-only /** * Digital Voice Modem - Desktop Dispatch Console * AGPLv3 Open Source. Use is subject to license terms. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * @package DVM / Desktop Dispatch Console * @license AGPLv3 License (https://opensource.org/licenses/AGPL-3.0) * * Copyright (C) 2024 Caleb, K4PHP * */ using dvmconsole.Controls; namespace dvmconsole { /// /// /// public class SelectedChannelsManager { private readonly HashSet selectedChannels; public IReadOnlyCollection GetSelectedChannels() => selectedChannels; /* ** Events */ /// /// /// public event Action SelectedChannelsChanged; /* ** Methods */ /// /// Initializes a new instance of the class. /// public SelectedChannelsManager() { selectedChannels = new HashSet(); } /// /// /// /// public void AddSelectedChannel(ChannelBox channel) { if (selectedChannels.Add(channel)) { channel.IsSelected = true; SelectedChannelsChanged.Invoke(); } } /// /// /// /// public void RemoveSelectedChannel(ChannelBox channel) { if (selectedChannels.Remove(channel)) { channel.IsSelected = false; SelectedChannelsChanged.Invoke(); } } /// /// /// public void ClearSelections() { foreach (var channel in selectedChannels) channel.IsSelected = false; selectedChannels.Clear(); SelectedChannelsChanged.Invoke(); } } // public class SelectedChannelsManager } // namespace dvmconsole