Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/accessibilitySignal/browser/progressAccessibilitySignalScheduler.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { RunOnceScheduler } from '../../../base/common/async.js';
7
import { Disposable, IDisposable } from '../../../base/common/lifecycle.js';
8
import { AccessibilitySignal, IAccessibilitySignalService } from './accessibilitySignalService.js';
9
10
const PROGRESS_SIGNAL_LOOP_DELAY = 5000;
11
12
/**
13
* Schedules a signal to play while progress is happening.
14
*/
15
export class AccessibilityProgressSignalScheduler extends Disposable {
16
private _scheduler: RunOnceScheduler;
17
private _signalLoop: IDisposable | undefined;
18
constructor(msDelayTime: number, msLoopTime: number | undefined, @IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService) {
19
super();
20
this._scheduler = this._register(new RunOnceScheduler(() => {
21
this._signalLoop = this._accessibilitySignalService.playSignalLoop(AccessibilitySignal.progress, msLoopTime ?? PROGRESS_SIGNAL_LOOP_DELAY);
22
}, msDelayTime));
23
this._scheduler.schedule();
24
}
25
override dispose(): void {
26
super.dispose();
27
this._signalLoop?.dispose();
28
this._scheduler.dispose();
29
}
30
}
31
32