Esempio n. 1
0
        private void DeviceService_MasterVolumeChanged(object sender, EarTrumpetAudioDeviceService.MasterVolumeChangedArgs e)
        {
            var defaultDevice = _deviceService.GetAudioDevices().FirstOrDefault(x => x.IsDefault);
            var noDevice      = defaultDevice.Equals(default(EarTrumpetAudioDeviceModel));

            UpdateTrayIcon(noDevice, defaultDevice.IsMuted, e.Volume.ToVolumeInt());
        }
Esempio n. 2
0
        private void DeviceService_MasterVolumeChanged(object sender, EarTrumpetAudioDeviceService.MasterVolumeChangedArgs e)
        {
            var defaultDevice = _deviceService.GetAudioDevices().FirstOrDefault(x => x.IsDefault);

            if (!defaultDevice.Equals(default(EarTrumpetAudioDeviceModel)))
            {
                var updatedDefaultDevice = new DeviceAppItemViewModel(_proxy, defaultDevice, e.Volume);
                Device.UpdateFromOther(updatedDefaultDevice);
                RaisePropertyChanged("Device");
            }
            else
            {
                Refresh();
            }
        }
Esempio n. 3
0
 internal void ChangeTrayIcon(bool useOldIcon)
 {
     UserPreferencesService.UseOldIcon = useOldIcon;
     if (UserPreferencesService.UseOldIcon)
     {
         UpdateTrayIcon();
     }
     else
     {
         var defaultDevice = _deviceService.GetAudioDevices().FirstOrDefault(x => x.IsDefault);
         var noDevice      = defaultDevice.Equals(default(EarTrumpetAudioDeviceModel));
         var volume        = _deviceService.GetAudioDeviceVolume(defaultDevice.Id);
         UpdateTrayIcon(noDevice, defaultDevice.IsMuted, volume.ToVolumeInt());
     }
 }
Esempio n. 4
0
        private void SetupDeviceMenuItems()
        {
            for (int i = _trayIcon.ContextMenu.MenuItems.Count - 1; i >= 0; i--)
            {
                var item = _trayIcon.ContextMenu.MenuItems[i];
                if (item.Name.StartsWith(_deviceItemPrefix))
                {
                    _trayIcon.ContextMenu.MenuItems.Remove(item);
                }
            }

            var audioDevices = _audioDeviceService.GetAudioDevices().ToList();

            if (audioDevices.Count == 0)
            {
                var newItem = new System.Windows.Forms.MenuItem(EarTrumpet.Properties.Resources.ContextMenuNoDevices);
                newItem.Name    = $"{_deviceItemPrefix}";
                newItem.Enabled = false;
                _trayIcon.ContextMenu.MenuItems.Add(0, newItem);
            }
            for (int j = 0; j < audioDevices.Count; j++)
            {
                var device  = audioDevices[j];
                var newItem = new System.Windows.Forms.MenuItem(device.DisplayName, Device_Click);
                newItem.Name    = $"{_deviceItemPrefix}{device.Id}";
                newItem.Checked = device.IsDefault;
                _trayIcon.ContextMenu.MenuItems.Add(j, newItem);
            }
        }
Esempio n. 5
0
        public void Refresh()
        {
            var defaultDevice = _deviceService.GetAudioDevices().FirstOrDefault(x => x.IsDefault);
            var volume        = _deviceService.GetAudioDeviceVolume(defaultDevice.Id);
            var newDevice     = new DeviceAppItemViewModel(_proxy, defaultDevice, volume);

            if (Device != null && Device.IsSame(newDevice))
            {
                Device.UpdateFromOther(newDevice);
            }
            else
            {
                Device = newDevice;
            }
            RaisePropertyChanged("Device");

            bool hasApps = Apps.Count > 0;

            var sessions = _audioService.GetAudioSessionGroups().Select(x => new AppItemViewModel(_proxy, x));

            List <AppItemViewModel> staleSessionsToRemove = new List <AppItemViewModel>();

            // remove stale apps
            foreach (var app in Apps)
            {
                if (!sessions.Where(x => (x.IsSame(app))).Any())
                {
                    staleSessionsToRemove.Add(app);
                }
            }
            foreach (var app in staleSessionsToRemove)
            {
                Apps.Remove(app);
            }

            // add new apps
            foreach (var session in sessions)
            {
                var findApp = Apps.FirstOrDefault(x => x.IsSame(session));
                if (findApp == null)
                {
                    Apps.AddSorted(session, AppItemViewModelComparer.Instance);
                }
                else
                {
                    // update existing apps
                    findApp.UpdateFromOther(session);
                }
            }

            ListVisibility       = Apps.Count > 0 ? Visibility.Visible : Visibility.Hidden;
            NoAppsPaneVisibility = Apps.Count == 0 ? Visibility.Visible : Visibility.Hidden;

            if (hasApps != (Apps.Count > 0))
            {
                RaisePropertyChanged("ListVisibility");
                RaisePropertyChanged("NoAppsPaneVisibility");
            }
        }
Esempio n. 6
0
 private void DeviceService_MasterVolumeChanged(object sender, EarTrumpetAudioDeviceService.MasterVolumeChangedArgs e)
 {
     Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() =>
     {
         var defaultDevice = _deviceService.GetAudioDevices().FirstOrDefault(x => x.IsDefault);
         if (!defaultDevice.Equals(default(EarTrumpetAudioDeviceModel)) && Device != null)
         {
             var updatedDefaultDevice = new DeviceAppItemViewModel(_proxy, defaultDevice, e.Volume);
             Device.UpdateFromOther(updatedDefaultDevice);
             RaisePropertyChanged("Device");
         }
         else
         {
             Refresh();
         }
     }));
 }
Esempio n. 7
0
        public TrayViewModel(EarTrumpetAudioDeviceService deviceService)
        {
            var originalIcon = new Icon(Application.GetResourceStream(new Uri("pack://application:,,,/EarTrumpet;component/Tray.ico")).Stream);

            _icons.Add(IconId.OriginalIcon, originalIcon);
            try
            {
                _icons.Add(IconId.NoDevice, IconService.GetIconFromFile(_trayIconPath, (int)IconId.NoDevice));
                _icons.Add(IconId.Muted, IconService.GetIconFromFile(_trayIconPath, (int)IconId.Muted));
                _icons.Add(IconId.SpeakerZeroBars, IconService.GetIconFromFile(_trayIconPath, (int)IconId.SpeakerZeroBars));
                _icons.Add(IconId.SpeakerOneBar, IconService.GetIconFromFile(_trayIconPath, (int)IconId.SpeakerOneBar));
                _icons.Add(IconId.SpeakerTwoBars, IconService.GetIconFromFile(_trayIconPath, (int)IconId.SpeakerTwoBars));
                _icons.Add(IconId.SpeakerThreeBars, IconService.GetIconFromFile(_trayIconPath, (int)IconId.SpeakerThreeBars));
            }
            catch
            {
                _icons.Clear();
                _icons.Add(IconId.NoDevice, originalIcon);
                _icons.Add(IconId.Muted, originalIcon);
                _icons.Add(IconId.SpeakerZeroBars, originalIcon);
                _icons.Add(IconId.SpeakerOneBar, originalIcon);
                _icons.Add(IconId.SpeakerTwoBars, originalIcon);
                _icons.Add(IconId.SpeakerThreeBars, originalIcon);

                _icons.Add(IconId.OriginalIcon, originalIcon);
            }

            _deviceService = deviceService;
            _deviceService.MasterVolumeChanged += DeviceService_MasterVolumeChanged;

            var defaultDevice = _deviceService.GetAudioDevices().FirstOrDefault(x => x.IsDefault);

            if (!defaultDevice.Equals(default(EarTrumpetAudioDeviceModel)))
            {
                var volume = _deviceService.GetAudioDeviceVolume(defaultDevice.Id);
                UpdateTrayIcon(false, defaultDevice.IsMuted, volume.ToVolumeInt());
            }
            else
            {
                UpdateTrayIcon(true);
            }
        }