📄 modelutils.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.models;
import static edu.tsinghua.lumaqq.resource.Messages.*;
import java.io.File;
import java.io.IOException;
import edu.tsinghua.lumaqq.ecore.EcoreFactory;
import edu.tsinghua.lumaqq.ecore.LoginOption;
import edu.tsinghua.lumaqq.ecore.ProxyType;
import edu.tsinghua.lumaqq.ecore.face.FaceConstant;
import edu.tsinghua.lumaqq.ecore.face.FaceFactory;
import edu.tsinghua.lumaqq.ecore.face.FaceGroup;
import edu.tsinghua.lumaqq.ecore.face.Faces;
import edu.tsinghua.lumaqq.ecore.group.GroupFactory;
import edu.tsinghua.lumaqq.ecore.group.XCluster;
import edu.tsinghua.lumaqq.ecore.group.XGroup;
import edu.tsinghua.lumaqq.ecore.group.XGroups;
import edu.tsinghua.lumaqq.ecore.group.XOrganization;
import edu.tsinghua.lumaqq.ecore.group.XUser;
import edu.tsinghua.lumaqq.ecore.login.LoginFactory;
import edu.tsinghua.lumaqq.ecore.login.Logins;
import edu.tsinghua.lumaqq.ecore.option.GUIOption;
import edu.tsinghua.lumaqq.ecore.option.KeyOption;
import edu.tsinghua.lumaqq.ecore.option.MessageOption;
import edu.tsinghua.lumaqq.ecore.option.OpType;
import edu.tsinghua.lumaqq.ecore.option.OptionFactory;
import edu.tsinghua.lumaqq.ecore.option.Options;
import edu.tsinghua.lumaqq.ecore.option.OtherOption;
import edu.tsinghua.lumaqq.ecore.option.SyncOption;
import edu.tsinghua.lumaqq.eutil.FaceUtil;
import edu.tsinghua.lumaqq.eutil.GroupUtil;
import edu.tsinghua.lumaqq.eutil.LoginUtil;
import edu.tsinghua.lumaqq.eutil.OptionUtil;
import edu.tsinghua.lumaqq.qq.beans.ContactInfo;
import edu.tsinghua.lumaqq.qq.beans.QQFriend;
/**
* 这个类负责提供一些创建数据的方法,纯粹是为了免得个别的文件行数太多,
* 所以把这些集中操作底层数据的方法抽出来放在一个工具类里
*
* @author luma
*/
public class ModelUtils {
/**
* 从QQFriend类创建一个contact info结构
* @param friend QQFriend
* @return ContactInfo
*/
public static ContactInfo createContact(QQFriend friend) {
ContactInfo ret = new ContactInfo();
ret.nick = friend.nick;
ret.qq = friend.qqNum;
ret.age = friend.age;
if(friend.isGG())
ret.gender = gender_gg;
else
ret.gender = gender_mm;
return ret;
}
/**
* 从User创建一个ContactInfo
*
* @param u
* User对象
* @return
* ContactInfo对象
*/
public static ContactInfo createContact(User u) {
ContactInfo ret = new ContactInfo();
ret.nick = u.nick;
ret.qq = u.qq;
ret.head = u.headId;
return ret;
}
/**
* 从Friend元素创建一个ContactInfo对象
*
* @param user
* Friend元素对象
* @return
* ContactInfo
*/
public static ContactInfo createContact(XUser user) {
ContactInfo ret = new ContactInfo();
ret.qq = user.getQq();
ret.nick = user.getNick();
ret.head = user.getHeadId();
return ret;
}
/**
* 从XML元素中创建Group
*
* @param group
* XGroup元素对象
* @return
* Group对象
*/
public static Group createGroup(XGroup group) {
Group ret = new Group();
ret.name = group.getName();
return ret;
}
/**
* 从XUser元素创建一个User
*
* @param user
* XUser
* @return
* User
*/
public static User createUser(XUser user) {
User ret = new User();
ret.qq = user.getQq();
if(ret.qq == 0)
return null;
ret.nick = user.getNick();
ret.cardName = user.getCardName();
ret.displayName = ret.nick;
ret.headId = user.getHeadId();
ret.windowX = user.getWindowX();
ret.windowY = user.getWindowY();
ret.member = user.isMember();
ret.status = Status.OFFLINE;
ret.pinned = user.isPinned();
ret.userFlag = user.getUserFlag();
ret.organizationId = user.getOrganizationId();
ret.info = createContact(user);
ret.talkMode = user.isTalkMode();
ret.lastMessageTime = user.getLastMessageTime();
ret.signature = user.getSignature();
ret.level = user.getLevel();
ret.female = user.isFemale();
ret.hasCustomHead = user.isHasCustomHead();
ret.customHeadId = user.getCustomHeadId();
ret.customHeadTimestamp = user.getCustomHeadTimestamp();
return ret;
}
/**
* 从User对象创建一个XUser元素对象
*
* @param u
* User
* @return
* XUser
*/
public static XUser createXUser(User u) {
XUser ret = GroupFactory.eINSTANCE.createXUser();
ret.setQq(u.qq);
ret.setNick(u.nick);
ret.setHeadId(u.headId);
ret.setWindowX(u.windowX);
ret.setWindowY(u.windowY);
ret.setMember(u.member);
ret.setTalkMode(u.talkMode);
ret.setOrganizationId(u.organizationId);
ret.setPinned(u.pinned);
ret.setCardName(u.cardName);
ret.setUserFlag(u.userFlag);
ret.setLastMessageTime(u.lastMessageTime);
ret.setSignature(u.signature);
ret.setLevel(u.level);
ret.setFemale(u.female);
ret.setHasCustomHead(u.hasCustomHead);
ret.setCustomHeadId(u.customHeadId);
ret.setCustomHeadTimestamp(u.customHeadTimestamp);
return ret;
}
/**
* 创建XOrganization元素对象
*
* @param org
* @return
*/
public static XOrganization createXOrganization(Organization org) {
XOrganization ret = GroupFactory.eINSTANCE.createXOrganization();
ret.setId(org.id);
ret.setName(org.name);
ret.setPath(org.path);
return ret;
}
/**
* 创建Organization对象
*
* @param org
* @return
*/
public static Organization createOrganization(XOrganization org) {
Organization ret = new Organization();
ret.id = org.getId();
ret.path = org.getPath();
ret.name = org.getName();
return ret;
}
/**
* 从QQFriend类创建一个User
*
* @param friend
* QQFriend对象
* @return
* User
*/
public static User createUser(QQFriend friend) {
User ret = new User();
ret.headId = friend.head;
ret.status = Status.OFFLINE;
ret.qq = friend.qqNum;
ret.nick = friend.nick;
ret.displayName = ret.nick;
ret.member = friend.isMember();
ret.info = createContact(friend);
ret.userFlag = friend.userFlag;
ret.female = !friend.isGG();
return ret;
}
/**
* 创建群的Model
*
* @param cluster
* XCluster
* @return
* Cluster
*/
public static Cluster createCluster(XCluster cluster) {
Cluster ret = new Cluster();
ret.clusterId = cluster.getClusterId();
if(ret.clusterId == -1)
return null;
ret.externalId = cluster.getExternalId();
if(ret.externalId == -1)
return null;
ret.parentClusterId = cluster.getParentClusterId();
ret.headId = cluster.getHeadId();
ret.name = cluster.getName();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -