亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lumaqq.java

?? java寫的qq代碼實現qq的部分功能
?? JAVA
字號:
/*
* LumaQQ - Java QQ Client
*
* Copyright (C) 2004 luma <stubma@163.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package edu.tsinghua.lumaqq;

import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.eclipse.jface.dialogs.MessageDialog;

import edu.tsinghua.lumaqq.qq.QQ;
import edu.tsinghua.lumaqq.qq.QQClient;
import edu.tsinghua.lumaqq.qq.beans.QQUser;
import edu.tsinghua.lumaqq.ui.MainShell;
import edu.tsinghua.lumaqq.ui.dialogs.LoginDialog;
import edu.tsinghua.lumaqq.xml.servers.Servers;
import edu.tsinghua.lumaqq.xml.servers.ServersUnmarshaller;


/**
 * LumaQQ的GUI主程序,主要負責構造界面
 *
 * @author 馬若劼
 */
public class LumaQQ {
    /** 國際化資源 */
	public static ResourceBundle resourceBundle;
	/** 安裝目錄 */
	public static String INSTALL_DIR;
	/** 自定義表情目錄 */
	public static String CUSTOM_FACE_DIR;
	/** 接收到的自定義表情目錄 */
	public static String CUSTOM_FACE_RECV_DIR;
	
	// 一些系統需要使用的文件路徑
	/** 服務器列表文件 */
	public static String SERVERS;
	/** 聊天機器人配置文件 */
	public static String ROBOTS;
	/** IP數據庫文件 */
	public static String IP_FILE;
	
	// 用戶文件路徑
	/** 用戶登錄歷史信息文件 */
	public static String LOGIN_HISTORY;
	/** 用戶組信息文件 */
	public static String GROUPS;
	/** 自動回復和快捷回復設置文件 */
	public static String REPLIES;
	/** 代理服務器列表文件 */
	public static String PROXIES;
	/** 系統參數設置文件 */
	public static String SYSTEM_OPTIONS;
	/** 好友備注信息文件 */
	public static String REMARKS;
	/** 手機好友信息文件 */
	public static String MOBILES;
	/** 自定義表情配置文件 */
	public static String CUSTOM_FACES;
	
	// 聲音文件路徑
	/** 普通消息聲音文件 */
	public static String MSG_SOUND;
	/** 系統消息聲音 */
	public static String SYS_MSG_SOUND;
	
	// 登陸服務器數組,需要從xml文件中讀取
    /** UDP服務器的列表 */
    public static String[] udpServers;
    /** TCP服務器列表 */
    public static String[] tcpServers;
    
    /** 缺省組背景顏色 */
    public static final String DEFAULT_GROUP_COLOR = "255,255,255";

	/**
	 * LumaQQ啟動主程序
	 * @param args
	 */
	public static void main(String[] args) {
		// 初始化系統文件路徑
		initSysFilePath(args);
		// 初始化資源文件
		resourceBundle = ResourceBundle.getBundle("locale.LumaQQ", Locale.CHINESE, ClassLoader.getSystemClassLoader());
		MainShell main = new MainShell();
		// 讀取服務器列表文件,如果不成功則退出,服務器數量為0也退出
		if(!readServerFile()) {
		    MessageDialog.openError(main.getShell(), LumaQQ.getString("message.box.common.fail.title"), LumaQQ.getString("message.box.server.file.error"));
			main.close();
			System.exit(1);
		}
		// 服務器列表讀取成功,開始登陸
		LoginDialog login = new LoginDialog(main.getShell());
		if(login.open()) {
			// 創建QQ用戶對象
			QQUser me = new QQUser(login.getQQ(), login.getMd5Password());			
			me.setUdp(false);
			if(login.isLoginHidden()) {
				me.setLoginMode(QQ.QQ_LOGIN_MODE_HIDDEN);
				me.setStatus(QQ.QQ_FRIEND_STATUS_HIDDEN);
			} else {
				me.setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
				me.setStatus(QQ.QQ_FRIEND_STATUS_ONLINE);
			}
			// 創建QQ客戶端對象
			QQClient client = new QQClient();
			client.setRobotConfig(ROBOTS);
			client.setUser(me);
			// 初始化用戶文件路徑
			initUserFilePath(me);
			// 傳遞給主界面
			main.setClient(client);
			// 打開主界面
		    main.open();
		} else
			main.close();
	} 

	/**
	 * 初始化用戶文件路徑,對于每個用戶來說,這些值是變化的。在改變用戶的時候將被調用
	 * 
	 * @param me
	 * 		QQ用戶對象
	 */
	public static void initUserFilePath(QQUser me) {
		GROUPS = INSTALL_DIR + "/" + me.getQQ() + "/groups.xml";
		REPLIES = INSTALL_DIR + "/" + me.getQQ() + "/replies.xml";
		PROXIES = INSTALL_DIR + "/" + me.getQQ() + "/proxies.xml";
		SYSTEM_OPTIONS = INSTALL_DIR + "/" + me.getQQ() + "/sysopts.xml";
		REMARKS = INSTALL_DIR + "/" + me.getQQ() + "/remarks.xml";
		MOBILES = INSTALL_DIR + "/" + me.getQQ() + "/mobiles.xml";		
		CUSTOM_FACE_DIR = INSTALL_DIR + "/" + me.getQQ() + "/custom_face/";
		CUSTOM_FACE_RECV_DIR = INSTALL_DIR + "/" + me.getQQ() + "/custom_face_recv/";
		CUSTOM_FACES = INSTALL_DIR + "/" + me.getQQ() + "/faces.xml";
	}

