⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 confighelper.java

📁 java写的qq代码实现qq的部分功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
* 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.ui.helper;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;

import edu.tsinghua.lumaqq.LumaQQ;
import edu.tsinghua.lumaqq.ModelUtils;
import edu.tsinghua.lumaqq.models.FriendModel;
import edu.tsinghua.lumaqq.models.IQQNode;
import edu.tsinghua.lumaqq.qq.Util;
import edu.tsinghua.lumaqq.ui.MainShell;
import edu.tsinghua.lumaqq.ui.tool.FileTool;
import edu.tsinghua.lumaqq.utils.FaceUtil;
import edu.tsinghua.lumaqq.utils.MobileUtil;
import edu.tsinghua.lumaqq.utils.OptionUtil;
import edu.tsinghua.lumaqq.utils.ProxyUtil;
import edu.tsinghua.lumaqq.utils.RemarkUtil;
import edu.tsinghua.lumaqq.utils.ReplyUtil;
import edu.tsinghua.lumaqq.xml.faces.Faces;
import edu.tsinghua.lumaqq.xml.faces.FacesUnmarshaller;
import edu.tsinghua.lumaqq.xml.groups.Groups;
import edu.tsinghua.lumaqq.xml.groups.GroupsUnmarshaller;
import edu.tsinghua.lumaqq.xml.logins.Login;
import edu.tsinghua.lumaqq.xml.logins.Logins;
import edu.tsinghua.lumaqq.xml.logins.LoginsUnmarshaller;
import edu.tsinghua.lumaqq.xml.mobiles.Mobiles;
import edu.tsinghua.lumaqq.xml.mobiles.MobilesUnmarshaller;
import edu.tsinghua.lumaqq.xml.proxies.Proxies;
import edu.tsinghua.lumaqq.xml.proxies.ProxiesUnmarshaller;
import edu.tsinghua.lumaqq.xml.remarks.Remark;
import edu.tsinghua.lumaqq.xml.remarks.Remarks;
import edu.tsinghua.lumaqq.xml.remarks.RemarksUnmarshaller;
import edu.tsinghua.lumaqq.xml.replies.Replies;
import edu.tsinghua.lumaqq.xml.replies.RepliesUnmarshaller;
import edu.tsinghua.lumaqq.xml.sysopts.Options;
import edu.tsinghua.lumaqq.xml.sysopts.OptionsUnmarshaller;

/**
 * 检查,维护配置文件
 * 
 * @author luma
 */
public class ConfigHelper {
    private static Log log = LogFactory.getLog(ConfigHelper.class);    
    private MainShell main;
    
    public ConfigHelper(MainShell main) {
        this.main = main;
    }
	
	/**
	 * 初始化代理列表
	 */
	public void initProxies() {
	    ProxyUtil proxies = ProxyUtil.getInstance();
	    
		// 检查代理列表文件,如果没有则创建一个,如果创建失败则退出
		File proxyFile = new File(LumaQQ.PROXIES);
		if(!checkProxyFile(proxyFile))
			return;
		// 读入代理列表文件
	    Proxies p = loadProxyFile(proxyFile);
	    if(p == null) return;
	    proxies.setProxiesModel(p);
	    proxies.setFileName(proxyFile.getAbsolutePath());
	}
	
	/**
	 * 初始化自定义表情配置文件
	 */
	public void initFaces() {
		FaceUtil faces = FaceUtil.getInstance();
		
		// 创建表情目录
		File dir = new File(LumaQQ.CUSTOM_FACE_DIR);
		if(!dir.exists())
		    dir.mkdirs();
		dir = new File(LumaQQ.CUSTOM_FACE_RECV_DIR);
		if(!dir.exists())
		    dir.mkdirs();
		
		// 检查自定义表情配置文件,如果没有则创建一个
		File faceFile = new File(LumaQQ.CUSTOM_FACES);
		if(!checkFaceFile(faceFile))
			return;
		
		// 读入配置文件
		Faces f = loadFaceFile(faceFile);
		if(f == null)
			return;
		faces.setFacesModel(f);
		faces.setFileName(faceFile.getAbsolutePath());
		
		// 初始化接收到的表情
		File[] files = dir.listFiles();
		for(int i = 0; i < files.length; i++) {
		    String md5 = FileTool.getNameExcludeExtension(files[i]);
		    if(md5.length() != 32)
		        continue;
		    
		    faces.addReceivedFace(md5, files[i].getName());
		}
	}
	
