using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.BL.Entities;
using Tango.Core.Commands;
using Tango.Integration.Operation;
using Tango.PPC.Common;
namespace Tango.PPC.UI.ViewModels
{
public class MachineStatusViewVM : PPCViewModel
{
private JobHandler _handler;
private Job _job;
///
/// Gets or sets the job.
///
public Job Job
{
get { return _job; }
set { _job = value; RaisePropertyChangedAuto(); }
}
private RunningJobStatus _runningJobStatus;
///
/// Gets or sets the running job status.
///
public RunningJobStatus RunningJobStatus
{
get { return _runningJobStatus; }
set { _runningJobStatus = value; RaisePropertyChangedAuto(); }
}
public RelayCommand StopCommand { get; set; }
public MachineStatusViewVM()
{
StopCommand = new RelayCommand(StopJob);
}
public override void OnApplicationStarted()
{
MachineProvider.MachineOperator.PrintingStarted += MachineOperator_PrintingStarted;
}
private void MachineOperator_PrintingStarted(object sender, PrintingEventArgs e)
{
_handler = e.JobHandler;
Job = e.Job;
e.JobHandler.StatusChanged += JobHandler_StatusChanged;
//e.JobHandler.SpoolChangeRequired += JobHandler_SpoolChangeRequired;
e.JobHandler.Stopped += JobHandler_Stopped;
//e.JobHandler.CanCancelChanged += JobHandler_CanCancelChanged;
}
private void JobHandler_Stopped(object sender, EventArgs e)
{
if (_handler != null)
{
_handler.StatusChanged -= JobHandler_StatusChanged;
//_handler.SpoolChangeRequired -= JobHandler_SpoolChangeRequired;
_handler.Stopped -= JobHandler_Stopped;
}
}
private void JobHandler_StatusChanged(object sender, RunningJobStatus e)
{
InvokeUI(() =>
{
RunningJobStatus = e;
});
}
#region Public Methods
///
/// Toggles the application technician mode.
///
public void ToggleTechnicianMode()
{
if (!ApplicationManager.IsInTechnicianMode)
{
ApplicationManager.EnterTechnicianMode();
}
else
{
ApplicationManager.ExitTechnicianMode();
}
}
private void StopJob()
{
_handler?.Cancel();
}
#endregion
}
}