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);
     }
 }
Exemple #3
0
        /// <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);
        }
Exemple #8
0
 /// <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;
            }
        }
Exemple #10
0
 /// <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);
 }
Exemple #11
0
 /// <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);
            }
        }
Exemple #13
0
        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);
        }
Exemple #14
0
        /// <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)
 {
 }
Exemple #18
0
        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;
                }
            }
        }
Exemple #19
0
 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));
 }
Exemple #21
0
 public ToolStripDeviceItem(EventHandler onClick, DeviceFullInfo audioDevice)
     : base(audioDevice.Name, null, onClick)
 {
     AudioDevice = audioDevice;
 }
Exemple #22
0
 public void ChangeIcon(UI.Component.TrayIcon trayIcon, DeviceFullInfo deviceInfo)
 {
 }
Exemple #23
0
        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;
                }
            }
        }