Files
2018-12-21 10:31:41 +03:00

40 lines
1.5 KiB
C#

namespace DevExpress.DevAV.Services {
using System;
public interface ITransitionService {
void StartTransition(bool forward, object waitParameter);
void EndTransition();
}
class TransitionService : ITransitionService {
ISupportTransitions supportTransitions;
public TransitionService(ISupportTransitions supportTransitions) {
this.supportTransitions = supportTransitions;
}
public void StartTransition(bool forward, object waitParameter) {
supportTransitions.StartTransition(forward, waitParameter);
}
public void EndTransition() {
supportTransitions.EndTransition();
}
}
public static class TransitionServiceExtension {
public static IDisposable EnterTransition(this ITransitionService service,
bool effective = true,
bool forward = true,
object waitParameter = null) {
return new TransitionBatch(effective ? service : null, forward, waitParameter);
}
class TransitionBatch : IDisposable {
ITransitionService service;
public TransitionBatch(ITransitionService service, bool forward, object waitParameter) {
this.service = service;
if(service != null)
service.StartTransition(forward, waitParameter);
}
public void Dispose() {
if(service != null)
service.EndTransition();
}
}
}
}