Chinaunix首页 | 论坛 | 博客
  • 博客访问: 111174
  • 博文数量: 48
  • 博客积分: 2210
  • 博客等级: 大尉
  • 技术积分: 540
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-16 17:59
文章分类

全部博文(48)

文章存档

2010年(1)

2009年(15)

2008年(32)

我的朋友

分类:

2010-03-18 15:09:18


      xmlns:zycgview="cn.org.zycg.views.*"
      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()

阅读(1327) | 评论(0) | 转发(0) |
0

上一篇:调试flex程序

下一篇:没有了

给主人留下些什么吧!~~