public void TlfClick(int id) { switch (_StateManager.Tlf[id].State) { case TlfState.Idle: case TlfState.PaPBusy: if (id < Tlf.NumDestinations) { if (_StateManager.Tlf.Listen.State == FunctionState.Ready) { _EngineCmdManager.ListenTo(id); } else if (_StateManager.Tlf.Transfer.State == FunctionState.Ready) { _EngineCmdManager.TransferTo(id, true); } else if (_StateManager.Tlf.PickUp.State == FunctionState.Ready) { _EngineCmdManager.PreparePickUp(id); } else if (_StateManager.Tlf.PickUp.State == FunctionState.Executing) { _EngineCmdManager.CancelPickUp(); _EngineCmdManager.PreparePickUp(id); } else if (_StateManager.Tlf.Forward.State == FunctionState.Ready) { _EngineCmdManager.PrepareForward(id); } else { if (_StateManager.Tlf.PickUp.State == FunctionState.Error) { _EngineCmdManager.CancelPickUp(); } _EngineCmdManager.BeginTlfCall(id, _StateManager.Tlf.Priority.NewCall(id)); } } else { TlfClick(_StateManager.Tlf[id].Number, false, null, id); } break; case TlfState.In: case TlfState.InPrio: case TlfState.RemoteIn: if (_StateManager.Tlf.PickUp.State == FunctionState.Ready) { _StateManager.Tlf.PickUp.Reset(); } _EngineCmdManager.AnswerTlfCall(id); break; case TlfState.Out: case TlfState.Set: case TlfState.RemoteHold: case TlfState.Busy: case TlfState.Congestion: case TlfState.OutOfService: case TlfState.NotAllowed: _EngineCmdManager.EndTlfCall(id); if (_StateManager.Tlf.Priority.AssociatePosition == id) { _StateManager.Tlf.Priority.Reset(); } break; case TlfState.Conf: _EngineCmdManager.EndTlfConfCall(id); break; case TlfState.Mem: case TlfState.RemoteMem: _StateManager.Tlf.ResetMem(id); break; case TlfState.Hold: if (_StateManager.Tlf.Transfer.State == FunctionState.Ready) { _EngineCmdManager.TransferTo(id, false); } else if (_EngineCmdManager.HayConferencia()) { _EngineCmdManager.SetHold(false); } else { _EngineCmdManager.SetHold(id, false); } break; case TlfState.InProcess: //Do nothing break; } }