Merge pull request #5053 from GabrielInTheWorld/savingCountdown
Saves the settings for countdown-controls
This commit is contained in:
commit
c848472642
@ -34,7 +34,7 @@ export class ProjectionDialogService {
|
|||||||
*
|
*
|
||||||
* @param obj The projectable.
|
* @param obj The projectable.
|
||||||
*/
|
*/
|
||||||
public async openProjectDialogFor(obj: Projectable | ProjectorElementBuildDeskriptor): Promise<void> {
|
public async openProjectDialogFor(obj: Projectable | ProjectorElementBuildDeskriptor): Promise<object> {
|
||||||
let descriptor: ProjectorElementBuildDeskriptor;
|
let descriptor: ProjectorElementBuildDeskriptor;
|
||||||
if (isProjectable(obj)) {
|
if (isProjectable(obj)) {
|
||||||
descriptor = obj.getSlide(this.configService);
|
descriptor = obj.getSlide(this.configService);
|
||||||
@ -55,10 +55,12 @@ export class ProjectionDialogService {
|
|||||||
const [action, projectors, projectorElement]: ProjectionDialogReturnType = response;
|
const [action, projectors, projectorElement]: ProjectionDialogReturnType = response;
|
||||||
if (action === 'project') {
|
if (action === 'project') {
|
||||||
this.projectorService.projectOnMultiple(projectors, projectorElement);
|
this.projectorService.projectOnMultiple(projectors, projectorElement);
|
||||||
|
return { fullscreen: projectorElement.fullscreen, displayType: projectorElement.displayType };
|
||||||
} else if (action === 'addToPreview') {
|
} else if (action === 'addToPreview') {
|
||||||
projectors.forEach(projector => {
|
projectors.forEach(projector => {
|
||||||
this.projectorService.addElementToPreview(projector, projectorElement);
|
this.projectorService.addElementToPreview(projector, projectorElement);
|
||||||
});
|
});
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,10 @@ import { Subscription } from 'rxjs';
|
|||||||
import { distinctUntilChanged } from 'rxjs/operators';
|
import { distinctUntilChanged } from 'rxjs/operators';
|
||||||
|
|
||||||
import { ProjectorService } from 'app/core/core-services/projector.service';
|
import { ProjectorService } from 'app/core/core-services/projector.service';
|
||||||
|
import { StorageService } from 'app/core/core-services/storage.service';
|
||||||
import { ProjectorRepositoryService } from 'app/core/repositories/projector/projector-repository.service';
|
import { ProjectorRepositoryService } from 'app/core/repositories/projector/projector-repository.service';
|
||||||
import { ProjectionDialogService } from 'app/core/ui-services/projection-dialog.service';
|
import { ProjectionDialogService } from 'app/core/ui-services/projection-dialog.service';
|
||||||
import { Projector } from 'app/shared/models/core/projector';
|
import { IdentifiableProjectorElement, Projector } from 'app/shared/models/core/projector';
|
||||||
import {
|
import {
|
||||||
isProjectable,
|
isProjectable,
|
||||||
isProjectorElementBuildDeskriptor,
|
isProjectorElementBuildDeskriptor,
|
||||||
@ -71,7 +72,8 @@ export class ProjectorButtonComponent implements OnInit, OnDestroy {
|
|||||||
public constructor(
|
public constructor(
|
||||||
private projectorRepo: ProjectorRepositoryService,
|
private projectorRepo: ProjectorRepositoryService,
|
||||||
private projectionDialogService: ProjectionDialogService,
|
private projectionDialogService: ProjectionDialogService,
|
||||||
private projectorService: ProjectorService
|
private projectorService: ProjectorService,
|
||||||
|
private storage: StorageService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -104,7 +106,7 @@ export class ProjectorButtonComponent implements OnInit, OnDestroy {
|
|||||||
*
|
*
|
||||||
* @param event the click event
|
* @param event the click event
|
||||||
*/
|
*/
|
||||||
public onClick(event?: Event): void {
|
public async onClick(event?: Event): Promise<void> {
|
||||||
if (event) {
|
if (event) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
}
|
}
|
||||||
@ -115,8 +117,11 @@ export class ProjectorButtonComponent implements OnInit, OnDestroy {
|
|||||||
// remove the projected object
|
// remove the projected object
|
||||||
this.projectorService.removeFrom(this.projector, this.object);
|
this.projectorService.removeFrom(this.projector, this.object);
|
||||||
} else {
|
} else {
|
||||||
|
const projectorElement = this.getProjectorElement(
|
||||||
|
await this.storage.get<object>('projectorElementOptions')
|
||||||
|
);
|
||||||
// instantly project the object
|
// instantly project the object
|
||||||
this.projectorService.projectOn(this.projector, this.object);
|
this.projectorService.projectOn(this.projector, projectorElement || this.object);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// open the projection dialog
|
// open the projection dialog
|
||||||
@ -139,4 +144,17 @@ export class ProjectorButtonComponent implements OnInit, OnDestroy {
|
|||||||
? this.projectorService.isProjectedOn(this.object, this.projector)
|
? this.projectorService.isProjectedOn(this.object, this.projector)
|
||||||
: this.projectorService.isProjected(this.object);
|
: this.projectorService.isProjected(this.object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param options The previous configured options of a projector.
|
||||||
|
*/
|
||||||
|
private getProjectorElement(options: object): IdentifiableProjectorElement | null {
|
||||||
|
let element = null;
|
||||||
|
if (isProjectable(this.object)) {
|
||||||
|
element = this.object.getSlide().getBasicProjectorElement(options);
|
||||||
|
} else if (isProjectorElementBuildDeskriptor(this.object)) {
|
||||||
|
element = this.object.getBasicProjectorElement(options);
|
||||||
|
}
|
||||||
|
return Object.assign(element, options);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import { Title } from '@angular/platform-browser';
|
|||||||
|
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
|
||||||
|
import { StorageService } from 'app/core/core-services/storage.service';
|
||||||
import { CountdownRepositoryService } from 'app/core/repositories/projector/countdown-repository.service';
|
import { CountdownRepositoryService } from 'app/core/repositories/projector/countdown-repository.service';
|
||||||
import { ConfigService } from 'app/core/ui-services/config.service';
|
import { ConfigService } from 'app/core/ui-services/config.service';
|
||||||
import { ProjectionDialogService } from 'app/core/ui-services/projection-dialog.service';
|
import { ProjectionDialogService } from 'app/core/ui-services/projection-dialog.service';
|
||||||
@ -44,6 +45,11 @@ export class CountdownControlsComponent extends BaseViewComponent {
|
|||||||
*/
|
*/
|
||||||
public warningTime: number;
|
public warningTime: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The key to storage.
|
||||||
|
*/
|
||||||
|
private storageKey = 'projectorElementOptions';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
@ -61,7 +67,8 @@ export class CountdownControlsComponent extends BaseViewComponent {
|
|||||||
private repo: CountdownRepositoryService,
|
private repo: CountdownRepositoryService,
|
||||||
private configService: ConfigService,
|
private configService: ConfigService,
|
||||||
private promptService: PromptService,
|
private promptService: PromptService,
|
||||||
private projectionDialogService: ProjectionDialogService
|
private projectionDialogService: ProjectionDialogService,
|
||||||
|
private storage: StorageService
|
||||||
) {
|
) {
|
||||||
super(titleService, translate, matSnackBar);
|
super(titleService, translate, matSnackBar);
|
||||||
|
|
||||||
@ -110,7 +117,9 @@ export class CountdownControlsComponent extends BaseViewComponent {
|
|||||||
* Brings the projection dialog
|
* Brings the projection dialog
|
||||||
*/
|
*/
|
||||||
public onBringDialog(): void {
|
public onBringDialog(): void {
|
||||||
this.projectionDialogService.openProjectDialogFor(this.countdown);
|
this.projectionDialogService
|
||||||
|
.openProjectDialogFor(this.countdown)
|
||||||
|
.then(options => this.storeSettings(options), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -123,4 +132,13 @@ export class CountdownControlsComponent extends BaseViewComponent {
|
|||||||
this.repo.delete(this.countdown).then(() => {}, this.raiseError);
|
this.repo.delete(this.countdown).then(() => {}, this.raiseError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Stores the options for a projector in the local-storage.
|
||||||
|
*
|
||||||
|
* @param element The configured options for projector
|
||||||
|
*/
|
||||||
|
private storeSettings(element: object): void {
|
||||||
|
this.storage.set(this.storageKey, element);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user