[go: nahoru, domu]

blob: e9fc345b15adcea2b19fd14338a2beef18930bd8 [file] [log] [blame]
// Copyright 2023 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Common from '../../../core/common/common.js';
import * as i18n from '../../../core/i18n/i18n.js';
import {ConverterIds} from './ConverterIds.js';
import {PlayRecordingSpeed} from './RecordingPlayer.js';
import {SelectorType} from './Schema.js';
const UIStrings = {
/**
* @description This string is used to generate the default name for the create recording form in the Recording panel.
* The format is similar to the one used by MacOS to generate names for screenshots. Both {DATE} and {TIME} are localized
* using the current locale.
*
* @example {2022-08-04} DATE
* @example {10:32:48} TIME
*/
defaultRecordingName: 'Recording {DATE} at {TIME}',
};
const str_ = i18n.i18n.registerUIStrings(
'panels/recorder/models/RecorderSettings.ts',
UIStrings,
);
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
export class RecorderSettings {
#selectorAttribute = Common.Settings.Settings.instance().createSetting(
'recorderSelectorAttribute',
'',
);
#speed = Common.Settings.Settings.instance().createSetting(
'recorderPanelReplaySpeed',
PlayRecordingSpeed.Normal,
);
#replayExtension = Common.Settings.Settings.instance().createSetting(
'recorderPanelReplayExtension',
'',
);
#selectorTypes = new Map<SelectorType, Common.Settings.Setting<boolean>>();
#preferredCopyFormat = Common.Settings.Settings.instance().createSetting<string>(
'recorder_preferred_copy_format',
ConverterIds.JSON,
);
constructor() {
for (const selectorType of Object.values(SelectorType)) {
this.#selectorTypes.set(
selectorType,
Common.Settings.Settings.instance().createSetting(
`recorder${selectorType}SelectorEnabled`,
true,
),
);
}
}
get selectorAttribute(): string {
return this.#selectorAttribute.get();
}
set selectorAttribute(value: string) {
this.#selectorAttribute.set(value);
}
get speed(): PlayRecordingSpeed {
return this.#speed.get();
}
set speed(speed: PlayRecordingSpeed) {
this.#speed.set(speed);
}
get replayExtension(): string {
return this.#replayExtension.get();
}
set replayExtension(replayExtension: string) {
this.#replayExtension.set(replayExtension);
}
get defaultTitle(): Common.UIString.LocalizedString {
const now = new Date();
return i18nString(UIStrings.defaultRecordingName, {
DATE: now.toLocaleDateString(),
TIME: now.toLocaleTimeString(),
});
}
get defaultSelectors(): SelectorType[] {
return Object.values(SelectorType)
.filter(
type => this.getSelectorByType(type),
);
}
getSelectorByType(type: SelectorType): boolean|undefined {
return this.#selectorTypes.get(type)?.get();
}
setSelectorByType(type: SelectorType, value: boolean): void {
this.#selectorTypes.get(type)?.set(value);
}
get preferredCopyFormat(): string {
return this.#preferredCopyFormat.get();
}
set preferredCopyFormat(value: string) {
this.#preferredCopyFormat.set(value);
}
}