📄 callmanager.java.svn-base
字号:
} else if (callState.equals(Call.RINGING)) {
} else if (callState.equals(Call.BUSY)) {
closeToaster(interlocutorUI);
} else if (callState.equals(Call.ALERTING)) {
showIncomingCall(interlocutorUI);
PhoneManager.getInstance().addCurrentCall(callNumber);
}
}
});
final String callState = interlocutorUI.getCallState();
if (callState != null && (callState.equals(Call.DIALING)) || callState.equals(Call.RINGING)) {
showOutgoingCall(interlocutorUI);
}
}
private void showCallAnswered(InterlocutorUI interlocutorUI) {
final ChatManager chatManager = SparkManager.getChatManager();
String phoneNumber = interlocutorUI.getCall().getNumber();
phoneNumber = SoftPhoneManager.getNumbersFromPhone(phoneNumber);
PhonePanel panel = calls.get(phoneNumber);
ChatRoom chatRoom = null;
if (panel == null) {
// Let's check to see if the Contact Exists
final VCard vcard = SparkManager.getVCardManager().searchPhoneNumber(phoneNumber);
if (vcard != null) {
panel = new RosterMemberPanel();
panel.setInterlocutorUI(interlocutorUI);
String jid = vcard.getJabberId();
String nickname = SparkManager.getUserManager().getUserNicknameFromJID(jid);
chatRoom = chatManager.createChatRoom(jid, nickname, nickname);
chatRoom.getSplitPane().setRightComponent(panel);
chatRoom.getSplitPane().setResizeWeight(.80);
chatRoom.getSplitPane().setDividerSize(5);
chatManager.getChatContainer().activateChatRoom(chatRoom);
} else {
panel = new NonRosterPanel();
panel.setInterlocutorUI(interlocutorUI);
chatManager.getChatContainer().addContainerComponent(panel);
chatManager.getChatContainer().activateComponent(panel);
}
calls.put(phoneNumber, panel);
} else {
panel.setInterlocutorUI(interlocutorUI);
}
if (chatRoom != null) {
SoftPhoneManager.getInstance().addCallSession(chatRoom, SoftPhoneManager.CallRoomState.inCall);
SparkManager.getChatManager().notifySparkTabHandlers(chatRoom);
} else {
SoftPhoneManager.getInstance().addCallSession(panel, SoftPhoneManager.CallRoomState.inCall);
SparkManager.getChatManager().notifySparkTabHandlers(panel);
}
}
public void interlocutorRemoved(final InterlocutorUI interlocutorUI) {
if (softPhone.getInterlocutors().size() == 0) {
if (offPhonePresence == null) {
// Set user to available when all phone calls are hung up.
Presence availablePresence = new Presence(Presence.Type.available, "Available", 1, Presence.Mode.available);
SparkManager.getSessionManager().changePresence(availablePresence);
} else {
// Set user presence to last one choosed
SparkManager.getSessionManager().changePresence(offPhonePresence);
}
offPhonePresence = null;
}
final SwingWorker delay = new SwingWorker() {
public Object construct() {
try {
Thread.sleep(2000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
return true;
}
public void finished() {
String phoneNumber = interlocutorUI.getCall().getNumber();
phoneNumber = SoftPhoneManager.getNumbersFromPhone(phoneNumber);
final PhonePanel phonePanel = calls.get(phoneNumber);
if (phonePanel == null) {
return;
}
for (ChatRoom room : SparkManager.getChatManager().getChatContainer().getChatRooms()) {
Component comp = room.getSplitPane().getRightComponent();
if (comp != null && comp instanceof PhonePanel) {
final PhonePanel cp = (PhonePanel) comp;
if (cp == phonePanel) {
room.getSplitPane().setRightComponent(null);
removePhonePanel(cp);
// Remove state mapping
softPhone.removeCallSession(room);
SparkManager.getChatManager().notifySparkTabHandlers(room);
}
return;
}
}
}
};
delay.start();
}
/**
* Removes PhonePanel from ChatContainer or associated ChatRoom.
*
* @param component the PhonePanel or ChatRoom containing the PhonePanel.
*/
private void removePhonePanel(Component component) {
String phoneNumber = null;
if (component instanceof PhonePanel) {
final PhonePanel phonePanel = (PhonePanel) component;
phoneNumber = phonePanel.getPhoneNumber();
phoneNumber = SoftPhoneManager.getNumbersFromPhone(phoneNumber);
} else if (component instanceof ChatRoom) {
ChatRoom chatRoom = (ChatRoom) component;
Component comp = chatRoom.getSplitPane().getRightComponent();
if (comp != null && comp instanceof PhonePanel) {
final PhonePanel phonePanel = (PhonePanel) comp;
phoneNumber = phonePanel.getPhoneNumber();
phoneNumber = SoftPhoneManager.getNumbersFromPhone(phoneNumber);
}
}
if (phoneNumber != null) {
calls.remove(phoneNumber);
}
}
/**
* Retrieves the <code>PhonePanel</code> object from the <code>ChatRoom</code>.
* If no PhonePanel exists, then null is returned.
*
* @param chatRoom the ChatRoom.
* @return the PhonePanel.
*/
public PhonePanel getPhonePanel(ChatRoom chatRoom) {
Component comp = chatRoom.getSplitPane().getRightComponent();
if (comp != null && comp instanceof PhonePanel) {
final PhonePanel phonePanel = (PhonePanel) comp;
return phonePanel;
}
return null;
}
/**
* Returns the associated Chat Room if one exists.
*
* @param phonePanel the <code>PhonePanel</code>.
* @return the ChatRoom.
*/
public ChatRoom getAssociatedChatRoom(PhonePanel phonePanel) {
for (ChatRoom chatRoom : SparkManager.getChatManager().getChatContainer().getChatRooms()) {
Component comp = chatRoom.getSplitPane().getRightComponent();
if (phonePanel.equals(comp)) {
return chatRoom;
}
}
return null;
}
/**
* Returns the <code>SparkTab</code> that acts as a container to this PhonePanel.
*
* @param phonePanel the <code>PhonePanel</code>
* @return the SparkTab.
*/
public SparkTab getSparkTab(PhonePanel phonePanel) {
final ChatContainer chatContainer = SparkManager.getChatManager().getChatContainer();
int tabCount = chatContainer.getTabCount();
for (int i = 0; i < tabCount; i++) {
SparkTab sparkTab = chatContainer.getTabAt(i);
Component containerComponent = chatContainer.getComponentInTab(sparkTab);
if (containerComponent.equals(phonePanel)) {
return sparkTab;
}
if (containerComponent instanceof ChatRoom) {
ChatRoom chatRoom = (ChatRoom) containerComponent;
Component rightComponent = chatRoom.getSplitPane().getRightComponent();
if (phonePanel.equals(rightComponent)) {
return sparkTab;
}
}
}
return null;
}
private void closeToaster(InterlocutorUI ic) {
SparkToaster toaster = toasters.get(ic);
if (toaster != null) {
toaster.close();
toasters.remove(ic);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -