Skip to content
Snippets Groups Projects
Commit 5d6c7533 authored by jojohoch's avatar jojohoch
Browse files

Add minVolume, defaultVolume and muteControl to audios an videos

parent de681518
No related branches found
No related tags found
No related merge requests found
...@@ -7,6 +7,9 @@ Player ...@@ -7,6 +7,9 @@ Player
- Fix problem with truncated text in text components when using large font sizes - Fix problem with truncated text in text components when using large font sizes
- Hide audio and video control bar when no control is marked for display - Hide audio and video control bar when no control is marked for display
- Add the floating variant of the virtual keyboard for numbers and numbers + operators - Add the floating variant of the virtual keyboard for numbers and numbers + operators
- Hide mute control if wanted
- Use minimum volume value (value between 0 and 1)
- Use default volume value (value between 0 and 1)
1.5.0 1.5.0
- Show the magnifier only when the mouse is over the image - Show the magnifier only when the mouse is over the image
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
-{{currentRestTime | playerTimeFormat}} -{{currentRestTime | playerTimeFormat}}
</div> </div>
</ng-container> </ng-container>
<ng-container *ngIf="elementModel.volumeControl"> <ng-container *ngIf="elementModel.muteControl">
<button mat-button <button mat-button
type="button" type="button"
class="control-button enabled-control" class="control-button enabled-control"
...@@ -65,10 +65,12 @@ ...@@ -65,10 +65,12 @@
<mat-icon *ngIf="!player.muted">volume_up</mat-icon> <mat-icon *ngIf="!player.muted">volume_up</mat-icon>
<mat-icon *ngIf="player.muted">volume_off</mat-icon> <mat-icon *ngIf="player.muted">volume_off</mat-icon>
</button> </button>
</ng-container>
<ng-container *ngIf="elementModel.volumeControl">
<mat-slider class="volume" <mat-slider class="volume"
min="0" min="0"
step="0.01" step="0.01"
[max]="1" max="1"
[value]="player.volume" [value]="player.volume"
(input)="onVolumeChange($event)"> (input)="onVolumeChange($event)">
</mat-slider> </mat-slider>
......
...@@ -69,7 +69,7 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy { ...@@ -69,7 +69,7 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy {
this.player.onvolumechange = () => { this.player.onvolumechange = () => {
this.player.muted = !this.player.volume; this.player.muted = !this.player.volume;
}; };
this.player.volume = 0.8; this.player.volume = this.elementModel.defaultVolume;
this.lastVolume = this.player.volume; this.lastVolume = this.player.volume;
} }
...@@ -93,7 +93,8 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy { ...@@ -93,7 +93,8 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy {
} }
onVolumeChange(event: MatSliderChange): void { onVolumeChange(event: MatSliderChange): void {
this.player.volume = event.value ? event.value : 0; event.source.value = event.value && event.value > this.elementModel.minVolume ?
event.value : this.elementModel.minVolume;
} }
toggleTime(): void { toggleTime(): void {
...@@ -101,9 +102,9 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy { ...@@ -101,9 +102,9 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy {
} }
toggleVolume(): void { toggleVolume(): void {
if (this.player.volume) { if (this.player.volume > this.elementModel.minVolume) {
this.lastVolume = this.player.volume; this.lastVolume = this.player.volume;
this.player.volume = 0; this.player.volume = this.elementModel.minVolume;
} else { } else {
this.player.volume = this.lastVolume; this.player.volume = this.lastVolume;
} }
...@@ -143,9 +144,10 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy { ...@@ -143,9 +144,10 @@ export class ControlBarComponent implements OnInit, OnChanges, OnDestroy {
} }
private _play(): void { private _play(): void {
this.player.play().then(() => {}, this.player.play().then(() => {
// eslint-disable-next-line no-console },
() => console.error('player: cannot play this media file')); // eslint-disable-next-line no-console
() => console.error('player: cannot play this media file'));
} }
private sendPlaybackTimeChanged() { private sendPlaybackTimeChanged() {
......
...@@ -23,6 +23,9 @@ export interface PlayerElement { ...@@ -23,6 +23,9 @@ export interface PlayerElement {
progressBar: boolean; progressBar: boolean;
interactiveProgressbar: boolean; interactiveProgressbar: boolean;
volumeControl: boolean; volumeControl: boolean;
defaultVolume: number;
minVolume: number;
muteControl: boolean;
hintLabel: string; hintLabel: string;
hintLabelDelay: number; hintLabelDelay: number;
uninterruptible: boolean; uninterruptible: boolean;
......
...@@ -13,6 +13,9 @@ export class AudioElement extends UIElement implements PlayerElement { ...@@ -13,6 +13,9 @@ export class AudioElement extends UIElement implements PlayerElement {
progressBar: boolean = true; progressBar: boolean = true;
interactiveProgressbar: boolean = false; interactiveProgressbar: boolean = false;
volumeControl: boolean = true; volumeControl: boolean = true;
defaultVolume: number = 0.8;
minVolume: number = 0;
muteControl: boolean = true;
hintLabel: string = ''; hintLabel: string = '';
hintLabelDelay: number = 0; hintLabelDelay: number = 0;
uninterruptible: boolean = false; uninterruptible: boolean = false;
......
...@@ -13,6 +13,9 @@ export class VideoElement extends UIElement implements PlayerElement { ...@@ -13,6 +13,9 @@ export class VideoElement extends UIElement implements PlayerElement {
progressBar: boolean = true; progressBar: boolean = true;
interactiveProgressbar: boolean = false; interactiveProgressbar: boolean = false;
volumeControl: boolean = true; volumeControl: boolean = true;
defaultVolume: number = 0.8;
minVolume: number = 0;
muteControl: boolean = true;
hintLabel: string = ''; hintLabel: string = '';
hintLabelDelay: number = 0; hintLabelDelay: number = 0;
uninterruptible: boolean = false; uninterruptible: boolean = false;
......
...@@ -28,6 +28,9 @@ export function initPlayerElement(serializedElement: UIElement): PlayerElement { ...@@ -28,6 +28,9 @@ export function initPlayerElement(serializedElement: UIElement): PlayerElement {
interactiveProgressbar: serializedElement.interactiveProgressbar !== undefined ? interactiveProgressbar: serializedElement.interactiveProgressbar !== undefined ?
serializedElement.interactiveProgressbar as boolean : false, serializedElement.interactiveProgressbar as boolean : false,
volumeControl: serializedElement.volumeControl !== undefined ? serializedElement.volumeControl as boolean : true, volumeControl: serializedElement.volumeControl !== undefined ? serializedElement.volumeControl as boolean : true,
defaultVolume: serializedElement.defaultVolume !== undefined ? serializedElement.defaultVolume as number : 0.8,
minVolume: serializedElement.minVolume !== undefined ? serializedElement.minVolume as number : 0,
muteControl: serializedElement.muteControl !== undefined ? serializedElement.muteControl as boolean : true,
hintLabel: serializedElement.hintLabel as string || '', hintLabel: serializedElement.hintLabel as string || '',
hintLabelDelay: serializedElement.hintLabelDelay !== undefined ? serializedElement.hintLabelDelay as number : 0, hintLabelDelay: serializedElement.hintLabelDelay !== undefined ? serializedElement.hintLabelDelay as number : 0,
uninterruptible: uninterruptible:
......
...@@ -29,6 +29,22 @@ import { PlayerElement } from '../../../../../common/interfaces/UIElementInterfa ...@@ -29,6 +29,22 @@ import { PlayerElement } from '../../../../../common/interfaces/UIElementInterfa
(change)="newPlayerConfig.volumeControl = $event.checked"> (change)="newPlayerConfig.volumeControl = $event.checked">
{{ 'player.volumeControl' | translate }} {{ 'player.volumeControl' | translate }}
</mat-checkbox> </mat-checkbox>
<mat-form-field appearance="fill">
<mat-label>{{ 'player.defaultVolume' | translate }}</mat-label>
<input matInput type="number" min="0" max="1" step="0.1"
[ngModel]="newPlayerConfig.defaultVolume || data.player.defaultVolume"
(ngModelChange)="newPlayerConfig.defaultVolume = $event">
</mat-form-field>
<mat-form-field appearance="fill">
<mat-label>{{ 'player.minVolume' | translate }}</mat-label>
<input matInput type="number" min="0" max="1" step="0.1"
[ngModel]="newPlayerConfig.minVolume || data.player.minVolume"
(ngModelChange)="newPlayerConfig.minVolume = $event">
</mat-form-field>
<mat-checkbox [checked]="newPlayerConfig.muteControl || data.player.muteControl"
(change)="newPlayerConfig.muteControl = $event.checked">
{{ 'player.muteControl' | translate }}
</mat-checkbox>
<mat-checkbox [checked]="newPlayerConfig.showRestTime || data.player.showRestTime" <mat-checkbox [checked]="newPlayerConfig.showRestTime || data.player.showRestTime"
(change)="newPlayerConfig.showRestTime = $event.checked"> (change)="newPlayerConfig.showRestTime = $event.checked">
{{ 'player.showRestTime' | translate }} {{ 'player.showRestTime' | translate }}
......
...@@ -129,6 +129,9 @@ ...@@ -129,6 +129,9 @@
"progressBar": "Fortschrittsbalken", "progressBar": "Fortschrittsbalken",
"interactiveProgressbar": "Fortschrittsbalken (steuerbar)", "interactiveProgressbar": "Fortschrittsbalken (steuerbar)",
"volumeControl": "Lautstärkeregelung", "volumeControl": "Lautstärkeregelung",
"muteControl": "Stummschaltung",
"minVolume": "Minimale Lautstärke",
"defaultVolume": "Voreingestellte Lautstärke",
"uninterruptible": "Unterbrechen verbieten", "uninterruptible": "Unterbrechen verbieten",
"hideOtherPages": "Weitere Seiten verbergen", "hideOtherPages": "Weitere Seiten verbergen",
"showRestTime": "Verbleibende Zeit anzeigen", "showRestTime": "Verbleibende Zeit anzeigen",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment