/** * $RCSfile: ,v $ * $Revision: $ * $Date: $ * * Copyright (C) 2004-2011 Jive Software. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sipmack.sip; import net.java.sipmack.common.Log; import net.java.sipmack.sip.event.CallListener; import net.java.sipmack.sip.event.CallStateEvent; import net.java.sipmack.softphone.gui.GuiCallback; /** * Title: SIPark * Description:JAIN-SIP Audio/Video phone application * * @author Thiago Rocha Camargo (thiago@jivesoftware.com) */ public class Interlocutor implements InterlocutorUI, CallListener { private Call call; private GuiCallback guiCallback; public static String BUSY = "BUSY"; public static String RINGING = "RINGING"; public static String ALERTING = "ALERTING"; /** * @param call The call to set. * @uml.property name="call" */ public void setCall(Call call) { this.call = call; call.addStateChangeListener(this); } /** * @return Returns the call. * @uml.property name="call" */ public Call getCall() { return call; } // InterlocutorUI public boolean isCaller() { return call.isIncoming(); } public boolean onHoldMic() { return call.onHoldMic(); } public boolean onHoldCam() { return call.onHoldCam(); } public String getAddress() { return call.getAddress(); } public String getName() { return call.getRemoteName(); } public int getID() { return call.getID(); } public String getCallState() { return call.getState(); } public void setCallback(GuiCallback callback) { this.guiCallback = callback; } // CallListener public void callStateChanged(CallStateEvent evt) { try { guiCallback.update(this); if (evt.getNewState() == Call.DISCONNECTED) { guiCallback.remove(this); } if (evt.getNewState() != evt.getOldState()) { if (evt.getOldState() == Call.ALERTING) { guiCallback.stopAlert(ALERTING); } else if (evt.getOldState() == Call.RINGING) { guiCallback.stopAlert(RINGING); } else if (evt.getOldState() == Call.BUSY) { guiCallback.stopAlert(BUSY); // Start current alert } if (evt.getNewState() == Call.ALERTING) { guiCallback.startAlert(ALERTING); } else if (evt.getNewState() == Call.RINGING) { if (evt.getSourceCall().getRemoteSdpDescription() == null || evt.getSourceCall().getRemoteSdpDescription().toString() == "") guiCallback.startAlert(RINGING); } else if (evt.getNewState() == Call.BUSY) { guiCallback.startAlert(BUSY); } } } catch (Exception e) { Log.error("callStateChanged-Interlocutor", e); } } }