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