public static IReadOnlyCollection <DeviceFullInfo> CreateDeviceList(MMDeviceCollection collection) { var sortedDevices = new List <DeviceFullInfo>(); foreach (var device in collection) { try { MMDevice d = new MMDevice(device); var deviceInfo = new DeviceFullInfo(d); if (string.IsNullOrEmpty(deviceInfo.Name)) { continue; } sortedDevices.Add(deviceInfo); } catch (Exception e) { string id; device.GetId(out id); MZ.Tools.Trace.Debug("Can't get name of device {0}, Error: {1}", id, e); //throw; } } return(sortedDevices.OrderBy(dev => dev.Name).ThenBy(dev => dev.FriendlyName).ToArray()); }
/// <summary> /// Using the DeviceClassIconPath, get the Icon /// </summary> /// <param name="device"></param> /// <param name="listView"></param> private void AddDeviceIconSmallImage(DeviceFullInfo device) { if (!m_listDevices.SmallImageList.Images.ContainsKey(device.IconPath)) { m_listDevices.SmallImageList.Images.Add(device.IconPath, device.LargeIcon); } }
/// <summary> /// Using the information of the AudioDeviceWrapper, generate a ListViewItem /// </summary> /// <param name="device"></param> /// <param name="selected"></param> /// <param name="listView"></param> /// <returns></returns> private ListViewItem GenerateListViewItem(DeviceFullInfo device, IEnumerable <DeviceInfo> selected, ListView listView) { var listViewItem = new ListViewItem { Text = device.NameClean, ImageKey = device.IconPath, Tag = device }; var selectedDevice = device; var isSelected = selected.Contains(selectedDevice); if (selectedDevice.State == DeviceState.Active && isSelected) { listViewItem.Group = listView.Groups["selectedGroup"]; } else { listViewItem.Group = GetGroup(device.State, listView); } listViewItem.Checked = isSelected; return(listViewItem); }
/// <summary> /// Attempts to set active device to the specified name /// </summary> /// <param name="device"></param> public bool SetActiveDevice(DeviceFullInfo device) { Log.Information("Set Default device: {Device}", device); if (!AppModel.Instance.SetCommunications) { AudioSwitcher.Instance.SwitchTo(device.Id, ERole.eConsole); AudioSwitcher.Instance.SwitchTo(device.Id, ERole.eMultimedia); if (AppModel.Instance.SwitchForegroundProgram) { AudioSwitcher.Instance.ResetProcessDeviceConfiguration(); AudioSwitcher.Instance.SwitchProcessTo(device.Id, ERole.eConsole, (EDataFlow)device.Type); AudioSwitcher.Instance.SwitchProcessTo(device.Id, ERole.eMultimedia, (EDataFlow)device.Type); } } else { Log.Information("Set Default Communication device: {Device}", device); AudioSwitcher.Instance.SwitchTo(device.Id, ERole.ERole_enum_count); if (AppModel.Instance.SwitchForegroundProgram) { AudioSwitcher.Instance.ResetProcessDeviceConfiguration(); AudioSwitcher.Instance.SwitchProcessTo(device.Id, ERole.ERole_enum_count, (EDataFlow)device.Type); } } _lastDevices[device.Type] = device; return(true); }
public void SetActiveDevice(int index) { List <ListViewItem> devices = GetItemGroupSorted(EDeviceState.Active); DeviceFullInfo dev = devices[index].Tag as DeviceFullInfo; SetActiveDevice(dev); }
public void ChangeIcon(UI.Component.TrayIcon trayIcon, DeviceFullInfo deviceInfo) { if (!NeedsToChangeIcon(deviceInfo)) { return; } trayIcon.ReplaceIcon(deviceInfo.SmallIcon); }
public void SetActiveDevice(int index) { ListViewGroup activeGroup = m_listDevices.Groups[0]; ListViewItem item = activeGroup.Items[index]; DeviceFullInfo dev = item.Tag as DeviceFullInfo; SetActiveDevice(dev); }
/// <summary> /// Using the DeviceClassIconPath, get the Icon /// </summary> /// <param name="device"></param> /// <param name="listView"></param> private void AddDeviceIconSmallImage(DeviceFullInfo device, ListView listView) { if (!listView.SmallImageList.Images.ContainsKey(device.IconPath)) { listView.SmallImageList.Images.Add(device.IconPath, device.LargeIcon); } }
private void UpdateUI(string status) { UpdateStatus(status); UpdateActiveDeviceVolume(); m_btnActivate.Enabled = false; m_mnuActivate.Enabled = false; m_mnuActivate.Image = null; m_btnActivate.Image = null; string activateText = "No Device Selected..."; if (m_listDevices.SelectedItems.Count > 0) { m_mnuActivate.Image = m_listDevices.SmallImageList.Images[m_listDevices.SelectedItems[0].ImageKey]; DeviceFullInfo device = GetSelectedDevice(); if (m_listDevices.SelectedItems[0].Font.Bold) //is active { activateText = "Active Device: " + device.FriendlyName; m_mnuMute.Enabled = true; } else { if (device.State == EDeviceState.Active) { m_mnuActivate.Enabled = true; m_btnActivate.Enabled = true; activateText = "Activate: " + device.FriendlyName; } else { activateText = "Inactive: " + device.FriendlyName; } } } m_btnActivate.Text = activateText; m_mnuActivate.Text = activateText; m_btnActivate.Image = m_mnuActivate.Image; if (_activeDevice != null) { m_mnuMute.Enabled = true; m_mnuMute.Text = _activeDevice.AudioEndpointVolume.Mute ? "UnMute: " : "Mute: "; m_mnuMute.Text += _activeDevice.FriendlyName; m_mnuMute.Image = _activeDevice.AudioEndpointVolume.Mute ? m_imageListMute.Images[0] : m_imageListMute.Images[1]; } else { m_mnuMute.Enabled = false; m_mnuMute.Text = "Mute"; m_mnuMute.Image = null; } }
/// <summary> /// Attempts to set active device to the specified name /// </summary> /// <param name="device"></param> public bool SetActiveDevice(DeviceFullInfo device) { Log.Information("Set Default device: {Device}", device); if (!AppModel.Instance.SetCommunications) { AudioController.SwitchTo(device.Id, DeviceRole.Console); AudioController.SwitchTo(device.Id, DeviceRole.Multimedia); } else { Log.Information("Set Default Communication device: {Device}", device); AudioController.SwitchTo(device.Id, DeviceRole.All); } _lastDevices[(DeviceType)device.Type] = device; return(true); }
/// <summary> /// Attempts to set active device to the specified name /// </summary> /// <param name="device"></param> public bool SetActiveDevice(DeviceFullInfo device) { Log.Information("Set Default device: {Device}", device); if (!AppModel.Instance.SetCommunications) { AudioSwitcher.Instance.SwitchTo(device.Id, ERole.eConsole); AudioSwitcher.Instance.SwitchTo(device.Id, ERole.eMultimedia); } else { Log.Information("Set Default Communication device: {Device}", device); AudioSwitcher.Instance.SwitchTo(device.Id, ERole.ERole_enum_count); } _lastDevices[device.Type] = device; return(true); }
private void SetActiveDevice(DeviceFullInfo device) { try { if (device == null || device.State != EDeviceState.Active) { return; } SoundDeviceManager.SetActiveDevice(device.ID, device.DeviceType); SetActiveDeviceToBold(device.Device); } catch (Exception err) { MessageBox.Show(err.Message); } }
private ICollection <DeviceFullInfo> CreateDeviceList(MMDeviceCollection collection) { var sortedDevices = new SortedList <string, DeviceFullInfo>(); foreach (var device in collection) { try { var deviceInfo = new DeviceFullInfo(device); if (string.IsNullOrEmpty(deviceInfo.Name)) { continue; } sortedDevices.Add(device.FriendlyName, deviceInfo); } catch (Exception) { Log.Warning("Can't get name of device {device}", device.ID); } } return(sortedDevices.Values); }
/// <summary> /// Using the information of the AudioDeviceWrapper, generate a ListViewItem /// </summary> /// <param name="device"></param> /// <param name="selected"></param> /// <param name="listView"></param> /// <returns></returns> private ListViewItem GenerateListViewItem(DeviceFullInfo device, IEnumerable <DeviceInfo> selected, ListView listView) { var listViewItem = new ListViewItem { Text = device.Name, ImageKey = device.IconPath, Tag = device }; var selectedDevice = device; if (selected.Contains(selectedDevice)) { listViewItem.Checked = true; listViewItem.Group = listView.Groups["selectedGroup"]; } else { listViewItem.Checked = false; listViewItem.Group = GetGroup(device.State, listView); } return(listViewItem); }
private void SetActiveDeviceToBold(MMDevice device) { AlternateColorTool altenateColor = new AlternateColorTool(AlternateColorPalette); string ID = device == null ? "" : device.ID; foreach (ListViewGroup group in m_listDevices.Groups) { foreach (ListViewItem item in group.Items) { DeviceFullInfo dev = item.Tag as DeviceFullInfo; bool isActive = dev.ID == ID; item.Font = isActive ? _fontBold : _fontNorm; item.SubItems[1].Text = isActive ? "Active" : ""; item.Selected = false; // dev.Id == sel.ID; item.ForeColor = dev.State == EDeviceState.Active ? Color.Black : Color.DarkGray; //alternate color inside each group item.BackColor = altenateColor.GetColor(dev.Name); //item.Group = GetItemGroup(dev); } } UpdateUI(null); }
private string GetDeviceTooltip(DeviceFullInfo dev) { return(dev.Name + "\n" + dev.State + "\n" + dev.ID); }
public void ChangeIcon(Util.TrayIcon trayIcon, DeviceFullInfo deviceInfo) { }
public void RefreshProfiles() { ListViewItem ProfileToListViewItem(Profile profile) { var listViewItem = new ListViewItem(profile.Name) { Tag = profile }; Icon appIcon = null; DeviceFullInfo recording = null; DeviceFullInfo playback = null; DeviceFullInfo communication = null; var applicationTrigger = profile.Triggers.FirstOrDefault(trig => trig.Type == TriggerFactory.Enum.Process); var hotkeyTrigger = profile.Triggers.FirstOrDefault(trig => trig.Type == TriggerFactory.Enum.HotKey); if (applicationTrigger != null) { try { appIcon = IconExtractor.Extract(applicationTrigger.ApplicationPath, 0, false); } catch { appIcon = Resources.program; } } if (profile.Playback != null) { playback = _audioDeviceLister.PlaybackDevices.FirstOrDefault(info => info.Equals(profile.Playback)); } if (profile.Recording != null) { recording = _audioDeviceLister.RecordingDevices.FirstOrDefault(info => info.Equals(profile.Recording)); } if (profile.Communication != null) { communication = _audioDeviceLister.PlaybackDevices.FirstOrDefault(info => info.Equals(profile.Communication)); } listViewItem.SubItems.AddRange(new[] { new ListViewItem.ListViewSubItem(listViewItem, applicationTrigger?.ApplicationPath.Split('\\').Last() ?? "") { Tag = appIcon }, new ListViewItem.ListViewSubItem(listViewItem, hotkeyTrigger?.HotKey.ToString() ?? ""), new ListViewItem.ListViewSubItem(listViewItem, playback?.NameClean ?? profile.Playback?.ToString() ?? "") { Tag = playback?.SmallIcon }, new ListViewItem.ListViewSubItem(listViewItem, recording?.NameClean ?? profile.Recording?.ToString() ?? "") { Tag = recording?.SmallIcon }, new ListViewItem.ListViewSubItem(listViewItem, communication?.NameClean ?? profile.Communication?.ToString() ?? "") { Tag = communication?.SmallIcon }, }); return(listViewItem); } profilesListView.Items.Clear(); foreach (var profile in AppModel.Instance.ProfileManager.Profiles) { var listViewItem = ProfileToListViewItem(profile); profilesListView.Items.Add(listViewItem); } if (AppModel.Instance.ProfileManager.Profiles.Count > 0) { foreach (ColumnHeader column in profilesListView.Columns) { column.Width = -2; } } }
public ToolStripDeviceItem(EventHandler onClick, DeviceFullInfo audioDevice, bool isDefault) : base(audioDevice.NameClean, null, onClick) { AudioDevice = audioDevice; _isDefault = isDefault; }
/// <summary> /// Set the device as Default /// </summary> /// <param name="device"></param> /// <returns></returns> public bool SetAsDefault(DeviceFullInfo device) { return(_deviceCyclerFactory.Get(CurrentCycler).SetActiveDevice(device)); }
public ToolStripDeviceItem(EventHandler onClick, DeviceFullInfo audioDevice) : base(audioDevice.Name, null, onClick) { AudioDevice = audioDevice; }
public void ChangeIcon(UI.Component.TrayIcon trayIcon, DeviceFullInfo deviceInfo) { }
public void RefreshProfiles() { ListViewItem ProfileToListViewItem(ProfileSetting profile) { var listViewItem = new ListViewItem(profile.ProfileName) { Tag = profile }; Icon appIcon = null; DeviceFullInfo recording = null; DeviceFullInfo playback = null; if (!string.IsNullOrEmpty(profile.ApplicationPath)) { try { appIcon = IconExtractor.Extract(profile.ApplicationPath, 0, false); } catch { appIcon = Resources.program; } } if (profile.Playback != null) { playback = _audioDeviceLister.PlaybackDevices.FirstOrDefault(info => info.Id == profile.Playback.Id); } if (profile.Recording != null) { recording = _audioDeviceLister.RecordingDevices.FirstOrDefault(info => info.Id == profile.Recording.Id); } listViewItem.SubItems.AddRange(new[] { new ListViewItem.ListViewSubItem(listViewItem, profile.ApplicationPath?.Split('\\').Last() ?? "") { Tag = appIcon }, new ListViewItem.ListViewSubItem(listViewItem, profile.HotKey?.ToString() ?? ""), new ListViewItem.ListViewSubItem(listViewItem, playback?.Name ?? profile.Playback?.ToString() ?? "") { Tag = playback?.SmallIcon }, new ListViewItem.ListViewSubItem(listViewItem, recording?.Name ?? profile.Recording?.ToString() ?? "") { Tag = recording?.SmallIcon }, }); return(listViewItem); } profilesListView.Items.Clear(); foreach (var profile in AppModel.Instance.ProfileManager.Profiles) { var listViewItem = ProfileToListViewItem(profile); profilesListView.Items.Add(listViewItem); } if (AppModel.Instance.ProfileManager.Profiles.Count > 0) { foreach (ColumnHeader column in profilesListView.Columns) { column.Width = -2; } } }