📄 optionutil.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.utils;
import java.io.File;
import java.io.IOException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import edu.tsinghua.lumaqq.qq.Util;
import edu.tsinghua.lumaqq.xml.sysopts.GUIOptionImpl;
import edu.tsinghua.lumaqq.xml.sysopts.LoginOptionImpl;
import edu.tsinghua.lumaqq.xml.sysopts.MessageOptionImpl;
import edu.tsinghua.lumaqq.xml.sysopts.Options;
import edu.tsinghua.lumaqq.xml.sysopts.OtherOptionImpl;
import edu.tsinghua.lumaqq.xml.sysopts.SyncOptionImpl;
/**
* 管理系统设置的工具类,因为系统设置是一块比较大的部分,所以在这里用一个类
* 来处理他
*
* @author 马若劼
*/
public class OptionUtil {
private Options options;
private String fileName;
// Log对象
private static Log log = LogFactory.getLog(OptionUtil.class);
// singleton模式
private static OptionUtil instance = new OptionUtil();
public static final String TRUE = "true";
public static final String FALSE = "false";
public static final String ALWAYS = "always";
public static final String NEVER = "never";
public static final String PROMPT = "prompt";
/**
* @return 单一实例
*/
public static OptionUtil getInstance() {
return instance;
}
/**
* 构造函数
* @param options
*/
private OptionUtil() {
// 没什么要做的
}
/**
* 设置系统设置文件的根元素对象
* @param options
*/
public void setOptionsModel(Options options) {
this.options = options;
if(options.getLoginOption() == null)
options.setLoginOption(new LoginOptionImpl());
if(options.getGUIOption() == null)
options.setGUIOption(new GUIOptionImpl());
if(options.getMessageOption() == null)
options.setMessageOption(new MessageOptionImpl());
if(options.getOtherOption() == null)
options.setOtherOption(new OtherOptionImpl());
if(options.getSyncOption() == null)
options.setSyncOption(new SyncOptionImpl());
}
/**
* @return options元素对象
*/
public Options getOptionsModel() {
return options;
}
/**
* @return 是否是自动选择服务器
*/
public boolean isAutoSelect() {
return TRUE.equalsIgnoreCase(options.getLoginOption().getAutoSelect());
}
/**
* @return 是否使用tcp方式登陆
*/
public boolean isUseTcp() {
return TRUE.equalsIgnoreCase(options.getLoginOption().getUseTcp());
}
/**
* 设置是否是自动选择服务器
* @param b
*/
public void setAutoSelect(boolean b) {
options.getLoginOption().setAutoSelect(String.valueOf(b));
}
/**
* 设置是否用tcp方式登陆
* @param b
*/
public void setUseTcp(boolean b) {
options.getLoginOption().setUseTcp(String.valueOf(b));
}
/**
* @return 代理服务器地址
*/
public String getProxyServer() {
return options.getLoginOption().getProxyServer();
}
/**
* 设置代理服务器地址
* @param s
*/
public void setProxyServer(String s) {
options.getLoginOption().setProxyServer(s);
}
/**
* @return 代理服务器端口
*/
public int getProxyPort() {
return Util.getInt(options.getLoginOption().getProxyPort(), 0);
}
/**
* 设置代理服务器端口
* @param port
*/
public void setProxyPort(int port) {
options.getLoginOption().setProxyPort(String.valueOf(port));
}
/**
* @return 代理服务器类型
*/
public String getProxyType() {
return options.getLoginOption().getProxyType();
}
/**
* 设置代理服务器类型
* @param s
*/
public void setProxyType(String s) {
options.getLoginOption().setProxyType(s);
}
/**
* @return 代理进行验证的用户名
*/
public String getProxyUsername() {
return options.getLoginOption().getProxyUsername();
}
/**
* 设置代理服务器的验证用户名
* @param u
*/
public void setProxyUsername(String u) {
options.getLoginOption().setProxyUsername(u);
}
/**
* @return 代理服务器的验证密码
*/
public String getProxyPassword() {
return options.getLoginOption().getProxyPassword();
}
/**
* 设置代理服务器的验证密码
* @param p
*/
public void setProxyPassword(String p) {
options.getLoginOption().setProxyPassword(p);
}
/**
* 得到TCP服务器缺省连接端口,因为TCP服务器有两个端口可用,如果失败,返回80
*/
public int getTcpPort() {
return Util.getInt(options.getLoginOption().getTcpPort(), 80);
}
/**
* 设置TCP服务器端口
*
* @param port
* 端口的字符串形式
*/
public void setTcpPort(String port) {
options.getLoginOption().setTcpPort(port);
}
/**
* 设置TCP服务器端口
*
* @param port
* 端口的整数形式
*/
public void setTcpPort(int port) {
options.getLoginOption().setTcpPort(String.valueOf(port));
}
/**
* 检查是否在最小化时隐藏窗口
* @return
*/
public boolean isAutoHide() {
return TRUE.equalsIgnoreCase(options.getGUIOption().getAutoHide());
}
/**
* @return 主窗口上次关闭时的x位置
*/
public int getLocationX() {
String s = options.getGUIOption().getLocationX();
return Util.getInt(s, 0);
}
/**
* @return 主窗口的宽度,如果为-1,表示使用缺省值
*/
public int getWidth() {
String s = options.getGUIOption().getWidth();
return Util.getInt(s, -1);
}
/**
* @return 主窗口的高度,如果为-1,表示使用缺省值
*/
public int getHeight() {
String s = options.getGUIOption().getHeight();
return Util.getInt(s, -1);
}
/**
* 设置主窗口宽度
* @param width
*/
public void setWidth(int width) {
options.getGUIOption().setWidth(String.valueOf(width));
}
/**
* 设置主窗口高度
* @param height
*/
public void setHeight(int height) {
options.getGUIOption().setHeight(String.valueOf(height));
}
/**
* @return true表示显示小头像
*/
public boolean isSmallFace() {
return TRUE.equalsIgnoreCase(options.getGUIOption().getSmallFace());
}
/**
* @return true表示鼠标移动到好友上时显示提示
*/
public boolean isShowTip() {
return TRUE.equalsIgnoreCase(options.getGUIOption().getShowTip());
}
/**
* 设置是否鼠标在好友上面时显示提示
* @param b
*/
public void setShowTip(boolean b) {
options.getGUIOption().setShowTip(String.valueOf(b));
}
/**
* @return true表示显示好友上线提示
*/
public boolean isShowOnlineTip() {
return TRUE.equalsIgnoreCase(options.getGUIOption().getShowOnlineTip());
}
/**
* @return 好友上线提示窗口的x坐标位置,如果为-1,表示使用缺省值
*/
public int getOnlineTipLocationX() {
String s = options.getGUIOption().getOnlineTipLocationX();
return Util.getInt(s, -1);
}
/**
* @return 好友上线提示窗口的y坐标位置,如果为-1,表示使用缺省值
*/
public int getOnlineTipLocationY() {
String s = options.getGUIOption().getOnlineTipLocationY();
return Util.getInt(s, -1);
}
/**
* 设置好友上线提示窗口的x坐标位置
* @param x
*/
public void setOnlineTipLocationX(int x) {
options.getGUIOption().setOnlineTipLocationX(String.valueOf(x));
}
/**
* 设置好友上线提示窗口的y坐标位置
* @param y
*/
public void setOnlineTipLocationY(int y) {
options.getGUIOption().setOnlineTipLocationY(String.valueOf(y));
}
/**
* 设置是否显示好友上线提示
* @param b
*/
public void setShowOnlineTip(boolean b) {
options.getGUIOption().setShowOnlineTip(String.valueOf(b));
}
/**
* 设置显示大头像还是小头像
* @param b
*/
public void setSmallFace(boolean b) {
options.getGUIOption().setSmallFace(String.valueOf(b));
}
/**
* @return 主窗口上次关闭时的y位置
*/
public int getLocationY() {
String s = options.getGUIOption().getLocationY();
return Util.getInt(s, 0);
}
/**
* 检查是否自动弹出消息
* @return
*/
public boolean isAutoEject() {
return TRUE.equalsIgnoreCase(options.getMessageOption().getAutoEject());
}
/**
* 检查是否拒绝陌生人消息
* @return
*/
public boolean isRejectStranger() {
return TRUE.equalsIgnoreCase(options.getMessageOption().getRejectStranger());
}
/**
* 设置是否最下化时隐藏
* @param b
*/
public void setAutoHide(boolean b) {
options.getGUIOption().setAutoHide(String.valueOf(b));
}
/**
* 保存主窗口关闭时的x位置
* @param x
*/
public void setLocationX(int x) {
options.getGUIOption().setLocationX(String.valueOf(x));
}
/**
* 保存主窗口关闭时的y位置
* @param y
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -