using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Integration.Operation; using Tango.PPC.Common.Connection; using Tango.PPC.Common.Notifications; using Tango.PPC.Common.Threading; using Tango.PPC.Common.ThreadLoading; using Tango.PPC.UI.Dialogs; namespace Tango.PPC.UI.ThreadLoading { public class DefaultThreadLoadingService : IThreadLoadingService { private INotificationProvider _notificationsProvider; private IMachineProvider _machineProvider; private IDispatcherProvider _dispatcher; private bool _dialogShown; public DefaultThreadLoadingService(INotificationProvider notificationsProvider, IMachineProvider machineProvider, IDispatcherProvider dispatcher) { _notificationsProvider = notificationsProvider; _machineProvider = machineProvider; _dispatcher = dispatcher; _machineProvider.MachineOperator.ThreadLoadingStatusChanged += MachineOperator_ThreadLoadingStatusChanged; } private void MachineOperator_ThreadLoadingStatusChanged(object sender, PMR.ThreadLoading.StartThreadLoadingResponse e) { if (!_dialogShown && e.State != PMR.ThreadLoading.ThreadLoadingState.None) { _dialogShown = true; _dispatcher.Invoke(async () => { await _notificationsProvider.ShowDialog(new ThreadLoadingViewVM()); _dialogShown = false; }); } } public async void StartThreadLoading() { _dialogShown = true; await _notificationsProvider.ShowDialog(new ThreadLoadingViewVM(true)); _dialogShown = false; } } }