	/**
	 * 初始化系統文件的路徑,對于每個用戶來說,這些值是不變的,所以這個方法只調用一次
	 * @param args
	 */
	private static void initSysFilePath(String[] args) {
		if(args.length == 0)
			INSTALL_DIR = ".";
		else
			INSTALL_DIR = args[0];
		LOGIN_HISTORY = INSTALL_DIR + "/logins.xml";
		SERVERS = INSTALL_DIR + "/xml/servers.xml";
		ROBOTS = INSTALL_DIR + "/xml/robots.xml";
		IP_FILE = INSTALL_DIR + "/QQWry.dat";
		MSG_SOUND = INSTALL_DIR + "/sound/msg.au";
		SYS_MSG_SOUND = INSTALL_DIR + "/sound/system.wav";
	}

	/**
	 * 讀取服務器列表文件
	 * @return true表示服務器列表文件沒有問題,false表示有問題,程序不會繼續執行下去
	 */
	private static boolean readServerFile() {
		File file = new File(LumaQQ.SERVERS);
		if(file.exists()) {
			Servers servers = null;
			try {
				servers = ServersUnmarshaller.unmarshal(file);
			} catch (IOException e) {
				return false;
			}		
			// 得到UDP服務器列表
			int i = 0;
			List list = servers.getUDPServerList();
			if(list != null && list.size() > 0) {
				udpServers = new String[list.size()];
				Iterator iter = list.iterator();
				while(iter.hasNext()) {
					udpServers[i++] = ((String)iter.next()).trim();
				}				
			} else
				udpServers = new String[0];
			// 得到TCP服務器列表
			i = 0;
			list = servers.getTCPServerList();
			if(list != null && list.size() > 0) {
				tcpServers = new String[list.size()];
				Iterator iter = list.iterator();
				while(iter.hasNext()) {
					tcpServers[i++] = ((String)iter.next()).trim();
				}				
			} else
				tcpServers = new String[0];
			// 判斷服務器數量是否大于1
			if(tcpServers.length + udpServers.length < 1)
				return false;
			else
				return true;
		} else
			return false;
	}

	/**
     * 從資源文件中返回字符串 我們不希望程序崩潰,所以如果沒有找到Key,就直接返回Key
     */
    public static String getString(String key) {
        try {
            return resourceBundle.getString(key);
        } catch (MissingResourceException e) {
            return key;
        } catch (NullPointerException e) {
            return "!" + key + "!";
        }
    }

