📄 confighelper.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.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 + -