📄 jicq.java
字号:
for(;e.hasMoreElements();)
{
icqid=(IcqID)friend.get((String)e.nextElement());
icqid.canShow=cell;
int i=icqid.index;
if(i>=0&&i<cell)
{
icqid.left=10;
icqid.top=area[0][3]+iconSize*i+offset;
icqid.right=dm.width-11;
icqid.bottom=area[0][3]+iconSize*i+iconSize+offset;
}
icqid.draw(this);
}
int x1,y1,x2,y2;
x1=area[4][0];y1=area[4][1];x2=area[4][2];y2=area[4][3];
c=g.getColor();
g.setColor(Color.gray);
g.drawRect(x1,y1,x2-x1,y2-y1);
g.setColor(c);
//pastarea=1;currentarea=0;mouseMoved(area[1][0]+1,area[5][1]+1);
}catch(Exception e){System.out.println(" MainFrame paint() error:"+e);}
}
void buildPopupMenu(){
pm=new PopupMenu();
MenuItem[] mi=new MenuItem[mis.length];
for(menuItemIndex=0;menuItemIndex<mis.length;menuItemIndex++){
mi[menuItemIndex]=new MenuItem(mis[menuItemIndex]);
mi[menuItemIndex].addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e){processMenu(e.getActionCommand());}});
pm.add(mi[menuItemIndex]);
}
add(pm);
modifyPM=new PopupMenu();
MenuItem[] mi1=new MenuItem[2];
mi1[0]=new MenuItem(modifymis[0]);
mi1[0].addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e){processMenu(modifymis[0]);}});
mi1[1]=new MenuItem(modifymis[1]);
mi1[1].addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e){processMenu(modifymis[1]);}});
modifyPM.add(mi1[0]);modifyPM.add(mi1[1]);
add(modifyPM);
}
void processMenu(String txt){
try{
//System.out.println(" mis.length="+mis.length);
if (txt.equals(mis[0]))sendTo();
if (txt.equals(mis[1]))delFriend();
if (txt.equals(mis[2])){
IcqID icqid;
if(currenticqid.getNick().equals(currenticqid.icqNo)){icqid=getID(currenticqid);repaint();setFriend(icqid.icqNo,icqid);}
else icqid=currenticqid;
new SubmitID(icqid,icqid.getNick(),false,false);
}
if (txt.equals(mis[3])){
IcqID icqid=getID(currenticqid);
if(icqid!=null){setFriend(icqid.icqNo,icqid);repaint();}
else repaintEvt=true;
}
if (txt.equals(mis[5])){sysinfo.bigIcon=true;reSort();repaint();}
if (txt.equals(mis[6])){sysinfo.bigIcon=false;reSort();repaint();}
if (txt.equals(mis[7])){if(!seek.isShowing())seek.setVisible(true);else seek.toFront();}
if (txt.equals(modifymis[0])){IcqID i=getID(myIcqID);if(submitid==null||!submitid.isValid())submitid=new SubmitID(myIcqID,"修改个人资料",true,true);else submitid.toFront();}
if (txt.equals(modifymis[1])){if(!sysinfo.isShowing())sysinfo.setVisible(true);else sysinfo.toFront();}
}catch(Exception e){}
}
void checkID()
{
boolean exitfor=false;
IcqID icqid=null;
Enumeration en=friend.keys();
NEWMSG=false;
for(;en.hasMoreElements()&&!exitfor;){
String no=(String)en.nextElement();
icqid=(IcqID)friend.get(no);
if(icqid!=null){
if(icqid.newMsg)NEWMSG=true; //if have new Msg then let NEWMSG=true;
if(!icqid.checked){
icqid=getID(icqid);
if(icqid!=null){
icqid.setStranger(myIcqID.icqNo);
setFriend(no,icqid);
if(!icqid.isOnline||icqid.index<0||icqid.index>icqid.canShow)repaintEvt=false;
}
exitfor=true;
} //end if,NoChecked
} //end if ,null
} //end for
if(NEWMSG||message.size()>0)changeImg();else {if(!icqShowing)setIconImage(jICQ.icqImage);icqShowing=true;}
}
void changeImg()
{
int blink=400;
long thisTime=new Date().getTime();
Image img=null;
if(lastShowTime+blink<thisTime&&icqShowing)
{img=jICQ.mailImage;icqShowing=false;lastShowTime=thisTime;setIconImage(img);}
if(lastShowTime+blink<thisTime&&!icqShowing)
{img=jICQ.icqImage;icqShowing=true;lastShowTime=thisTime;setIconImage(img);}
}
void close()
{
try{
jICQ.exitSystem=true;
System.out.println(" end jICQ.");
setVisible(false);
String cmd="LOGOUT icqNo:"+myIcqID.icqNo;
Sender s=onlineMon=new Sender(cmd);
s.start();
Result r=s.getReturn();
jICQ.logonOK=false;
sysinfo.write();
//udpRSocket.close();
dispose();
}catch(Exception e){System.out.println(" MainFrame.close() error:"+e);}
System.exit(0);
}
void exitMsg(String s)
{
diaFrame=new Dialog(new Frame(),"jICQ:严重错误:",true);
diaFrame.setResizable(false);
diaFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){diaFrame.dispose();close();}});
diaFrame.setLayout(new FlowLayout(FlowLayout.CENTER));
diaFrame.setBounds(200,150,300,200);
TextArea ta=new TextArea(s,8,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
ta.setEditable(false);
diaFrame.add(ta);
diaFrame.setBackground(new Color(13947080)) ;
Button b=new Button("确定");
b.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();close();}});
diaFrame.add(b);
diaFrame.pack();
diaFrame.setVisible(true);
}
void noteMsg(String s)
{
if(diaFrame!=null)if(diaFrame.isValid())diaFrame.dispose();
diaFrame=new Dialog(new Frame(),"jICQ信息:",true);
diaFrame.setResizable(false);
diaFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){diaFrame.dispose();}});
diaFrame.setLayout(new FlowLayout(FlowLayout.CENTER));
diaFrame.setBounds(200,150,200,150);
TextArea ta=new TextArea(s,6,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
ta.setEditable(false);
diaFrame.add(ta);
diaFrame.setBackground(new Color(13947080)) ;
Button b=new Button("确定");
b.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();}});
diaFrame.add(b);
diaFrame.pack();
diaFrame.setVisible(true);
}
void joinedFrame(String s)
{
if(diaFrame!=null)if(diaFrame.isValid())diaFrame.dispose();
joinedIcqNo=s.substring(s.indexOf("icqNo:")+6);
joinedIcqNo=joinedIcqNo.substring(0,joinedIcqNo.indexOf(' '));
diaFrame=new Dialog(new Frame(),"jICQ消息",true);
diaFrame.setResizable(false);
diaFrame.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){diaFrame.dispose();}});
diaFrame.setLayout(new FlowLayout(FlowLayout.CENTER));
diaFrame.setBounds(200,150,200,150);
TextArea ta=new TextArea(s,6,30,TextArea.SCROLLBARS_VERTICAL_ONLY);
ta.setEditable(false);
diaFrame.add(ta);
diaFrame.setBackground(new Color(13947080)) ;
String bADDs="同意",bDISs="拒绝";
Button bADD=new Button(bADDs);
bADD.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();joined();}});
Button bDIS=new Button(bDISs);
bDIS.addActionListener(new java.awt.event.ActionListener(){public void actionPerformed(ActionEvent e) {diaFrame.dispose();}});
diaFrame.add(bADD);
diaFrame.add(bDIS);
diaFrame.pack();
diaFrame.setVisible(true);
}
void joined()
{
Sender s=new Sender("JOINED icqNo:"+myIcqID.icqNo+" join:"+joinedIcqNo);
s.start();
Result r=s.getReturn();
if(r.getCode()!=200)noteMsg(r.getMsg());
else{IcqID icqid=new IcqID();icqid.icqNo=joinedIcqNo;setFriend(icqid.icqNo,icqid);repaintEvt=true;}
}
public static void setFriend(String key,Object value){
friend.put(key,value);repaintEvt=true;
}
public static IcqID getFriend(String key){
return (IcqID)friend.get(key);
}
public static void setMessage(String obj) //add system message
{
if(obj.indexOf(' ')==-1)obj+=" ";
if(obj.substring(0,obj.indexOf(' ')).equals("DUPLOGON"))duplogon=true;
else message.insertElementAt(obj,0);
repaintEvt=true;
jICQ.audioPlay(2);
}
void reSort()
{
Enumeration e=friend.keys();
IcqID icqid;
int startIndex=0;
for(;e.hasMoreElements();)
{
String icqNo=(String)e.nextElement();
icqid=(IcqID)friend.get(icqNo);
if(icqid.isOnline){icqid.index=startIndex++;friend.put(icqNo,icqid);}
}
e=friend.keys();
for(;e.hasMoreElements();)
{
String icqNo=(String)e.nextElement();
icqid=(IcqID)friend.get(icqNo);
if(!icqid.isOnline){icqid.index=startIndex++;friend.put(icqNo,icqid);}
//System.out.println(" icqNo="+icqid.icqNo+" ,index"+icqid.index);
}
}
void toHash(String s)
{
String no;
System.out.println(" toHash() Received:"+s);
if (s.equals(""))return;
try{
s=s.trim();
if(s.equals(","))return;
s=s.substring(1,s.length());
while(s.indexOf(',')!=-1){
IcqID icqid=new IcqID();
no=s.substring(0,s.indexOf(','));
s=s.substring(s.indexOf(',')+1);
icqid.icqNo=no;
setFriend(no,icqid);
//System.out.println(" No="+no);
}
}catch(Exception e){System.out.println(" error in toHash():"+e);}
}
static IcqID getID(IcqID in)
{
in.checked=true;
//System.out.println(" getID() ");
IcqID icqid=null;
if(in==null)return null;
else icqid=in;
if(in.icqNo==null)return null;
Sender sender=new Sender("GETID icqNo:"+icqid.icqNo);
sender.start();
Result r=sender.getReturn(5);
if (r.getCode()!=200){return null;}
String icqids=r.getMsg();
String inline=null;
String nick=null,sex=null,picNo="1",info=null,tel=null,addr=null,age="20",check="否";
String http=null,mobile=null,email=null,pass=null,ip=null,statu=null,integral=null;
try{
do{
inline=icqids.substring(0,icqids.indexOf("\n"));
icqids=icqids.substring(icqids.indexOf("\n")+1);
//System.out.println(" getID() received="+inline);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("nick"))nick=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("sex"))sex=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("picNo"))picNo=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("info"))info=inline.substring(inline.indexOf(' ')+1);
info=replace(info,"\r","\n");
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("tel"))tel=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("addr"))addr=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("http"))http=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("mobile"))mobile=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("email"))email=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("pass"))pass=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("check"))check=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("age"))age=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("ip"))ip=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("statu"))statu=inline.substring(inline.indexOf(' ')+1);
if(inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("integral"))integral=inline.substring(inline.indexOf(' ')+1);
}while(!inline.substring(0,inline.indexOf(' ')).equalsIgnoreCase("end"));
}catch(Exception e){System.out.println(" MainFrame getID() string error:"+e);}
icqid.nick=nick;
//icqid.pass=pass;
icqid.info=info;
icqid.sex=sex;
icqid.tel=tel;
icqid.mobile=mobile;
icqid.http=http;
icqid.email=email;
icqid.addr=addr;
icqid.age=age;
icqid.picNo=picNo;
icqid.check=check;
icqid.integral=integral;
if(statu.equals("1")){
icqid.isOnline=true;
try{
String rport;
rport=ip.substring(ip.lastIndexOf(":")+1);
ip=ip.substring(0,ip.indexOf(":"));
icqid.ip=ip;icqid.rport=rport;
}catch(Exception e){}
}
return icqid;
}
static String replace(String s1,String s2,String s3)
{
if(s1==null||s2==null||s3==null)return s1;
try{while(-1!=s1.indexOf(s2)){s1=s1.substring(0,s1.indexOf(s2))+s3+s1.substring(s1.indexOf(s2)+s2.length());}}catch(Exception e){System.out.println(" replace() error:"+s1);}
return s1;
}
void toID(String s)
{
//System.out.println(" toID() Received:\n"+s+"**");
if(s.equals(""))return;
s+=" ";
IcqID icqid;
String no,ip;
try{
while(s.indexOf("\n")!=-1){
no=s.substring(0,s.indexOf(' '));
s=s.substring(s.indexOf(' ')+1);
ip=s.substring(0,s.indexOf("\n"));
s=s.substring(s.indexOf("\n")+1);
icqid=(IcqID)friend.get(no);
if(icqid!=null){
icqid.isOnline=true;
icqid.ip=ip.substring(0,ip.indexOf(':'));
icqid.rport=ip.substring(ip.lastIndexOf(':')+1);
setFriend(no,icqid);
}
}
}catch(Exception e){System.out.println(" error in getOnline():"+e);}
}
void delFriend()
{
if(currenticqid==null)return;
if(currenticqid.isStranger){friend.remove(currenticqid.icqNo);repaintEvt=true;return;}
Sender s=new Sender("DELFRIEND icqNo:"+myIcqID.icqNo+" del:"+currenticqid.icqNo);
s.start();
Result r=s.getReturn();
if(r.getCode()==200){
currenticqid.stopRun=true;
friend.remove(currenticqid.icqNo);
repaintEvt=true;
noteMsg("删除"+currenticqid.getNick()+"成功。");
}
else noteMsg("删除"+currenticqid.getNick()+"失败:"+r.getMsg());
}
void sendTo()
{
if(currenticqid!=null){
if(currenticqid.smsg==null||!currenticqid.smsg.isValid()){
currenticqid.smsg=new SMsg(currenticqid,myIcqID);
currenticqid.clearNew();
//repaint();
}else{
currenticqid.smsg.toFront();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -