分类:
2010-03-18 15:09:18
xmlns:zycgwin="cn.org.zycg.windows.*"
xmlns:expoview="com.expofiles.*"
horizontalScrollPolicy="off"
verticalScrollPolicy="off" minWidth="245" minHeight="800"
creationComplete="initApp()"
close="MainWindowClose()"
layout="absolute" >
Alert {
titleStyleName: "alertTitle";
messageStyleName: "alertMessage";
buttonStyleName: "alertButton";
dropShadowEnabled: true;
shadowDistance: 5;
shadowDirection: right;
cornerRadius: 10;
embedFonts: true;
fontFamily: "Courier New";
backgroundColor:white;
borderStyle: solid;
headerHeight: 39;
dropShadowColor: #0000ff;
backgroundColor: #0099ff;
}
.alertTitle {
letterSpacing: 0;
fontSize: 14;
color: red;
headheight:20;
textAlign: center;
}
.alertMessage {
letterSpacing: 0;
fontSize: 12;
fontWeight: normal;
color: black;
}
.alertButton {
letterSpacing: 0;
fontSize: 12;
cornerRadius: 10;
fontWeight: normal;
textRollOverColor: red;
color: white;
skin: ClassReference(null);
}
import cn.org.zycg.views.AlertView;
import cn.org.zycg.views.LoadingView;
import mx.controls.SWFLoader;
import cn.org.zycg.windows.HistoryMesWindow;
import cn.org.zycg.views.components.MessageAlertWindow;
import cn.org.zycg.model.ModelLocator;
import mx.events.FlexNativeMenuEvent;
import mx.controls.FlexNativeMenu;
import air.update.ApplicationUpdaterUI;
import air.update.events.UpdateEvent;
import mx.events.CloseEvent;
import mx.controls.Alert;
import cn.org.zycg.utils.HashMap;
import cn.org.zycg.xiffextend.events.SendFileEvent;
import cn.org.zycg.events.MessageWindowCloseEvent;
import org.jivesoftware.xiff.data.vcard.VCardExtension;
import org.jivesoftware.xiff.data.IExtension;
import org.jivesoftware.xiff.data.search.SearchItem;
import org.jivesoftware.xiff.data.search.SearchExtension;
import org.jivesoftware.xiff.core.UnescapedJID;
import cn.org.zycg.events.MessageWindowIQSendEvent;
import cn.org.zycg.utils.AllUrl;
import cn.org.zycg.events.OpenMessageWindowEvent;
import cn.org.zycg.views.RosterItemview;
import cn.org.zycg.views.mainview;
import cn.org.zycg.views.loginview;
import cn.org.zycg.xiffextend.data.SendFileInfoExtension;
import cn.org.zycg.events.SendMessageEvent;
import cn.org.zycg.events.ShowMessageEvent;
import cn.org.zycg.events.OpenHisMesWindowEvent;
import cn.org.zycg.xiffextend.events.SendFileInfoEvent;
import cn.org.zycg.windows.DebugWindow;
import cn.org.zycg.windows.MessageWindow;
import flash.utils.getTimer;
//xmpp部分
import org.jivesoftware.xiff.data.im.RosterItem;
import org.jivesoftware.xiff.data.XMPPStanza;
import org.jivesoftware.xiff.data.IQ;
import org.jivesoftware.xiff.core.EscapedJID;
import org.jivesoftware.xiff.core.XMPPSocketConnection;
import org.jivesoftware.xiff.conference.Room;
import org.jivesoftware.xiff.core.XMPPConnection;
import org.jivesoftware.xiff.data.Presence;
import org.jivesoftware.xiff.conference.InviteListener;
import org.jivesoftware.xiff.events.*;
import org.jivesoftware.xiff.data.Message;
import org.jivesoftware.xiff.im.Roster;
import org.jivesoftware.xiff.data.im.RosterItemVO;
import mx.events.CollectionEvent;
import cn.org.zycg.utils.IMap
import flash.system.Security;
import mx.managers.PopUpManager;
import mx.collections.ArrayCollection;
import mx.events.ListEvent;
import mx.rpc.events.InvokeEvent;
//**********************************窗口变量****************************
public var ms:Message;
private var myMenu:FlexNativeMenu;
private var loginCan:loginview = new loginview();
private var mainCan:mainview = new mainview();
private var loadingView:LoadingView=new LoadingView();
//**********************************程序变量*****************************
//心跳timmer
private var keepAlive:Timer;
private var time:Timer;
private var _count:int;
//debug窗口
//public var DebugW1:DebugWindow;
//public var DebugW2:DebugWindow;
//消息窗口列表
private var MessageWindowsList:Array = new Array();
//记录messagewindows的id以便循环查找消息窗口
private var messageWindowsID:Number = 0;
//自己是谁
//private var preI:int=0;
private var whoami:UnescapedJID;
private var dockImage:BitmapData;
private var dockaImage:BitmapData;
private var isManName:Boolean=false;
private var isManXml:Boolean=false;
private var alertShow:AlertView;
private var loadTime:Timer;
//**********************************xmpp变量*****************************
//xmpp连接
private var _connection:XMPPSocketConnection = new XMPPSocketConnection();
private var _roster:Roster = new Roster();
private var manArry:Array = new Array();
private var itemIndex:int=0;
[Bindable]
public var model:ModelLocator=ModelLocator.getInstance(); //定义模型定位器实例
//*********************************初始化********************************
private function initApp():void
{
//初始化变量
initVar();
//初始化样式
initStyle();
//初始化各个窗口
initwindowsView();
//初始化连接监听
initcontlistener();
//初始化通讯录监听
setupRosterListeners();
//初始化状态监听
setupPresenceListeners();
//初始化xmpp消息监听
setupMessageListeners();
//初始化本客户端自己消息监听
initClientListeners();
//初始化心跳timmer
initTimmer();
//打开调试窗
//onOpenDebugwindow1();
//onOpenDebugwindow2();
initApplication();
//生成托盘
checkForUpdate();
//自动升级
loginCan.setFocus();
}
private function initVar():void
{
StyleManager.getStyleDeclaration("ToolTip").setStyle("fontSize",12);
StyleManager.getStyleDeclaration("ToolTip").setStyle("backgroundColor","#FFFFFF");
//messageList
}
//************************************连接超时计算*********************************
private function loadTimeKeep(evt:TimerEvent):void
{
Alert.show("连接超时,请重新登陆!", "", 3, this, alertHandler);//弹出自定义的选择框, 关于Alert的详细用法,参考官方文档或我前面的相关文章.
loadTime.stop();
}
private function alertHandler(event:CloseEvent):void
{
if(event.detail==Alert.YES){
loginCan.visible=true;
loadingView.visible=false;
}else{
dock();//最小化到托盘
}
}
private function initStyle():void
{
//this.systemChrome = "none"; //不显示系统窗口
//this.transparent = true;
this.showStatusBar = false; //不显示底部状态栏
this.showGripper = false; //不显示底部大小控制按钮
this.showTitleBar=false;//不显示标题栏
this.setStyle("backgroundImage","");
this.setStyle("backgroundColor","");
this.setStyle("borderThickness",0);
}
private function initcontlistener():void
{
_connection.addEventListener(LoginEvent.LOGIN,onLogin);
_connection.addEventListener(ConnectionSuccessEvent.CONNECT_SUCCESS,onConnectSuccess);
_connection.addEventListener(XIFFErrorEvent.XIFF_ERROR,onError);
_connection.addEventListener(OutgoingDataEvent.OUTGOING_DATA,onOutgoingData)
_connection.addEventListener(IncomingDataEvent.INCOMING_DATA,onIncomingData);
_connection.addEventListener(DisconnectionEvent.DISCONNECT,onDisconnect);
//接收SendFileinfo信息
_connection.addEventListener(SendFileInfoEvent.SENDFILEINFO_EVENT,onReceiveMessageWindowIQHandler);
//接收sendfile信息
_connection.addEventListener(SendFileEvent.SENDFILE_EVENT,onReceiveMessageWindowIQHandler);
//connection.addEventListener(RegistrationFieldsEvent.REG_FIELDS, onRegistrationFields);
//connection.addEventListener(RegistrationSuccessEvent.REGISTRATION_SUCCESS, onRegistrationSuccess);
}
private function setupRosterListeners() : void
{
_roster.connection = _connection;
_roster.addEventListener(RosterEvent.ROSTER_LOADED,rosterHandler);
_roster.addEventListener(RosterEvent.SUBSCRIPTION_DENIAL, rosterHandler);
_roster.addEventListener(RosterEvent.SUBSCRIPTION_REQUEST, rosterHandler);
_roster.addEventListener(RosterEvent.SUBSCRIPTION_REVOCATION, rosterHandler);
_roster.addEventListener(RosterEvent.USER_AVAILABLE, rosterHandler);
_roster.addEventListener(RosterEvent.USER_UNAVAILABLE, rosterHandler);
_roster.addEventListener(RosterEvent.USER_ADDED,rosterHandler);
_roster.addEventListener( RosterEvent.USER_PRESENCE_UPDATED, rosterHandler );
_roster.addEventListener( RosterEvent.USER_REMOVED, rosterHandler );
_roster.addEventListener( RosterEvent.USER_SUBSCRIPTION_UPDATED, rosterHandler );
}
private function setupPresenceListeners() : void
{
_connection.addEventListener(PresenceEvent.PRESENCE,presenceHandler);
}
private function setupMessageListeners() : void
{
_connection.addEventListener(MessageEvent.MESSAGE,messageHandler);
}
//设置客户端监听的事件
private function initClientListeners():void
{
//addEventListener(ShowMessageEvent.SHOWMESSAGE_EVENT,showMessage);
addEventListener(OpenMessageWindowEvent.OPENMESSAGEWINDOW_EVENT,newMessageWindow);
addEventListener(SendMessageEvent.SENDMESSAGE_EVENT,MessageSend);
addEventListener(MessageWindowIQSendEvent.MESSAGEWINDOWIQSEND_EVENT,MessageSendIQ);
addEventListener(MessageWindowCloseEvent.MESSAGEWINDOWCLOSE_EVENT,onMessageWindowClose);
//addEventListener(OpenHisMesWindowEvent.OPENHISMESSAGE_EVENT,openHisMesWin);
model.addEventListener(ModelLocator.MANNAME_EVENT,manNameCom);
model.addEventListener(ModelLocator.MANXML_EVENT,manXmlCom);
}
private function initwindowsView():void
{
mainCan.visible = false;
loadingView.visible=false;
addChild(loginCan);
addChild(loadingView);
addChild(mainCan);
}
//初始化心跳timmer
private function initTimmer():void
{
keepAlive = new Timer(60000);//1分钟
keepAlive.addEventListener(TimerEvent.TIMER, onKeepAliveLoop);
keepAlive.start();
}
//****************************处理xmpp消息事件函数**********************************
//连接成功处理
private function onConnectSuccess( evt:ConnectionSuccessEvent ):void
{
trace("onConnectSuccess here");
}
//登录处理
private function onLogin(evt:LoginEvent):void
{
trace("onLogin here");
}
//关闭连接处理
private function onDisconnect(evt:DisconnectionEvent ):void
{
Alert.show("用户名或密码错误,请重试!", "", 1, this, function alertCloseHandler(event:CloseEvent):void{
if(event.detail==Alert.YES)
{
loginCan.visible=true;
loadingView.visible=false;
}})
}
//出错处理
private function onError( evt:XIFFErrorEvent ):void
{
//DebugW2.debugpanel.debug_msg("XIFFErrorEvent " + "onError: " + "type:" + evt.errorType + " message:" + evt.errorMessage);
//trace("onError: " + "type:" + e.errorType + " message:" + e.errorMessage);
}
//消息输出输入处理
private function onOutgoingData(evt:OutgoingDataEvent):void
{
//DebugW1.debugpanel.debug_msg(">>outgoing: " + evt.data.toString());
//trace("onOutgoingData: " + e.data);
}
//消息输出输入处理
private function onIncomingData(evt:IncomingDataEvent):void
{
//DebugW1.debugpanel.debug_msg(">>incoming: " + evt.data.toString());
//trace("onIncomingData: " + e.data);
}
//roster消息处理
private function rosterHandler(evt:RosterEvent):void
{
//trace("rosterHandler");
switch (evt.type){
case RosterEvent.USER_AVAILABLE :
//DebugW2.debugpanel.debug_msg(evt.jid.bareJID + " is Available (RosterEvent)");
//mainCan.workbar.UpdateRosterItem(evt);
break;
case RosterEvent.USER_UNAVAILABLE :
//DebugW2.debugpanel.debug_msg(evt.jid.bareJID + " is Unavailable (RosterEvent)");
//mainCan.workbar.UpdateRosterItem(evt);
break;
case RosterEvent.USER_PRESENCE_UPDATED:
//mainCan.workbar.UpdateRosterItem(evt.data as RosterItemVO);
break;
case RosterEvent.USER_REMOVED:
break;
case RosterEvent.USER_SUBSCRIPTION_UPDATED:
break;
case RosterEvent.SUBSCRIPTION_REQUEST:
// Fill this bit in, obviously
break;
case RosterEvent.SUBSCRIPTION_DENIAL :
//DebugW2.debugpanel.debug_msg(evt.jid.bareJID + " denied your request (RosterEvent)");
break;
case RosterEvent.SUBSCRIPTION_REVOCATION :
// this fires at unexpected times so ignore it.
// trace (event.jid + " revoked your presence (RosterEvent)");
break;
case RosterEvent.USER_ADDED:
rosteritemHandler(evt);
break;
case RosterEvent.ROSTER_LOADED:
initRoster();
break;
default :
// do nothing... not recognized
}
}
private function presenceHandler(evt:PresenceEvent):void
{
model.preI++;
for(var i:Number=0;i
var p:Presence = evt.data[i] as Presence;
var jid:String = p.from.bareJID; // We will use JID as our key
switch (p.show)
{
case Presence.SHOW_AWAY:
mainCan.workbar.UpdatePresence(p);
UpdateMessageWindowsPresence(p);
break;
case Presence.SHOW_CHAT:
mainCan.workbar.UpdatePresence(p);
UpdateMessageWindowsPresence(p);
break;
case Presence.SHOW_DND:
mainCan.workbar.UpdatePresence(p);
UpdateMessageWindowsPresence(p);
break;
case Presence.SHOW_XA:
case Presence.PROBE_TYPE:
break;
case Presence.ERROR_TYPE :
var error:XIFFErrorEvent = new XIFFErrorEvent();
error.errorCode = p.errorCode;
error.errorCondition = p.errorCondition;
error.errorMessage = p.errorMessage;
error.errorType = p.errorType;
onError(error);
break;
case Presence.UNAVAILABLE_TYPE :
//处理用户登出
//DebugW2.debugpanel.debug_msg(jid + " PresenceEvent Presence.UNAVAILABLE_TYPE: ");
mainCan.workbar.UpdatePresence(p);
UpdateMessageWindowsPresence(p);
break;
case Presence.SUBSCRIBED_TYPE:
case Presence.UNSUBSCRIBED_TYPE:
case Presence.SUBSCRIBE_TYPE:
case Presence.UNSUBSCRIBE_TYPE :
//DebugW2.debugpanel.debug_msg(jid + " PresenceEvent Presence.UNSUBSCRIBE_TYPE: ");
//trace (jid + " Presence.UNSUBSCRIBE_TYPE (PresenceEvent)");
break;
default :
mainCan.workbar.UpdatePresence(p);
UpdateMessageWindowsPresence(p);
break;
}
/*
Presence.PROBE_TYPE >> dunno what to do with this????
*/
}
}
//接受message处理
private function messageHandler(e:MessageEvent):Boolean
{
var m:Message = e.data as Message;
//DebugW2.debugpanel.debug_msg(">>MESSAGE BODY: "+ e.data.body);
//DebugW2.debugpanel.debug_msg("TYPE: "+ m.type);
//转发消息处理MessageW1.messagepanel.messageReceived(m.body,m.from.bareJID);
switch (m.type){
case Message.CHAT_TYPE:
if(MessageWindowsList.length>0)
{
for(var i:Number=0;i
//trace("m.from.toString()"+m.from.toString());
if((MessageWindowsList[i] as MessageWindow).RItem.jid.toString()==m.from.toString())
{
SendMessage2MessageWindow(m);
}else
{
timeIcon();
SendMessage2MessageWindow(m);
MessageAlertWindow.showMessage("有新消息!","信息提示");
}
}
}else
{
timeIcon();
SendMessage2MessageWindow(m);
MessageAlertWindow.showMessage("有新消息!","信息提示")
}
break;
case Message.ERROR_TYPE :
var error:XIFFErrorEvent = new XIFFErrorEvent();
error.errorCode = m.errorCode;
error.errorCondition = m.errorCondition;
error.errorMessage = m.errorMessage;
error.errorType = m.errorType;
onError(error);
SendMessage2MessageWindow(m);
break;
default :
//trace("Message not handled.");
}
return true;
}
//处理文件接收IQ消息
private function onReceiveFileHandler(e:IQEvent):void
{
var ReceivedData:SendFileInfoExtension = e.data as SendFileInfoExtension;
var sendwid:String = ReceivedData.SendWindowID;
}
//处理sendfile返回IQ消息
private function onReceiveMessageWindowIQHandler(e:IQEvent):void
{
var hasWindow:Boolean = false;
var ReceivedIQ:IQ = e.iq;
for(var i:Number=0;i
if((MessageWindowsList[i] as MessageWindow).RItem.jid.escaped.bareJID == ReceivedIQ.from.bareJID)
{
(MessageWindowsList[i] as MessageWindow).IQReceived(e);
hasWindow = true;
}
}
if(!hasWindow)
{
var MW:MessageWindow = new MessageWindow();
//这里应该请求用户信息新建用户人信息,暂时临时运用下
MW.RItem = new RosterItemVO(ReceivedIQ.from.unescaped);
getManDisplayName(model.manXml,MW.RItem);
MW.userName=MW.RItem.displayName;
MW.position=MW.RItem.position;
messageWindowsID++;
MW.WindowID = messageWindowsID;
MW.WhoAmi = whoami;
MW.advOpen(this);
MW.nativeWindow.x = 600;
MW.nativeWindow.y = 200;
MW.winBool=false;
MessageWindowsList.push(MW);
//MW.tabId.selectedIndex=1;
MW.IQReceived(e);
MW.nativeWindow.activate();
MW.nativeWindow.orderToFront();
MW.nativeWindow.alwaysInFront = true;
MW.nativeWindow.alwaysInFront = false;
}
}
//*************************组件触发代码区************************
public function doconnect():void
{
loadTime=new Timer(60000);
loadTime.addEventListener(TimerEvent.TIMER, loadTimeKeep);
loadTime.start();
loginCan.visible=false;
loadingView.visible=true;
//Security.loadPolicyFile("xmlsocket://"+loginCan.serverIPU.text+":5229");
_connection.username = loginCan.usernameIPU.text;
_connection.password = loginCan.passwordIPU.text;
_connection.server = loginCan.serverIPU.text;
//_connection.connect("flash");//关闭匿名用户的情况下,flash标准无法登录
_connection.connect("standard");
//this.addChild(loadLoader);
}
public function dodisconnect():void
{
//_connection.active=true;
_connection.disconnect();
}
public function disconnect():void
{
closeApp();
}
public function windowStartResize():void
{
this.nativeWindow.startResize();
}
//************************************心跳函数*********************************
private function onKeepAliveLoop(evt:TimerEvent):void
{
_connection.sendKeepAlive();
}
//*********************************debug窗口***********************************
/* private function onOpenDebugwindow1():void
{
DebugW1 = new DebugWindow();
DebugW1.title = "debugpanel1";
DebugW1.resizable = false;
DebugW1.advOpen(this);
DebugW1.nativeWindow.x = 400;
DebugW1.nativeWindow.y = 40;
} */
/* private function onOpenDebugwindow2():void
{
DebugW2 = new DebugWindow();
DebugW2.title = "debugpanel2";
DebugW2.resizable = false;
DebugW2.advOpen(this);
DebugW2.nativeWindow.x = 400;
DebugW2.nativeWindow.y = 400;
} */
//**************************客户端事件监听区**************************
//发送窗口的IQ信息
private function MessageSendIQ(e:MessageWindowIQSendEvent):void
{
var iq:IQ = e.IQData;
_connection.send(iq);
}
//发送message处理
private function MessageSend(e:SendMessageEvent):void
{
var msg:Message = e.data as Message;
_connection.send(msg);
}
//新建聊天窗口
private function newMessageWindow(e:OpenMessageWindowEvent):void
{
var hasWindow:Boolean = false
//trace("e.Item.jid"+e.Item.jid.toString());
for(var i:Number=0;i
if((MessageWindowsList[i] as MessageWindow).RItem.jid.toString() == e.Item.jid.toString())
{
hasWindow = true;
}
}
if(!hasWindow)
{
var MW:MessageWindow = new MessageWindow();
MW.RItem=new RosterItemVO(e.Item.jid);
MW.RItem.displayName=e.displayname;
MW.userName=e.displayname;
MW.position=e.position;
messageWindowsID++;
MW.WindowID = messageWindowsID;
MW.WhoAmi = whoami;
MW.advOpen(this);
MW.nativeWindow.x = 600;
MW.nativeWindow.y = 200;
MessageWindowsList.push(MW);
MW.nativeWindow.activate();
MW.nativeWindow.orderToFront();
MW.nativeWindow.alwaysInFront = false;
}
}
//关闭聊天窗口时清空列表
private function onMessageWindowClose(e:MessageWindowCloseEvent):void
{
for(var i:Number=0;i
if((MessageWindowsList[i] as MessageWindow).WindowID == e.WindowID)
{
MessageWindowsList.splice(i,1);
}
}
}
//**************************功能函数区×××××××××××××××××××××××××××
private function MainWindowClose():void
{
var windows:Array = NativeApplication.nativeApplication.openedWindows;
for(var i:Number = 0; i < windows.length; i++)
{
windows[i].close();
}
}
//初始化联系人名录
private function initRoster():void
{
loadTime.stop();
mainCan.visible = true;
model.userName=loginCan.usernameIPU.text;
model.password=loginCan.passwordIPU.text;
model.userJid=loginCan.usernameIPU.text+"@"+AllUrl.serverIPU;
whoami = new UnescapedJID(model.userJid);
getUserDisplayName(model.manXml,new RosterItemVO(whoami)).displayName;
}
//发送聊天消息到聊天窗口
private function SendMessage2MessageWindow(m:Message):void
{
var hasWindow:Boolean = false;
var from:String=m.from.toString().split("/")[0];
for(var i:Number=0;i
//trace("m.from.toString()"+from);
if((MessageWindowsList[i] as MessageWindow).RItem.jid.toString()==m.from.toString())
{
(MessageWindowsList[i] as MessageWindow).MessageReceived(m);
hasWindow = true;
}
}
if(!hasWindow)
{
var MW:MessageWindow = new MessageWindow();
//这里应该请求用户信息新建用户人信息,暂时临时运用下
MW.RItem = new RosterItemVO(m.from.unescaped);
getManDisplayName(model.manXml,MW.RItem);
//trace(");
messageWindowsID++;
MW.WindowID = messageWindowsID;
MW.WhoAmi = whoami;
MW.userName=MW.RItem.displayName;
MW.position=MW.RItem.position;
MW.visible=false;
MW.advOpen(this);
MW.nativeWindow.x = 600;
MW.nativeWindow.y = 200;
MessageWindowsList.push(MW);
MW.MessageReceived(m);
MW.nativeWindow.activate();
MW.nativeWindow.orderToFront();
MW.nativeWindow.alwaysInFront = true;
MW.nativeWindow.alwaysInFront = false;
//MW.visible=false;
//timeShowIcon();
// timeIcon();
}
}
private function manNameCom(e:Event):void
{
isManName=true;
if(manNameCom==true&&manXmlCom==true)
loadingView.visible=false;
}
private function manXmlCom(e:Event):void
{
isManXml=true;
if(manNameCom==true&&manXmlCom==true)
loadingView.visible=false;
}
//得到用户的displayName
public function getUserDisplayName(dataXml:XML,manItemVo:RosterItemVO):RosterItemVO
{
//var newManItemVo:RosterItemVO;
if(dataXml!=null)
{
for(var i:int=0;i
var itemObj:Object = new Object();
itemObj.displayName = dataXml.child(i).@displayName.toString();
itemObj.jid = dataXml.child(i).@jid.toString();
itemObj.mobile = dataXml.child(i).@mobile.toString();
if(itemObj.jid!="")
model.arrUserData.addItem(itemObj);
//itemIndex=itemIndex+1;
if(dataXml.child(i).@jid==manItemVo.jid.toString().split("/")[0])
{
model.manName=manItemVo.displayName=dataXml.child(i).@displayName;
model.manPosition="("+dataXml.child(i).parent().@displayName+")";
model.userSex=dataXml.child(i).@sex;
if(dataXml.child(i).@sex=="w")
model.userIconUrl="assets/RosterItem/avatar/Default_avatar_Big_Red.png";
else
model.userIconUrl="assets/RosterItem/avatar/Default_avatar_Big_Blue.png";
//break;
}else
{
getUserDisplayName(dataXml.children()[i],manItemVo);
}
}
}
return manItemVo;
}
//得到其它用户的displayName
public function getManDisplayName(dataXml:XML,manItemVo:RosterItemVO):RosterItemVO
{
//manArr=new ArrayCollection(model.arrUserData);
for(var i:int=0;i
//trace("jid"+dataXml.child(i).@jid);
//trace("jjid"+manItemVo.jid.toString());
if(dataXml.child(i).@jid==manItemVo.jid.toString()