public AppItemViewModel(IAudioMixerViewModelCallback callback, EarTrumpetAudioSessionModelGroup sessions) { _sessions = sessions; // select a session at random as sndvol does. var session = _sessions.Sessions.First(); IconHeight = IconWidth = 32; SessionId = session.SessionId; ProcessId = session.ProcessId; ExeName = GetExeName(session.DisplayName); IsDesktop = session.IsDesktop; _volume = Convert.ToInt32(Math.Round((session.Volume * 100), MidpointRounding.AwayFromZero)); _isMuted = session.IsMuted; _callback = callback; if (session.IsDesktop) { try { if (Path.GetExtension(session.IconPath) == ".dll") { Icon = IconExtensions.ExtractIconFromDll(session.IconPath); } else { // override for SpeechRuntime.exe (Repo -> HEY CORTANA) if (session.IconPath.ToLowerInvariant().Contains("speechruntime.exe")) { var sysType = Environment.Is64BitOperatingSystem ? "SysNative" : "System32"; Icon = IconExtensions.ExtractIconFromDll(Path.Combine("%windir%", sysType, "Speech\\SpeechUX\\SpeechUXWiz.exe"), 0); } else { Icon = System.Drawing.Icon.ExtractAssociatedIcon(session.IconPath).ToImageSource(); } } } catch { // ignored } Background = new SolidColorBrush(Colors.Transparent); } else { if (File.Exists(session.IconPath)) //hack until we invoke the resource manager correctly. { Icon = new BitmapImage(new Uri(session.IconPath)); } Background = new SolidColorBrush(AccentColorService.FromABGR(session.BackgroundColor)); } }
public AppItemViewModel(IAudioMixerViewModelCallback callback, EarTrumpetAudioSessionModelGroup sessions) { _sessions = sessions; // select a session at random as sndvol does. var session = _sessions.Sessions.First(); IconHeight = IconWidth = 32; SessionId = session.SessionId; DisplayName = session.DisplayName; IsDesktop = session.IsDesktop; _volume = Convert.ToInt32(Math.Round((session.Volume * 100), MidpointRounding.AwayFromZero)); _callback = callback; if (session.IsDesktop) { try { if (Path.GetExtension(session.IconPath) == ".dll") { Icon = IconExtensions.ExtractIconFromDll(session.IconPath); } else { Icon = System.Drawing.Icon.ExtractAssociatedIcon(session.IconPath).ToImageSource(); } } catch { } Background = Colors.Transparent; try { var proc = Process.GetProcessById((int)session.ProcessId); if (!string.IsNullOrWhiteSpace(proc.MainWindowTitle)) { DisplayName = proc.MainWindowTitle; } } catch { } // we fallback to exe name if DisplayName is not set in the try above. } else { Icon = new BitmapImage(new Uri(session.IconPath)); Background = AccentColorService.FromABGR(session.BackgroundColor); } }
public AppItemViewModel(IAudioMixerViewModelCallback callback, EarTrumpetAudioSessionModelGroup sessions) { _sessions = sessions; // select a session at random as sndvol does. var session = _sessions.Sessions.First(); IconHeight = IconWidth = 32; SessionId = session.SessionId; DisplayName = session.DisplayName.Equals("System Sounds") ? EarTrumpet.Properties.Resources.SystemSoundsDisplayName : session.DisplayName; IsDesktop = session.IsDesktop; _volume = Convert.ToInt32(Math.Round((session.Volume * 100), MidpointRounding.AwayFromZero)); _callback = callback; if (session.IsDesktop) { try { Icon = Path.GetExtension(session.IconPath) == ".dll" ? IconExtensions.ExtractIconFromDll(session.IconPath) : System.Drawing.Icon.ExtractAssociatedIcon(session.IconPath).ToImageSource(); } catch { // ignored } Background = new SolidColorBrush(Colors.Transparent); try { var proc = Process.GetProcessById((int)session.ProcessId); if (!string.IsNullOrWhiteSpace(proc.MainWindowTitle)) { DisplayName = proc.MainWindowTitle; } } catch { } // we fallback to exe name if DisplayName is not set in the try above. } else { if (File.Exists(session.IconPath)) //hack until we invoke the resource manager correctly. { Icon = new BitmapImage(new Uri(session.IconPath)); } Background = new SolidColorBrush(AccentColorService.FromABGR(session.BackgroundColor)); } }
public void UpdateFromOther(AppItemViewModel other) { if (_volume != other.Volume) { _sessions = other._sessions; _volume = other.Volume; RaisePropertyChanged("Volume"); } }
public void UpdateFromOther(AppItemViewModel other) { if (_volume == other.Volume) return; _sessions = other._sessions; _volume = other.Volume; _isMuted = other.IsMuted; RaisePropertyChanged("Volume"); RaisePropertyChanged("IsMuted"); }