    /**
     * 從資源文件中返回字符串 我們不希望程序崩潰,所以如果沒有找到Key,就直接返回Key
     */
    public static String getString(String key, Object[] args) {
        try {
            return MessageFormat.format(getString(key), args);
        } catch (MissingResourceException e) {
            return key;
        } catch (NullPointerException e) {
            return "!" + key + "!";
        }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区三区三区| 国产精品黄色在线观看| 日韩精品午夜视频| 91麻豆精品国产91久久久久| 亚洲成人午夜电影| 91精品国产综合久久久久久 | 亚洲欧洲精品成人久久奇米网| 国产福利精品一区| 17c精品麻豆一区二区免费| 色欧美片视频在线观看| 亚洲成人777| 26uuu久久天堂性欧美| 国产精品一区一区三区| 中文字幕第一区综合| 91在线观看视频| 日韩精品五月天| 久久久久9999亚洲精品| 91理论电影在线观看| 婷婷综合久久一区二区三区| www国产精品av| 91天堂素人约啪| 青娱乐精品视频| 国产人成一区二区三区影院| 欧美性色欧美a在线播放| 另类的小说在线视频另类成人小视频在线 | 国产欧美精品一区| 91麻豆6部合集magnet| 日本中文字幕一区| 国产精品麻豆一区二区| 欧美美女一区二区在线观看| 国产最新精品免费| 亚洲一区二区在线视频| 精品噜噜噜噜久久久久久久久试看| 粉嫩绯色av一区二区在线观看 | 亚洲综合图片区| 精品1区2区在线观看| 99国产精品国产精品久久| 五月天激情综合| 亚洲欧洲日韩综合一区二区| 91精品国产色综合久久不卡蜜臀| 国产高清亚洲一区| 视频一区视频二区中文| 欧美国产一区在线| 日韩色在线观看| 在线观看成人小视频| 国产激情偷乱视频一区二区三区| 午夜激情久久久| 亚洲免费三区一区二区| 国产女人aaa级久久久级| 91.xcao| 在线观看www91| eeuss影院一区二区三区| 极品美女销魂一区二区三区| 亚洲电影激情视频网站| 亚洲同性gay激情无套| 久久精品欧美日韩精品 | 日韩三区在线观看| 色呦呦日韩精品| 成人av资源在线观看| 精品一区二区三区在线观看| 黄色成人免费在线| 日韩中文欧美在线| 亚洲综合在线第一页| 亚洲欧美在线aaa| 日本一区二区三区在线观看| 日韩美一区二区三区| 欧美日韩精品一区视频| 色综合亚洲欧洲| 99久久综合99久久综合网站| 国产成人在线视频网址| 国产综合久久久久影院| 美女任你摸久久| 免费日韩伦理电影| 日日欢夜夜爽一区| 五月天亚洲婷婷| 91在线国产福利| 丁香亚洲综合激情啪啪综合| 国产成人精品影院| 高清国产一区二区| 国产mv日韩mv欧美| yourporn久久国产精品| 国产成+人+日韩+欧美+亚洲| 久久99精品国产.久久久久久| 丝袜亚洲另类丝袜在线| 日韩激情一二三区| 男女视频一区二区| 久久99久久精品| 国产一区二区在线观看视频| 国产精品资源站在线| 国产成人午夜99999| 成人av电影免费观看| 色综合色综合色综合| 欧美在线|欧美| 4438x亚洲最大成人网| 日韩精品资源二区在线| 久久蜜桃香蕉精品一区二区三区| 久久久久久久久久美女| 国产精品家庭影院| 亚洲午夜精品网| 日日摸夜夜添夜夜添国产精品| 日本sm残虐另类| 国产美女av一区二区三区| 成人国产精品免费观看动漫| 一本大道久久精品懂色aⅴ| 欧美日韩中文国产| 精品三级av在线| 国产精品久久午夜夜伦鲁鲁| 亚洲综合免费观看高清完整版 | 五月激情综合网| 国产自产视频一区二区三区| 波多野结衣亚洲一区| 欧美日韩一区视频| 久久综合久久综合亚洲| 亚洲人成网站影音先锋播放| 热久久国产精品| 不卡一卡二卡三乱码免费网站| 欧美亚一区二区| 久久久亚洲国产美女国产盗摄| 最新国产成人在线观看| 日本美女视频一区二区| www.99精品| 欧美一级黄色录像| 亚洲男女毛片无遮挡| 精一区二区三区| 欧美午夜一区二区三区免费大片| 久久久www成人免费无遮挡大片| 亚洲精品少妇30p| 国产精品综合二区| 制服丝袜av成人在线看| 国产精品成人免费| 日韩精品五月天| 99国产一区二区三精品乱码| 日韩一级黄色大片| 夜色激情一区二区| 国产精品影视在线| 日韩视频一区二区在线观看| 亚洲精品v日韩精品| 国产成人精品影视| 日韩一区二区三区视频| 一区二区在线免费观看| 高清不卡在线观看av| 日韩精品一区二区三区视频播放 | 精品中文字幕一区二区| 欧美三级三级三级| 一区二区三区日韩欧美| 国产aⅴ综合色| 精品国产网站在线观看| 偷拍日韩校园综合在线| 日本高清不卡aⅴ免费网站| 国产精品女上位| 国产成人av影院| 精品国产电影一区二区| 日韩精品电影在线观看| 欧美亚洲图片小说| 亚洲三级电影全部在线观看高清| 国产一区二区三区在线观看精品| 在线播放日韩导航| 天天色综合天天| 欧美日韩欧美一区二区| 亚洲二区在线视频| 欧美网站一区二区| 亚洲一区二区影院| 在线影院国内精品| 一区二区三区日韩欧美| 色国产精品一区在线观看| 亚洲欧美怡红院| 色综合久久久久综合| 综合激情网...| 在线观看一区不卡| 五月婷婷综合激情| 91.com在线观看| 精品一区二区三区久久久| 欧美白人最猛性xxxxx69交| 激情综合色综合久久| 欧美精品一区二区三| 国产精品69久久久久水密桃| 国产网站一区二区三区| 国产成人亚洲综合a∨婷婷| 欧美极品少妇xxxxⅹ高跟鞋 | 99久久久久免费精品国产 | 337p日本欧洲亚洲大胆色噜噜| 韩国av一区二区三区| 久久久国产综合精品女国产盗摄| 高清国产一区二区| 亚洲人成亚洲人成在线观看图片| 在线观看日韩国产| 日韩专区中文字幕一区二区| 精品国产一区二区亚洲人成毛片 | 国产精品996| 欧美国产精品一区| 色哟哟一区二区三区| 亚洲成人激情综合网| 欧美成人a视频| 成年人网站91| 性久久久久久久久| 久久久久高清精品| 欧美综合色免费| 国产真实精品久久二三区| ●精品国产综合乱码久久久久| 欧美视频一区二区三区|