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

📄 msnmidlet.java

📁 J2me实现的MSN Messeger客户端程序。聊天、添加好友、删除好友、阻止好友
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
  * @param obj Object
  * @param value int
  * @param ValueName String
  */
 private void handleMenuMsg(Object obj, int value, String ValueName){
   System.out.println("MsnL...handleMenuMsg: value == " + value + "unreadmsg:" + msgUnreadVec.size());
   if (value == -1){
     setStatus(STATUS_MENU_MSN);
     return;
   }

   try{
     System.out.println("handleMenuMsg");
     this.showTextBoard( "消息", readMsg(value),
                        "保存", "确定", STATUS_SAVE_MSG, STATUS_MENU_MSG );
//     String s = ((Msg)msgUnreadVec.elementAt(value)).toString();
//     System.out.println(s);
//     this.showTextBoard( "消息", s,
//                        "确定", "取消", STATUS_MENU_MSG, STATUS_MENU_MSG );
//     msgUnreadVec.removeElementAt(value);
//     this.menuUnreadMsg.removeItemAt(value);
//     if (msgUnreadVec.size() == 0)
//       canvas.showMsg(false);
   }catch(Exception e){
     System.out.println("handleMenuMsg error" + e.toString());
   }
  }

  /**
  * 处理操作菜单的消息
  * @param obj Object
  * @param evt int
  * @param value int
  * @param ValueName String
  */
 private void handleMenuOperation(Object obj, int value, String ValueName){
   if (value == -1){
     setStatus(STATUS_MENU_FRIEND);
       return;
   }
   switch(value){
     case 0://送信息
       setStatus(STATUS_FORM_INPUT);
       break;
     case 1://查看信息
       String s = ((MsnFriend)buddyOnline.elementAt(selOnlineFriend)).getLoginName();
       if (hashBuddyMsgCount.get(s)
           != null){
         for (int i = 0; i < msgUnreadVec.size(); i++){
           String s2 = ((Msg)msgUnreadVec.elementAt(i)).getName();
           if (s2.equals((s))){
             this.showTextBoard( "消息", readMsg(i),
                        "确定", "取消", STATUS_SAVE_MSG, STATUS_MENU_OPERATION );
             break;
           }
         }
       }
       break;
    case 2: //删除联系人
      try{
          flashStr = "删除好友,请稍侯";
          setStatus(STATUS_FLASH);
          msnMessenger.removeFriend(((MsnFriend)(buddyOnline.elementAt(selOnlineFriend))).getLoginName());

        }catch(Exception e){
          canvas.stopFlash();
          setStatus(STATUS_MENU_OPERATION);
          System.out.println("handleFormCommand  STATUS_FORM_DELBUDDY error:" + e.toString());
        }
//      canvas.stopFlash();
//      setStatus(STATUS_MENU_OPERATION);
      break;
   }
 }

 /**
  * 处理所有好友菜单的菜单项被选中的消息
  * @param obj Object
  * @param value int
  * @param ValueName String
  */
 private void handleMenuAllFriendList(Object obj, int value, String ValueName){
   if (value == -1){
      setStatus(STATUS_MENU_MSN);
        return;
    }
    final int v = value;

    Timer timer = new Timer();
      TimerTask task = new TimerTask() {
        public void run() {
          try {
            String s = msnMessenger.getForwardList().get(v).getLoginName();
            msnMessenger.removeFriend(s);
          }
          catch (Exception e) {
            System.out.println("MsnL.....handleMenuAllFriendList error:" + e.toString());
          }
        } //~end run()
      }; //~end TimerTask()
      timer.schedule(task, 0);
      setStatus(this.STATUS_MENU_MSN);


}

  /**
   * 处理历史消息菜单的消息
   * @param obj Object
   * @param value int
   * @param ValueName String
   */
  private void handleMenuOldMsg(Object obj, int value, String ValueName){
    if (value == -1){
      setStatus(STATUS_MENU_MSN);
        return;
    }
    try{
      db.open();
      this.showTextBoard("历史消息", db.getMsg(value), "删除", "确定",
                         STATUS_DEL_MSG,STATUS_MENU_OLDMSG);
    }catch(Exception e){
      System.out.println("MsnL...handleMenuOldMsg error:"+e.toString());
    }


  }

 /**
  * 处理文本板关闭事件
  * @param obj Object
  * @param value int
  * @param ValueName String
  */
 private void handleTextBoardEvt(Object obj, int value, String ValueName){
   setStatus(this.rightStatus);
 }

 /**
  * 处理按键消息
  * @param code int
  */
 public void handlekeyPressedEvent(int code){
   System.out.println("handlekeyPressedEvent code ==" + code +
                      " MsgCanvas.KEY_NUM5 = "+
                      MsgCanvas.KEY_NUM5);
   if (code == MsgCanvas.KEY_NUM5){
     System.out.println("key 5");
       if (Display.getDisplay(this).getCurrent() == canvas){
         System.out.println("display");
         if ( msgUnreadVec.size() > 0){
           System.out.println("setStatus(STATUS_MENU_MSG);");
           setStatus(STATUS_MENU_MSG);
           return;
         }
       }
   }
   switch(this.status){
     case STATUS_MENU_FRIEND: //在线好友菜单状态
     case STATUS_MENU_GROUP: //显示好友分组状态
     case STATUS_MENU_OPERATION: //操作菜单状态
     case STATUS_MENU_MSG: //消息菜单
     case STATUS_MENU_LOGIN: //登陆菜单状态
     case STATUS_MENU_ALLBUDDY: //删除好友状态
     case STATUS_MENU_OLDMSG:
         System.out.println("canvas's textMenu keyPressed");
         canvas.textMenu.keyPressed(code);

       break;
//     case STATUS_MENU_LOGIN: //登陆菜单状态
//       canvas.loginMenu.keyPressed(code);
//       break;
     case STATUS_MENU_MSN: //msn菜单状态
       canvas.imgMenu.keyPressed(code);
       break;
     case STATUS_TEXTBOARD: //文本板
       if (code == MsgCanvas.KEY_SOFT1){
         setStatus(leftStatus);
       }else if (code == MsgCanvas.KEY_SOFT2){
         setStatus(rightStatus);
       }
       break;
   }

 }

 /**
  * 设置当前的状态
  * @param status byte
  */
 public void setStatus(byte status){
   System.out.println("setStatus:" + status );
   if (this.status == status || status == -1)
     return;
   //oldStatus = this.status;
   this.status = status;
   Displayable display = null;
   switch(status){
     case STATUS_FLASH: //动画状态
       display = canvas;
       canvas.playFlash(flashStr);
       setCommand("", "");
       break;
     case STATUS_FORM_ADDBUDDY: //添加用户
     case STATUS_FORM_DELBUDDY: //删除好友
       display = form;
       form.changeFormType(MsgForm.T_ASKNAME);
       setCommand("确定", "取消");
       break;
     case STATUS_FORM_INPUT://信息输入状态
       display = textbox;
       textbox.setString(textboxStr);
       this.setCommand("确定", "取消");
       //this.leftCmdStr = "确定";
       //this.rightCmdStr = "取消";
       break;
     case STATUS_FORM_LOGIN: //默认用户设置状态
       display = form;
       form.changeFormType(MsgForm.T_LOGIN);
       setCommand("确定", "取消");
       break;
     case STATUS_FORM_TEXT: //文字Form状态,目前还没有使用
       break;
     case STATUS_MENU_FRIEND: //显示改组在线好友菜单状态
       display = canvas;
       canvas.resetTextMenu(menuFriendList);
       canvas.setStatus(canvas.STATUS_TEXT_MENU);
       setCommand("确定" ,"取消");
       break;
     case STATUS_MENU_GROUP: //显示好友分组状态
       display = canvas;
       canvas.setStatus(canvas.STATUS_TEXT_MENU);
       setCommand("确定" ,"取消");
       break;
     case STATUS_MENU_LOGIN: //登陆菜单状态
       display = canvas;
       canvas.resetTextMenu(menuMain);
       canvas.setStatus(canvas.STATUS_TEXT_MENU);
       setCommand("确定" ,"取消");
       break;
     case STATUS_MENU_MSN: //msn菜单状态
       display = canvas;
       canvas.setStatus(canvas.STATUS_IMG_MENU);
       setCommand("确定" ,"");
       break;
     case STATUS_TEXTBOARD: //文本板状态
       display = canvas;
       canvas.showTextBoard(textboardContent, textboardTitle);
       break;
     case STATUS_MENU_MSG: //消息菜单
       canvas.resetTextMenu(menuUnreadMsg);
       canvas.setStatus(canvas.STATUS_TEXT_MENU);
       setCommand("确定", "取消");
       break;
     case STATUS_MENU_OPERATION: //操作菜单
       System.out.println("STATUS_MENU_OPERATION");
       display = canvas;
       canvas.resetTextMenu(menuOperation);
       canvas.setStatus(canvas.STATUS_TEXT_MENU);
       setCommand("确定", "取消");
       break;
     case STATUS_MENU_ALLBUDDY: //删除好友
       canvas.resetTextMenu(menuAllFriendList);
       canvas.setStatus(canvas.STATUS_TEXT_MENU);
       setCommand("删除", "取消");
       break;
     case STATUS_SAVE_MSG: //保存消息这个状态没有界面
       saveMsg();
       break;
     case STATUS_DEL_MSG: //删除这个消息
       delMsg();
       break;
    case STATUS_MENU_OLDMSG://历史信息状态
       display = canvas;
       //loadOldMsg();
       canvas.resetTextMenu(menuOldMsg);
       canvas.setStatus(canvas.STATUS_TEXT_MENU);
       setCommand("确定", "取消");
       break;
   }
   if (display != null && display != Display.getDisplay(this).getCurrent()){
     Display.getDisplay(this).setCurrent(display);
   }

 }

 /**
  * 显示文本板
  * @param title String 标题
  * @param content String 内容
  * @param leftCmd String 左边显示的command
  * @param rightCmd String 右边显示的 command
  * @param leftStatus byte 左边command被按下时转换的状态
  * @param rightStatus byte 右边command被按下时转换的状态
  */
 private void showTextBoard(String title, String content,
                            String leftCmd,String rightCmd,
                            byte leftStatus, byte rightStatus){
   //canvas.showTextBoard(title, content);
   textboardTitle = title;
   textboardContent = content;
   leftCmdStr = leftCmd;
   rightCmdStr = rightCmd;
   canvas.setCommand(leftCmd, rightCmd);
   this.leftStatus = leftStatus;
   this.rightStatus = rightStatus;
   setStatus(STATUS_TEXTBOARD);
 }

 /**
   * 登陆msn
   */
  private void loginMsn(){
    System.out.println(" loginMsn");
    loginError = 0;
    if (username != null && password != null
        && !username.equals("") && !password.equals("")){
      System.out.println("Login username = " + username + " password = " + password);
      if (msnMessenger == null){
        msnMessenger = new MSNMessenger(username, password);
        msnMessenger.addMsnListener(this);
        msnMessenger.login();
        canvas.playFlash("/res/splash.png", null, "正在登陆,请稍后");

            System.out.println(" loginMsn  1");
      }else if (!msnMessenger.isLoggedIn()){
        msnMessenger.login();
        canvas.playFlash("/res/splash.png", null, "正在登陆,请稍后");

            System.out.println(" loginMsn   2");
      }else{
        return ;
      }
    }else{
      showTextBoard("请先设置默认用户,才能登陆MSN!", "错误", "确定", "",
                    this.STATUS_MENU_LOGIN, status);
    }
  }

  /**
   * 设置并记录command
   * @param leftCmd String
   * @param rightCmd String
   */
  private void setCommand(String leftCmd, String rightCmd){
    leftCmdStr = leftCmd;
    rightCmdStr = rightCmd;
    switch(status){
      case STATUS_MENU_FRIEND: //显示改组在线好友菜单状态
      case STATUS_MENU_GROUP: //显示好友分组状态
      case STATUS_MENU_LOGIN: //登陆菜单状态
      case STATUS_MENU_MSN: //msn菜单状态
      case STATUS_MENU_MSG: //消息菜单
      case STATUS_MENU_ALLBUDDY: //显示所所有好友
      case STATUS_MENU_OLDMSG: //显示历史消息
      case STATUS_MENU_OPERATION: //显示操作
      case STATUS_FLASH: //flash 状态
      case STATUS_SPLASH:
      case STATUS_TEXTBOARD:
        canvas.setCommand(leftCmd, rightCmd);
        break;
      case STATUS_FORM_ADDBUDDY: //添加用户
      case STATUS_FORM_DELBUDDY: //删除用户
      case STATUS_FORM_LOGIN: //默认用户设置状态
      case STATUS_FORM_TEXT: //文字Form状态,目前还没有使用
        form.setCommand(leftCmd, rightCmd);
       break;
      case STATUS_FORM_INPUT://信息输入状态,这块需要考虑是否要用
       break;


    }
  }

  /**
   * 刷新freshMenuAllFriendList菜单
   */
  private void freshMenuAllFriendList(){
    menuAllFriendList.removeAllItem();
    BuddyList list = msnMessenger.getBuddyGroup().getForwardList();
    Font font = menuAllFriendList.getFont();
    for (int i = 0; i < list.size(); i++){
      menuAllFriendList.addItem(Util.getShowString(font, list.get(i).getLoginName(),
                                                   MENU_STRING_MAX_WIDTH, "..."));
    }
  }

  /**
   * 保存消息
   */
  private void saveMsg(){
    try{
          db.open();
          if (db.getMsgCount() >= MSG_MAX_COUNT ){//如果现有记录已经达到极限
            db.removeMsg(0);//删除最老的记录
            menuOldMsg.removeItemAt(0);
          }
          db.addMsg(canvas.getTextBoardText());
          Font font = menuOldMsg.getFont();
          menuOldMsg.addItem(Util.getShowString(font, canvas.getTextBoardText(),
                                              MENU_STRING_MAX_WIDTH, "..."));

          db.close();
          this.showTextBoard("提示","记录已保存", "确定", "",
                             STATUS_MENU_MSG, STATUS_MENU_MSG);
        }catch(Exception e){
            System.out.println(e.toString());
            this.showTextBoard("提示","记录保存失败", "确定", "",
                             STATUS_MENU_MSG, STATUS_MENU_MSG);
        }

  }

  /**
   * 从数据库中删除消息
   */
  private void delMsg(){
    try{
      db.open();
      int n = menuOldMsg.getFocusIndex();
      db.removeMsg(n);
      db.close();
      menuOldMsg.removeItemAt(menuOldMsg.getFocusIndex());
      this.showTextBoard("提示", "消息成功删除", "确定", "", STATUS_MENU_OLDMSG, STATUS_MENU_OLDMSG);
    }catch(Exception e){
      this.showTextBoard("提示", "消息删除失败", "确定", "", STATUS_MENU_OLDMSG, STATUS_MENU_OLDMSG);
    }
  }

  /**
   * 从数据库中获得保存的历史信息
   */
  private void loadOldMsg(){
    try{
      menuOldMsg.removeAllItem();
      db.open();
      int n = db.getMsgCount();
      Font font = menuOldMsg.getFont();
      for (int i = 0; i < db.getMsgCount(); i++){
        try{
          String s = db.getMsg(i);
          s = Util.getField(s, 2, "$");
          menuOldMsg.addItem(Util.getShowString(font, s, MENU_STRING_MAX_WIDTH,
                                                "..."));
        }catch(Exception e){System.out.println("MsnL...loadOldMsg error:" + e.toString());}
      }
      db.close();
    }catch(Exception e){
      System.out.println("MsnL...loadOldMsg error:" + e.toString());
      db.close();
    }
  }

//  /**
//   * 显示在线联系人列表
//   */
//  private void showOnlineBuddy(){
//    canvas.playFlash("请稍候");
//    canvas.stopFlash();
//  }


}

⌨️ 快捷键说明

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