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

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

?? lumaqq.java

?? lumaQQ的源文件
?? 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.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

import edu.tsinghua.lumaqq.ecore.LoginOption;
import edu.tsinghua.lumaqq.ecore.global.GlobalSetting;
import edu.tsinghua.lumaqq.ecore.global.Robot;
import edu.tsinghua.lumaqq.eutil.GlobalUtil;
import edu.tsinghua.lumaqq.qq.QQ;
import edu.tsinghua.lumaqq.qq.QQClient;
import edu.tsinghua.lumaqq.qq.beans.QQUser;
import edu.tsinghua.lumaqq.qq.net.PortGateFactory;
import edu.tsinghua.lumaqq.qq.robot.IRobot;
import edu.tsinghua.lumaqq.resource.Colors;
import edu.tsinghua.lumaqq.ui.MainShell;
import edu.tsinghua.lumaqq.ui.dialogs.LoginDialog;
import edu.tsinghua.lumaqq.ui.helper.OptionHelper;


/**
 * LumaQQ的GUI主程序,主要負責構造界面
 *
 * @author luma
 */
public class LumaQQ {
	/** 安裝目錄 */
	public static String INSTALL_DIR;
	/** 自定義表情目錄 */
	public static String CUSTOM_FACE_DIR;
	
	/** 聊天機器人配置文件 */
	public static String ROBOTS;
	/** IP數據庫文件 */
	public static String IP_FILE;
	/** 群分類文件 */
	public static String CLUSTER_CATEGORY_FILE;
	/** 全局配置信息文件 */
	public static String GLOBAL_SETTING;
	
	// 用戶文件路徑
	/** 用戶登錄歷史信息文件 */
	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 RECORD_DIRECTORY;
	/** 用戶信息文件 */
	public static String SELF;
	
	// 聲音文件路徑
	/** 普通消息聲音文件 */
	public static String MSG_SOUND;
	/** 系統消息聲音 */
	public static String SYS_MSG_SOUND;
	
	// 登陸服務器數組,需要從xml文件中讀取
    /** UDP服務器的列表 */
    public static String[] udpServers;
    /** TCP服務器列表 */
    public static String[] tcpServers;
    
    // 機器人列表
    public static List<Robot> robots;
    
    // 全局設置
    public static String language;
    
	// 是否windows
    public static boolean IS_WIN32;
    public static boolean IS_GTK;
    public static boolean IS_CARBON;
    public static boolean DOUBLE_BUFFER;

	/**
	 * LumaQQ啟動主程序
	 * @param args
	 */
	public static void main(String[] args) {
		// 獲得平臺類型
		detectPlatform();
		// 初始化系統文件路徑,讀取全局設置
		initSysFilePath(args);
		readGlobalSettingFile();
		Shell shell = new Shell(new Display());
		// 初始化顏色
		Colors.init();
		// 服務器列表讀取成功,開始登陸
		LoginDialog login = new LoginDialog(shell, false);
		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_STATUS_HIDDEN);
			} else {
				me.setLoginMode(QQ.QQ_LOGIN_MODE_NORMAL);
				me.setStatus(QQ.QQ_STATUS_ONLINE);
			}
			// 創建QQ客戶端對象
			QQClient client = new QQClient();
			client.setConnectionPoolFactory(new PortGateFactory());
			client.setUser(me);
			// 初始化用戶文件路徑
			initUserFilePath(me);
			// 傳遞給主界面
			MainShell main = new MainShell();
			main.setClient(client);
			// 檢查是否使用登錄框的網絡設置
			if(login.isUseNetworkSetting()) 
				syncLoginOption(login.getLogins().getNetwork(), main.getOptionHelper());
			// 打開主界面
		    main.open();
		} 
	} 

	/**
	 * 同步登錄設置
	 * 
	 * @param network
	 * @param optionHelper
	 */
	public static void syncLoginOption(LoginOption lo, OptionHelper optionHelper) {
		optionHelper.setProxyType(lo.getProxyType());
		optionHelper.setProxyServer(lo.getProxyServer());
		optionHelper.setProxyPort(lo.getProxyPort());
		optionHelper.setProxyUsername(lo.getProxyUsername());
		optionHelper.setProxyPassword(lo.getProxyPassword());
		optionHelper.setUseTcp(lo.isUseTcp());
		optionHelper.setServer(lo.getServer());
		optionHelper.setTcpPort(lo.getTcpPort());
		optionHelper.setAutoSelect(lo.isAutoSelect());
	}

	/**
	 * 獲得平臺類型
	 */
	private static void detectPlatform() {
	    // 如果不是Mac,底層也不是gtk,則做雙緩沖
		String platform = SWT.getPlatform();
		IS_WIN32 = "win32".equals(platform);
		IS_GTK = "gtk".equals(platform);
		IS_CARBON = "carbon".equals(platform);
		DOUBLE_BUFFER = !IS_CARBON;
	}

	/**
	 * 初始化用戶文件路徑,對于每個用戶來說,這些值是變化的。在改變用戶的時候將被調用
	 * 
	 * @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_FACES = INSTALL_DIR + "/" + me.getQQ() + "/faces.xml";
		RECORD_DIRECTORY = INSTALL_DIR + "/" + me.getQQ() + "/record";
		SELF = INSTALL_DIR + "/" + me.getQQ() + "/me.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";
		ROBOTS = INSTALL_DIR + "/xml/robots.xml";
		IP_FILE = INSTALL_DIR + "/QQWry.dat";
		CLUSTER_CATEGORY_FILE = INSTALL_DIR + "/cluster_category.db";
		GLOBAL_SETTING = INSTALL_DIR + "/xml/global.xml";
		MSG_SOUND = INSTALL_DIR + "/sound/msg.au";
		SYS_MSG_SOUND = INSTALL_DIR + "/sound/system.wav";
	}
	
	/**
	 * 讀取全局配置信息文件
	 */
	@SuppressWarnings("unchecked")
	private static void readGlobalSettingFile() {
		// 檢查文件
		File file = new File(LumaQQ.GLOBAL_SETTING);		
		// 載入文件
		GlobalSetting global = GlobalUtil.load(file);
		// 如果global為null,則創建一個缺省的全局配置文件
		if(global == null || global.getServers().getTCPServer().size() + global.getServers().getUDPServer().size() < 1) {
			global = GlobalUtil.createDefault();
			GlobalUtil.save(file, global);
		}
		// 讀取設置
		language = global.getLanguage().getName();			
		// 得到UDP服務器列表
		int i = 0;
		List<String> list = (List<String>)global.getServers().getUDPServer();
		udpServers = new String[list.size()];
		for(String server : list)
			udpServers[i++] = server;
		// 得到TCP服務器列表
		i = 0;
		list = (List<String>)global.getServers().getTCPServer();
		tcpServers = new String[list.size()];
		for(String server: list)
			tcpServers[i++] = server;
		// 得到機器人
		robots = (List<Robot>)global.getRobots().getRobot();
	}
	
	/**
	 * @return
	 * 		true表示有robot
	 */
	public static boolean hasRobots() {
		if(robots == null)
			return false;
		else
			return !robots.isEmpty();
	}
	
	/**
	 * 得到機器人借口
	 * 
	 * @param index
	 * @return
	 */
	public static IRobot getRobot(int index) {
		if(robots == null || index < 0 || index >= robots.size())
			return null;
		else {
			Robot robot = robots.get(index);
			try {
				Class klass = Class.forName(robot.getClass_());
				return (IRobot)klass.newInstance();
			} catch (Exception e) {
				return null;
			}
		}
	}
	
	/**
	 * @return Returns the robots.
	 */
	public static List<Robot> getRobots() {
		return robots;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合av在线| 亚洲欧洲中文日韩久久av乱码| 国产日韩欧美精品在线| 亚洲精品日韩一| 国产呦萝稀缺另类资源| 欧美午夜电影在线播放| 国产偷国产偷亚洲高清人白洁| 香蕉加勒比综合久久| 99久久精品免费看国产| 久久色视频免费观看| 日韩高清一区在线| 91浏览器在线视频| 国产欧美日产一区| 国产乱色国产精品免费视频| 在线观看91精品国产麻豆| 亚洲精品日韩专区silk| av电影在线观看一区| 久久精品在线免费观看| 另类小说图片综合网| 欧美一区二区三区色| 亚洲国产精品久久人人爱蜜臀| 成人一区二区三区视频| 久久久久久97三级| 狠狠色丁香婷婷综合久久片| 欧美一区二区性放荡片| 日韩精品一级中文字幕精品视频免费观看 | 成人免费毛片嘿嘿连载视频| 精品三级在线看| 久久99精品国产| 欧美大度的电影原声| 麻豆成人av在线| 欧美一区二区三区电影| 久久精品国产成人一区二区三区| 欧美一级一区二区| 蜜臀va亚洲va欧美va天堂 | 精品国产欧美一区二区| 麻豆一区二区三| 亚洲精品在线免费观看视频| 韩国午夜理伦三级不卡影院| 久久亚区不卡日本| 国产丶欧美丶日本不卡视频| 欧美国产乱子伦| www.av亚洲| 亚洲图片欧美色图| 亚洲精品一区在线观看| 精品午夜久久福利影院| 久久久影视传媒| 99久久久精品| 午夜亚洲国产au精品一区二区| 欧美色图激情小说| 免费在线视频一区| 久久久久久久精| 99国产精品一区| 五月天精品一区二区三区| 日韩一区二区三区视频| 黑人精品欧美一区二区蜜桃| 中文字幕第一区第二区| 欧美性三三影院| 久久精品国产亚洲5555| 国产精品久久久久久户外露出 | 久久精品国产亚洲一区二区三区| 精品国产凹凸成av人导航| 不卡电影免费在线播放一区| 亚洲免费在线视频| 日韩精品中午字幕| 成人黄页毛片网站| 三级在线观看一区二区| 久久久www成人免费毛片麻豆| 色综合色狠狠综合色| 美女一区二区三区在线观看| 中文字幕乱码一区二区免费| 欧美亚州韩日在线看免费版国语版| 蜜臀久久99精品久久久久久9 | 国产乱人伦精品一区二区在线观看 | 91精品久久久久久久91蜜桃| 国产aⅴ综合色| 亚洲午夜精品一区二区三区他趣| 精品福利二区三区| 欧美日韩综合不卡| 国产成人在线电影| 日韩国产精品久久| 国产精品免费视频一区| 日韩欧美国产精品一区| 99久久久久免费精品国产| 久久99精品久久只有精品| 一区二区三区欧美日| 久久久久久久久久久黄色| 欧美日韩国产综合一区二区 | 在线精品视频一区二区三四| 国产精品亚洲一区二区三区妖精| 香蕉久久夜色精品国产使用方法 | 色婷婷综合久色| 91久久精品一区二区| 国产精品久久久久国产精品日日| 久久99精品久久久久久久久久久久| 欧美一区二区三区视频在线观看| 中文在线免费一区三区高中清不卡| 亚洲女同ⅹxx女同tv| 欧美日韩dvd在线观看| 日韩欧美综合在线| 91麻豆蜜桃一区二区三区| 国产精品91一区二区| 奇米888四色在线精品| 亚洲三级免费观看| 中文字幕一区二区三区在线观看 | 中文无字幕一区二区三区| 4438成人网| 欧美日韩一区二区不卡| 一道本成人在线| 91天堂素人约啪| 成人免费黄色在线| 成人三级在线视频| 成人在线一区二区三区| 国产91精品入口| 成人免费看片app下载| av电影在线观看不卡| 成人黄色综合网站| 91小视频在线| 91精彩视频在线观看| 一本色道a无线码一区v| 日本黄色一区二区| 在线观看一区二区精品视频| 欧洲国产伦久久久久久久| 欧美性三三影院| 欧美一卡2卡三卡4卡5免费| 国产日韩欧美精品综合| 国产精品久久久久久久久快鸭 | 亚洲综合小说图片| 亚洲福利一二三区| 麻豆久久久久久| 国产一区二区免费看| 国产精品77777竹菊影视小说| 国产成人免费视频网站高清观看视频 | 欧美一区二区三区视频| 久久综合狠狠综合久久综合88 | 中文字幕一区二区在线观看| 亚洲精品亚洲人成人网在线播放| 亚洲精品乱码久久久久久| 丝袜美腿一区二区三区| 美国一区二区三区在线播放| 国产精品夜夜嗨| 91精品福利视频| 欧美一区二区黄| 欧美激情在线一区二区| 一区二区三区美女视频| 日韩av一级片| 波多野结衣在线aⅴ中文字幕不卡| www.性欧美| 在线综合视频播放| 国产欧美日韩亚州综合| 亚洲资源在线观看| 国产美女精品在线| 欧洲国产伦久久久久久久| 精品国产伦一区二区三区观看体验 | 亚洲激情自拍视频| 免费成人av在线播放| 本田岬高潮一区二区三区| 欧美精品久久99久久在免费线| 久久久久成人黄色影片| 亚洲综合免费观看高清完整版在线| 日韩av不卡在线观看| 99国产一区二区三精品乱码| 91精品婷婷国产综合久久| 国产精品久久久久久久久免费樱桃| 亚洲激情男女视频| 国产麻豆精品在线观看| 欧美三区免费完整视频在线观看| 欧美精品一区二区三区很污很色的| 一区二区三区国产精品| 国产高清精品网站| 欧美一三区三区四区免费在线看| 国产精品国产三级国产aⅴ原创| 蜜臀久久久久久久| 91高清视频免费看| 国产亚洲精品中文字幕| 免费看日韩a级影片| 欧美在线影院一区二区| 国产精品激情偷乱一区二区∴| 麻豆久久久久久| 欧美日韩国产首页| 亚洲自拍偷拍麻豆| 色综合久久中文综合久久牛| 国产精品网站在线播放| 极品少妇xxxx偷拍精品少妇| 欧美伦理影视网| 亚洲一区二区欧美日韩 | 精品视频在线免费| 亚洲六月丁香色婷婷综合久久| 国产福利一区二区三区视频| 欧美大尺度电影在线| 视频一区欧美日韩| 欧美日韩国产bt| 亚洲国产日韩a在线播放| 色哟哟一区二区在线观看| 欧美激情一区二区| 高清视频一区二区| 国产色91在线| 成人福利视频网站| 日韩一区欧美一区| 91在线云播放|