diff --git a/src/vs/platform/accessibilitySignal/browser/accessibilitySignalService.ts b/src/vs/platform/accessibilitySignal/browser/accessibilitySignalService.ts index 1e1262ec668..915a61aba5b 100644 --- a/src/vs/platform/accessibilitySignal/browser/accessibilitySignalService.ts +++ b/src/vs/platform/accessibilitySignal/browser/accessibilitySignalService.ts @@ -178,9 +178,9 @@ export class AccessibilitySignalService extends Disposable implements IAccessibi private readonly isSoundEnabledCache = new Cache((event: { readonly signal: AccessibilitySignal; readonly userGesture?: boolean }) => { const settingObservable = observableFromEvent( Event.filter(this.configurationService.onDidChangeConfiguration, (e) => - e.affectsConfiguration(event.signal.settingsKey) || e.affectsConfiguration(event.signal.settingsKey) + e.affectsConfiguration(event.signal.legacySoundSettingsKey) || e.affectsConfiguration(event.signal.settingsKey) ), - () => this.configurationService.getValue<'on' | 'off' | 'auto' | 'userGesture' | 'always' | 'never'>(event.signal.settingsKey + '.audioCue') + () => this.configurationService.getValue<'on' | 'off' | 'auto' | 'userGesture' | 'always' | 'never'>(event.signal.settingsKey + '.sound') ); return derived(reader => { /** @description sound enabled */ @@ -211,7 +211,7 @@ export class AccessibilitySignalService extends Disposable implements IAccessibi Event.filter(this.configurationService.onDidChangeConfiguration, (e) => e.affectsConfiguration(event.signal.legacyAnnouncementSettingsKey!) || e.affectsConfiguration(event.signal.settingsKey) ), - () => event.signal.announcementMessage ? this.configurationService.getValue(event.signal.settingsKey + '.announcement') : false + () => event.signal.announcementMessage ? this.configurationService.getValue<'auto' | 'off' | 'userGesture' | 'always' | 'never'>(event.signal.settingsKey + '.announcement') : false ); return derived(reader => { /** @description alert enabled */ @@ -221,23 +221,23 @@ export class AccessibilitySignalService extends Disposable implements IAccessibi ) { return false; } - return setting === true || setting === 'always' || setting === 'userGesture' && event.userGesture; + return setting === 'auto' || setting === 'always' || setting === 'userGesture' && event.userGesture; }); }, JSON.stringify); - public isAnnouncementEnabled(cue: AccessibilitySignal, userGesture?: boolean): boolean { - if (!cue.announcementMessage) { + public isAnnouncementEnabled(signal: AccessibilitySignal, userGesture?: boolean): boolean { + if (!signal.announcementMessage) { return false; } - return this.isAnnouncementEnabledCache.get({ signal: cue, userGesture }).get() ?? false; + return this.isAnnouncementEnabledCache.get({ signal, userGesture }).get() ?? false; } - public isSoundEnabled(cue: AccessibilitySignal, userGesture?: boolean): boolean { - return this.isSoundEnabledCache.get({ signal: cue, userGesture }).get() ?? false; + public isSoundEnabled(signal: AccessibilitySignal, userGesture?: boolean): boolean { + return this.isSoundEnabledCache.get({ signal, userGesture }).get() ?? false; } - public onSoundEnabledChanged(cue: AccessibilitySignal): Event { - return Event.fromObservableLight(this.isSoundEnabledCache.get({ signal: cue })); + public onSoundEnabledChanged(signal: AccessibilitySignal): Event { + return Event.fromObservableLight(this.isSoundEnabledCache.get({ signal })); } public onAnnouncementEnabledChanged(cue: AccessibilitySignal): Event { diff --git a/src/vs/workbench/contrib/accessibilitySignals/browser/commands.ts b/src/vs/workbench/contrib/accessibilitySignals/browser/commands.ts index 2ec576a22e1..5a7bacde1c5 100644 --- a/src/vs/workbench/contrib/accessibilitySignals/browser/commands.ts +++ b/src/vs/workbench/contrib/accessibilitySignals/browser/commands.ts @@ -41,28 +41,26 @@ export class ShowSignalSoundHelp extends Action2 { })); const qp = quickInputService.createQuickPick(); qp.items = items; - qp.selectedItems = items.filter(i => accessibilitySignalService.isSoundEnabled(i.signal)); + qp.selectedItems = items.filter(i => accessibilitySignalService.isSoundEnabled(i.signal) || configurationService.getValue(i.signal.settingsKey + '.sound') !== 'never'); qp.onDidAccept(() => { - const enabledCues = qp.selectedItems.map(i => i.signal); - const disabledCues = AccessibilitySignal.allAccessibilitySignals.filter(cue => !enabledCues.includes(cue)); - for (const cue of enabledCues) { - if (!userGestureSignals.includes(cue)) { - let { sound, announcement } = configurationService.getValue<{ sound: string; announcement?: string }>(cue.settingsKey); - sound = accessibilityService.isScreenReaderOptimized() ? 'auto' : 'on'; - if (announcement) { - configurationService.updateValue(cue.settingsKey, { sound, announcement }); - } else { - configurationService.updateValue(cue.settingsKey, { sound }); - } + const enabledSounds = qp.selectedItems.map(i => i.signal); + const disabledSounds = qp.items.map(i => (i as any).signal).filter(i => !enabledSounds.includes(i)); + for (const signal of enabledSounds) { + let { sound, announcement } = configurationService.getValue<{ sound: string; announcement?: string }>(signal.settingsKey); + sound = userGestureSignals.includes(signal) ? 'userGesture' : accessibilityService.isScreenReaderOptimized() ? 'auto' : 'on'; + if (announcement) { + configurationService.updateValue(signal.settingsKey, { sound, announcement }); + } else { + configurationService.updateValue(signal.settingsKey, { sound }); } } - for (const cue of disabledCues) { - const announcement = cue.announcementMessage ? configurationService.getValue(cue.settingsKey + '.announcement') : undefined; - const sound = userGestureSignals.includes(cue) ? 'never' : 'off'; + for (const signal of disabledSounds) { + let { sound, announcement } = configurationService.getValue<{ sound: string; announcement?: string }>(signal.settingsKey); + sound = userGestureSignals.includes(signal) ? 'never' : 'off'; if (announcement) { - configurationService.updateValue(cue.settingsKey, { sound, announcement }); + configurationService.updateValue(signal.settingsKey, { sound, announcement }); } else { - configurationService.updateValue(cue.settingsKey, { sound }); + configurationService.updateValue(signal.settingsKey, { sound }); } } qp.hide(); @@ -104,23 +102,21 @@ export class ShowAccessibilityAnnouncementHelp extends Action2 { })); const qp = quickInputService.createQuickPick(); qp.items = items; - qp.selectedItems = items.filter(i => accessibilitySignalService.isAnnouncementEnabled(i.signal)); + qp.selectedItems = items.filter(i => accessibilitySignalService.isAnnouncementEnabled(i.signal) || configurationService.getValue(i.signal.settingsKey + '.announcement') !== 'never'); qp.onDidAccept(() => { const enabledAnnouncements = qp.selectedItems.map(i => i.signal); const disabledAnnouncements = AccessibilitySignal.allAccessibilitySignals.filter(cue => !enabledAnnouncements.includes(cue)); - for (const cue of enabledAnnouncements) { - if (!userGestureSignals.includes(cue)) { - let { sound, announcement } = configurationService.getValue<{ sound: string; announcement?: string }>(cue.settingsKey); - announcement = cue.announcementMessage && accessibilityService.isScreenReaderOptimized() ? 'auto' : undefined; - if (announcement) { - configurationService.updateValue(cue.settingsKey, { sound, announcement }); - } + for (const signal of enabledAnnouncements) { + let { sound, announcement } = configurationService.getValue<{ sound: string; announcement?: string }>(signal.settingsKey); + announcement = userGestureSignals.includes(signal) ? 'userGesture' : signal.announcementMessage && accessibilityService.isScreenReaderOptimized() ? 'auto' : undefined; + if (announcement) { + configurationService.updateValue(signal.settingsKey, { sound, announcement }); } } - for (const cue of disabledAnnouncements) { - const announcement = userGestureSignals.includes(cue) ? 'never' : 'off'; - const sound = configurationService.getValue(cue.settingsKey + '.sound'); - configurationService.updateValue(cue.settingsKey, { sound, announcement }); + for (const signal of disabledAnnouncements) { + const announcement = userGestureSignals.includes(signal) ? 'never' : 'off'; + const sound = configurationService.getValue(signal.settingsKey + '.sound'); + configurationService.updateValue(signal.settingsKey, { sound, announcement }); } qp.hide(); });