	/**
	 * 初始化手机好友信息文件
	 */
	public void initMobiles() {
	    MobileUtil mobiles = MobileUtil.getInstance();
	    
	    // 检查手机好友列表文件,没有则创建一个
	    File mobileFile = new File(LumaQQ.MOBILES);
	    if(!checkMobileFile(mobileFile))
	        return;
	    // 读入手机好友文件
	    Mobiles m = loadMobileFile(mobileFile);
	    if(m == null) return;
	    mobiles.setMobilesModel(m);
	    mobiles.setFileName(mobileFile.getAbsolutePath());	    
	}

	/**
	 * 初始化快捷回复消息
	 */
	public void initReplies() {
	    ReplyUtil replies = ReplyUtil.getInstance();
	    
		// 检查快捷回复信息文件,如果没有则创建一个,如果创建失败则退出
		File replyFile = new File(LumaQQ.REPLIES);
		if(!checkReplyFile(replyFile))
			return;
		// 读入回复信息文件
		Replies r = loadReplyFile(replyFile);
		if(r == null) return;
		replies.setRepliesModel(r);
		replies.setFileName(replyFile.getAbsolutePath());
		main.getMenuHelper().renewAawyMenu();
	}

	/**
	 * 初始化系统设置
	 */ 
	public void initSystemOptions() {
		// 检查快捷回复信息文件,如果没有则创建一个,如果创建失败则退出
		File sysOptFile = new File(LumaQQ.SYSTEM_OPTIONS);
		sysOptFile.getParentFile().mkdirs();
		if(!checkSysOptFile(sysOptFile))
			main.close();
		// 读入系统设置文件
		Options o = loadSysOptFile(sysOptFile);
		if(o == null)
		    main.close();
		OptionUtil.getInstance().setOptionsModel(o);
		OptionUtil.getInstance().setFileName(sysOptFile.getAbsolutePath());
		// 初始化字体信息
		main.createDefaultStyle();
		// 设置是否使用2004头像
		//IconHolder.getInstance().setUse2004(OptionUtils.getInstance().isUse2004());
		// 设置组背景颜色
		RGB rgb = Util.stringToRGB(OptionUtil.getInstance().getGroupBackgroup());
		if(rgb != null) 
		    main.setGroupColor(new Color(main.getDisplay(), rgb));
	}

	/**
	 * 初始化备注信息
	 */
	public void initRemarks() {
	    RemarkUtil remarks = RemarkUtil.getInstance();
	    
		File remarksFile = new File(LumaQQ.REMARKS);
		remarksFile.getParentFile().mkdirs();
		if(checkRemarkFile(remarksFile)) {
			Remarks r = loadRemarkFile(remarksFile);
			if(r == null) return;
			remarks.setRemarksModel(r);
			remarks.setFileName(remarksFile.getAbsolutePath());
			// 把备注名称都添加到好友的model中
			List list = r.getRemarkList();
			if(list != null) {
				Iterator iter = list.iterator();
				while(iter.hasNext()) {
					Remark remark = (Remark)iter.next();
					FriendModel f = main.getMVCHelper().getFriendModel(new Integer(remark.getQqNum()));
					if(f != null) {
					    if(!remark.getName().equals(""))
					        f.addProperty(IQQNode.REAL_NAME, remark.getName());
					}
				}
			}
			// 根据系统设置中的是否显示昵称,来调整当前显示名称模式
			if(!OptionUtil.getInstance().isShowNick())
			    main.getUIHelper().displayName(IQQNode.REAL_NAME);
		}
	}
	
	/**
     * 检查分组信息文件的存在性,如果不存在就创建一个,如果创建也失败则返回false
     * 
     * @param file
     * 		分组信息文件的File对象
     * @return
     * 		true表示初始化成功
     */
    public boolean checkGroupFile(File file) {
        if(!file.exists()) {
            try {
            	ModelUtils.createDefaultGroupXmlFile(file);
	        } catch (IOException e) {
	            log.error("无法创建分组信息文件");
	            return false;
	        }
        } 
        return true;
    }
    
	/**
     * 检查手机好友信息文件的存在性,如果不存在就创建一个,如果创建也失败则返回false
     * 
     * @param file
     * 		手机好友信息文件的File对象
     * @return
     * 		true表示初始化成功
     */
    public boolean checkMobileFile(File file) {
        if(!file.exists()) {
            try {
                ModelUtils.createDefaultMobileXmlFile(file);
            } catch (IOException e) {
                log.error("无法创建手机好友信息文件");
                return false;
            }
        }
        return true;
    }
    
    /**
     * 载入分组信息文件,返回根元素对象
     * 
     * @param file
     * 		分组信息文件File对象

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -