private void SwitchAudio(ProfileSetting profile, uint processId = 0) { foreach (var device in new[] { profile.Playback, profile.Recording }.Where((info) => info != null)) { if (processId != 0) { _audioSwitcher.SwitchProcessTo( device.Id, ERole.ERole_enum_count, (EDataFlow)device.Type, processId); } //Always switch the default device. //Easy way to be sure a notification will be send. //And to be consistent with the default audio device. _audioSwitcher.SwitchTo(device.Id, ERole.ERole_enum_count); } }
/// <summary> /// Add a profile to the system /// </summary> /// <param name="profile"></param> /// <returns></returns> public Result <string, VoidSuccess> AddProfile(ProfileSetting profile) { return(ValidateAddProfile(profile) .Map(success => { if (!string.IsNullOrEmpty(profile.ApplicationPath)) { _profileByApplication.Add(profile.ApplicationPath.ToLower(), profile); } if (profile.HotKey != null) { _profileByHotkey.Add(profile.HotKey, profile); } AppConfigs.Configuration.ProfileSettings.Add(profile); AppConfigs.Configuration.Save(); return Result.Success(); })); }
private Result <string, VoidSuccess> ValidateAddProfile(ProfileSetting profile) { if (string.IsNullOrEmpty(profile.ProfileName)) { return(SettingsStrings.profile_error_no_name); } if (string.IsNullOrEmpty(profile.ApplicationPath) && profile.HotKey == null) { return(SettingsStrings.profile_error_needHKOrPath); } if (profile.Recording == null && profile.Playback == null) { return(SettingsStrings.profile_error_needPlaybackOrRecording); } if (profile.HotKey != null && _profileByHotkey.ContainsKey(profile.HotKey)) { return(string.Format(SettingsStrings.profile_error_hotkey, profile.HotKey)); } if (!string.IsNullOrEmpty(profile.ApplicationPath) && _profileByApplication.ContainsKey(profile.ApplicationPath.ToLower())) { return(string.Format(SettingsStrings.profile_error_application, profile.ApplicationPath)); } if (AppConfigs.Configuration.ProfileSettings.Contains(profile)) { return(string.Format(SettingsStrings.profile_error_name, profile.ProfileName)); } if (profile.HotKey != null && !WindowsAPIAdapter.RegisterHotKey(profile.HotKey)) { return(string.Format(SettingsStrings.profile_error_hotkey, profile.HotKey)); } return(Result.Success()); }