⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msnmidlet.java

📁 J2me实现的MSN Messeger客户端程序。聊天、添加好友、删除好友、阻止好友
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    return myMsg;
  }
  /**
    * 有人添加我为好友
    * @param friend MsnFriend 对方信息
    */
   public void whoAddedMe(MsnFriend friend){
     System.out.println("MsnL.....whoAddedMe:" + friend.getLoginName());
     Msg msg = new Msg("把您添加为好友",
                      Util.getCurTime(),
                      friend.getLoginName());
    msgUnreadVec.addElement(msg);
    notifyCanvasNewMessage();

   }

   /**
    * 有人将我从好友中删除
    * @param friend MsnFriend
    */
   public void whoRemovedMe(MsnFriend friend){
     System.out.println("MsnL.....whoRemovedMe:" + friend.getLoginName());
     Msg msg = new Msg("把您从好友名单中删除",
                      Util.getCurTime(),
                      friend.getLoginName());
     msgUnreadVec.addElement(msg);
     notifyCanvasNewMessage();

   }

   /**
    * buddylist被改动,发出的事件
    */
   public void buddyListModified(){
//     canvas.stopFlash();
//     setStatus(STATUS_MENU_MSN);
//     System.out.println("MsnL.....buddyListModified:");
     freshBuddyOnLineVec();
     freshMenuAllFriendList();
   }

   /**
    * 添加好友失败
    * @param errorCode int
    */
   public void addFailed(int errorCode){
     System.out.println("MsnL.....addFailed:" + errorCode);
   }

   /**
    * 昵称 被改变它是被派出的事件。
    * @param friend MsnFriend
    */
   public void renameNotify(MsnFriend friend){
     System.out.println("MsnL.....renameNotify:" + friend.getLoginName());
   }

   /**
    * 所有列表更新完成
    */
   public void allListUpdated(){
     System.out.println("MsnL.....allListUpdated");
   }

   /**
   *  注销
   */
  public void logoutNotify(){
    System.out.println("MsnL.....Logout!!!!");
    canvas.stopFlash();
    if (DEBUG){
      this.setStatus(STATUS_MENU_MSN);
    }else{
      this.setStatus(STATUS_MENU_LOGIN);
    }

  }

  /**
   * 未读邮件通知
   * @param prop Hashtable
   * @param unread int
   */
  public void notifyUnreadMail(Hashtable prop, int unread){

  }


  /**
   * 网络连接中断
   * @param code short 错误代码
   * @param isNotificationServer boolean 是否为与Notification Server出错
   */

  public void connectError(short errCode, boolean isNotificationServer){
    System.out.println("MsnL.....connectError: errorCode :" + errCode
                       + "isNotificationServer" + isNotificationServer);
    canvas.stopFlash();
    if (DEBUG){
     setStatus(this.STATUS_MENU_MSN);
    }
    else{
      this.showTextBoard("登陆MSN失败!$请确认用户名及密码后再试", "错误", "确定", "",
                         this.STATUS_MENU_LOGIN, status);
    }

//    if (loginError++ < 3){//重新尝试登陆
//      msnMessenger.login();
//    }else{
//      canvas.stopFlash();
//      this.showTextBoard("登陆MSN失败!$请确认用户名及密码后再试", "错误", "确定", "",
//                         this.STATUS_MENU_LOGIN, this.status);
//    }

  }





  /**
   * 处理command事件
   * @param c Command
   * @param d Displayable
   */
  public void commandAction(Command c,
                          Displayable d){
  System.out.println("commandAction");
  if (c.getPriority()==1 && c.getCommandType() == Command.ITEM){
    if (c.getLabel().equals(leftCmdStr) && !leftCmdStr.equals("")){//被按下如果是左边的按钮
      if (Display.getDisplay(this).getCurrent() == canvas){
        canvas.keyPressedEvent(MsgCanvas.KEY_SOFT1);
      }else if (Display.getDisplay(this).getCurrent() == form){
        handleFormCommand(true, c);
      }else if (Display.getDisplay(this).getCurrent() == textbox){
        handleTextBoxCommand(true, c);
      }
    }else if (c.getLabel().equals(rightCmdStr) && !rightCmdStr.equals("")){//被按下如果是右边的按钮
      if (Display.getDisplay(this).getCurrent() == canvas){
        canvas.keyPressedEvent(MsgCanvas.KEY_SOFT2);
      }else if (Display.getDisplay(this).getCurrent() == form){
        handleFormCommand(false, c);
      }else if (Display.getDisplay(this).getCurrent() == textbox){
        handleTextBoxCommand(false, c);
      }

    }
  }
 }

 /**
  * 处理Form的Command消息
  * @param bLeftCmd boolean
  * @param c Command
  */
 private void handleFormCommand(boolean bLeft, Command c){
   if (bLeft){//左边的按键
     switch (status) {
       case STATUS_FORM_LOGIN: //用户名密码form
         if (form.saveUsername()){//成功保存用户名
           setStatus(STATUS_MENU_LOGIN);
         }else{
           this.showTextBoard("请把用户名和密码填写完整!", "错误", "确定", "",
                              STATUS_FORM_LOGIN, status);
         }
         break;

      case STATUS_FORM_ADDBUDDY://添加好友
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
          public void run() {
            try {
              String s = form.getItemString(form.ITEM_ASKNAME);
              msnMessenger.addFriend(s);
            }
            catch (Exception e) {
              System.out.println("MsnL.....handleFormCommand STATUS_FORM_INPUT error:" +
                  e.toString());
            }
          } //~end run()
        }; //~end TimerTask()
        timer.schedule(task, 0);
        setStatus(STATUS_MENU_MSN);
        break;

      case STATUS_FORM_DELBUDDY://删除好友
        Timer timer1 = new Timer();
        TimerTask task1 = new TimerTask() {
          public void run() {
            try {
              String s = form.getItemString(form.ITEM_ASKNAME);
              msnMessenger.removeFriend(s);
            }
            catch (Exception e) {
              System.out.println("handleFormCommand  STATUS_FORM_DELBUDDY error:" + e.toString());
            }
          } //~end run()
        }; //~end TimerTask()
        timer1.schedule(task1, 0);
        setStatus(this.STATUS_MENU_MSN);
        break;
     }
   }else{ //右边的按键
     switch (status) {
       case STATUS_FORM_LOGIN: //用户名密码form
         setStatus(STATUS_MENU_LOGIN);
         break;
//       case STATUS_FORM_ASKNAME:
//        break;
       case STATUS_FORM_ADDBUDDY://添加好友
         setStatus(STATUS_MENU_MSN);
         break;
       case STATUS_FORM_DELBUDDY://删除好友
         setStatus(STATUS_MENU_MSN);
         break;
     }

   }
 }

 /**
  * 处理文字输入板的信息
  * @param bLeft boolean
  * @param c Command
  */
 private void handleTextBoxCommand(boolean bLeft, Command c){
   if (bLeft){//处理左边的command
     System.out.println("Handle Input Form command");
//       flashStr = "传送信息,请稍侯";
//       setStatus(STATUS_FLASH);


      //////////////////// //ceze 测试发送消息////////////////////////////

       String s = textbox.getString();//有问题
       final MimeMessage msg = new MimeMessage(s);
       System.out.println("MsnL....handleTextBoxCommand :FormInput = " + s);
      //必须设置msg类型
      msg.setKind(MimeMessage.KIND_MESSAGE);
      final String friendLN = ((MsnFriend)buddyOnline.elementAt(selOnlineFriend)).getLoginName();
     //使用定时器
     Timer timer = new Timer();

     TimerTask task = new TimerTask(){
       public void run() {
         try {
           msnMessenger.sendMessage(friendLN, msg);
         }
         catch (Exception e) {
//           canvas.stopFlash();
//           showTextBoard("提示", "发送消息失败",
//                              "确定", "",
//                              STATUS_FORM_INPUT, status);

          System.out.println(
               "MsnL.....handleFormCommand STATUS_FORM_INPUT error:" +
               e.toString());
         }
       }//~end run()
     };//~end TimerTask()

     //start task
     timer.schedule(task, 0);
//     try {
//           msnMessenger.sendMessage(friendLN, msg);
//         }
//         catch (Exception e) {
//           canvas.stopFlash();
//           showTextBoard("提示", "发送消息失败",
//                              "确定", "",
//                              STATUS_FORM_INPUT, status);
//
//          System.out.println(
//               "MsnL.....handleFormCommand STATUS_FORM_INPUT error:" +
//               e.toString());
//         }
//
//     canvas.stopFlash();
     setStatus(STATUS_MENU_OPERATION);

   }else{//处理右边的command
     setStatus(STATUS_MENU_OPERATION);
   }
 }

 /**
  * 处理MsgCtrl发来的消息
  * @param obj Object
  * @param evt int
  * @param value int
  * @param ValueName String
  */
 public void handleCtrlAction(Object obj, int evt, int value, String ValueName){
   switch(evt){
     case MsgCtrlBase.EVT_SPLASH_CLOSE:
        canvas.destroySplash();
        setStatus(this.STATUS_MENU_LOGIN);
        break;
     case MsgCtrlBase.EVT_MENU_SELECT:
     case MsgCtrlBase.EVT_MENU_CLOSE:
       //处理菜单事件
       handleMenuEvt(obj, value, ValueName);
       break;
     case MsgCtrlBase.EVT_TEXTBOARD_CLOSE:
       handleTextBoardEvt(obj, value, ValueName);
       break;
   }
 }



 /**
  * 处理菜单事件
  * 分给底下的函数,各自处理
  * @param obj Object
  * @param value int
  * @param ValueName String
  */
 private void handleMenuEvt(Object obj, int value, String ValueName){
   System.out.println("handleMenuEvt");
   switch(this.status){
     case STATUS_MENU_FRIEND: //在线好友菜单状态
       handleMenuFriend(obj, value, ValueName);
       break;
     case STATUS_MENU_GROUP: //显示好友分组状态
       handleMenuGroup(obj, value, ValueName);
       break;
     case STATUS_MENU_LOGIN: //登陆菜单状态
       handleMenuLogin(obj, value, ValueName);
       break;
     case STATUS_MENU_MSN: //msn菜单状态
       handleMenuMsn(obj, value, ValueName);
       break;
     case STATUS_MENU_MSG: //未读消息菜单
       handleMenuMsg(obj, value, ValueName);
       break;
    case STATUS_MENU_OPERATION: //操作菜单
       handleMenuOperation(obj, value, ValueName);
       break;
    case STATUS_MENU_ALLBUDDY: //删除联系人
      handleMenuAllFriendList(obj, value, ValueName);
      break;
    case STATUS_MENU_OLDMSG: //历史信息
      handleMenuOldMsg(obj, value, ValueName);
      break;
   }
 }

 //处理好友信息菜单事件
 private void handleMenuFriend(Object obj, int value, String ValueName){
    if (value == -1){
     setStatus(STATUS_MENU_MSN);
     return;
    }
    selOnlineFriend = value;
    //向好友发起对话邀请(每个对话需要一个SS支持) ceze
    final String friendLN = ((MsnFriend)buddyOnline.elementAt(selOnlineFriend)).getLoginName();
    //定时器
    Timer timer = new Timer();
    //定时器任务(匿名类)
    TimerTask task = new TimerTask(){
      public void run(){
        try{
          msnMessenger.doCall(friendLN);//邀请好友
        }
        catch(Exception e){
        }
      }
    };
    //由定时器启动任务
    timer.schedule(task, 0);
    canvas.resetTextMenu(menuOperation);
    setStatus(STATUS_MENU_OPERATION);

 }

 //处理分组信息菜单事件
 private void handleMenuGroup(Object obj, int value, String ValueName){

 }

 //处理登陆菜单事件
 private void handleMenuLogin(Object obj, int value, String ValueName){
   System.out.println("handle loginmenue selected event");
   switch(value){
     case 0: //登陆msn

//        setStatus(this.STATUS_MENU_OPERATION);
         loginMsn();
       break;
     case 1: //设置默认用户
       this.setStatus(this.STATUS_FORM_LOGIN);
       break;
     case 2: //声音开关
       bSoundOn = !bSoundOn;
       if (bSoundOn){
         menuMain.setItem(2, "声音:开");

       }else{
         menuMain.setItem(2, "声音:关");
       }
       canvas.setSoundOn(bSoundOn);
       break;
     case 3: //帮助
        this.showTextBoard("帮助",STR_HELP,  "确定", "",
                           this.STATUS_MENU_LOGIN, this.status);
        break;


     case 4: //关于
       this.showTextBoard("关于", STR_ABOUT, "确定", "",
                          this.STATUS_MENU_LOGIN, this.status);
       break;

     case 5: //退出
       this.quitApp();
       break;
   }
 }

 //处里MSN菜单事件
 private void handleMenuMsn(Object obj, int value, String ValueName){
   switch(value){
     case 0: //添加联系人
       setStatus(this.STATUS_FORM_ADDBUDDY);
       break;
     case 1: //删除联系人
       //this.setStatus(this.STATUS_FORM_DELBUDDY);
       this.setStatus(STATUS_MENU_ALLBUDDY);
       break;
     case 2: //查看在线联系人列表
      // showOnlineBuddy();
       setStatus(STATUS_MENU_FRIEND);
       break;
     case 3: //查看未读信息
       this.setStatus(this.STATUS_MENU_MSG);
       break;
     case 4://查看保存的信息
       setStatus(STATUS_MENU_OLDMSG);
       break;
     case 5: //注销
       if (msnMessenger != null){
         Timer timer = new Timer();
         TimerTask task = new TimerTask() {
           public void run() {
             try {
               msnMessenger.logout();
             }
             catch (Exception e) {
               System.out.println("MsnL.....handleMenuAllFriendList error:" +
                                  e.toString());
             }
           } //~end run()
         }; //~end TimerTask()
         timer.schedule(task, 0);
       }
       setStatus(STATUS_FORM_LOGIN);
       break;
   }

 }

 /**
  * 处理未读消息菜单色消息

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -