📄 msnmidlet.java
字号:
* @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 + -