package com.wyp.materialqqlite.qqclient;
/**
* Created by WYP on 2015/1/29.
*/
import android.os.Handler;
import android.os.Message;
import com.wyp.materialqqlite.Utils;
import com.wyp.materialqqlite.qqclient.msglog.MessageLogger;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.BuddyInfo;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.BuddyList;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.GroupList;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.LoginResult_1;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.LoginResult_2;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.MessageList;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.QQStatus;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.RecentList;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.VerifyCodeInfo;
public class QQUser {
public String m_strQQNum = "";
public String m_strQQPwd = "";
public int m_nQQUin;
public int m_nStatus;
public int m_nLoginStatus;
public byte[] m_VerifyCodePic;
public String m_strVerifyCode = "";
public VerifyCodeInfo m_VerifyCodeInfo;
public LoginResult_1 m_LoginResult1;
public LoginResult_2 m_LoginResult2;
private Handler m_handlerProxy;
private Handler m_handlerCallBack;
String m_strUserFolder = "";
public BuddyInfo m_UserInfo;
public BuddyList m_BuddyList;
public GroupList m_GroupList;
RecentList m_RecentList;
public MessageList m_MsgList;
public MessageLogger m_MsgLogger;
public InternalData m_internalData;
private Object m_objLock1;
private Object m_objLock2;
public class InternalData {
public int m_nQQNum;
public String m_strNickName;
public int m_nGroupNum;
public int m_nGroupCode;
public boolean m_bHasGroupInfo;
}
public QQUser() {
m_strQQNum = "";
m_strQQPwd = "";
m_nQQUin = 0;
m_nStatus = QQStatus.OFFLINE;
m_nLoginStatus = QQStatus.ONLINE;
m_VerifyCodePic = null;
m_strVerifyCode = "";
m_VerifyCodeInfo = new VerifyCodeInfo();
m_LoginResult1 = new LoginResult_1();
m_LoginResult2 = new LoginResult_2();
m_handlerProxy = null;
m_handlerCallBack = null;
m_strUserFolder = "";
m_UserInfo = new BuddyInfo();
m_BuddyList = new BuddyList();
m_GroupList = new GroupList();
m_RecentList = new RecentList();
m_MsgList = new MessageList();
m_MsgLogger = new MessageLogger();
m_internalData = new InternalData();
m_objLock1 = new Object();
m_objLock2 = new Object();
}
public void reset() {
// m_strQQNum = "";
// m_strQQPwd = "";
// m_nQQUin;
// m_nStatus;
// m_nLoginStatus;
// m_VerifyCodePic = null;
// m_strVerifyCode = "";
// m_VerifyCodeInfo
// m_LoginResult1
// m_LoginResult2
// private Handler m_handlerProxy;
// private Handler m_handlerCallBack;
// String m_strUserFolder = "";
m_UserInfo.reset();
m_BuddyList.reset();
m_GroupList.reset();
m_RecentList.reset();
m_MsgList.reset();
m_MsgLogger.close();
// public InternalData m_internalData;
// private Object m_objLock1;
// private Object m_objLock2;
}
public void setProxyHandler(Handler handler) {
synchronized (m_objLock1) {
m_handlerProxy = handler;
}
}
public void setNullProxyHandler(Handler handler) {
if (null == handler)
return;
synchronized (m_objLock1) {
// 只有代理Handler相同的情况下才允许置空
if (handler == m_handlerProxy) {
m_handlerProxy.removeCallbacksAndMessages(null);
m_handlerProxy = null;
}
}
}
public boolean sendProxyMsg(int nMsgId,
int nArg1, int nArg2, Object obj) {
synchronized (m_objLock1) {
if (m_handlerProxy != null) {
Message msg = m_handlerProxy.obtainMessage();
msg.what = nMsgId;
msg.arg1 = nArg1;
msg.arg2 = nArg2;
msg.obj = obj;
return m_handlerProxy.sendMessage(msg);
}
return false;
}
}
public boolean sendProxyMsg(int nMsgId,
int nArg1, int nArg2, Object obj, boolean bWait) {
boolean bRet = false;
try {
synchronized (m_objLock1) {
if (m_handlerProxy != null) {
Message msg = m_handlerProxy.obtainMessage();
msg.what = nMsgId;
msg.arg1 = nArg1;
msg.arg2 = nArg2;
msg.obj = obj;
bRet = m_handlerProxy.sendMessage(msg);
if (bWait)
m_objLock1.wait();
}
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bRet;
}
public void notifyProxyMsg() {
synchronized (m_objLock1) {
m_objLock1.notify();
}
}
public void setCallBackHandler(Handler handler) {
synchronized (m_objLock2) {
m_handlerCallBack = handler;
}
}
public void setNullCallBackHandler(Handler handler) {
if (null == handler)
return;
synchronized (m_objLock2) {
if (handler == m_handlerCallBack) {
m_handlerCallBack.removeCallbacksAndMessages(null);
m_handlerCallBack = null;
}
}
}
public boolean sendCallBackMsg(int nMsgId,
int nArg1, int nArg2, Object obj) {
synchronized (m_objLock2) {
if (m_handlerCallBack != null) {
Message msg = m_handlerCallBack.obtainMessage();
msg.what = nMsgId;
msg.arg1 = nArg1;
msg.arg2 = nArg2;
msg.obj = obj;
return m_handlerCallBack.sendMessage(msg);
}
return false;
}
}
public boolean isNullCallBack() {
synchronized (m_objLock2) {
return (null == m_handlerCallBack);
}
}
// 获取用户文件夹存放路径
public String getUserFolder() {
return m_strUserFolder;
}
// 设置用户文件夹存放路径
public void setUserFolder(String strPath) {
m_strUserFolder = strPath;
}
// 获取个人文件夹存放路径
public String getPersonalFolder(int nUserNum) {
if (0 == nUserNum)
nUserNum = m_nQQUin;
return m_strUserFolder + Utils.getUInt(nUserNum) + "/";
}
// 获取好友头像图片存放路径
public String getBuddyHeadPicFolder(int nUserNum) {
return getPersonalFolder(nUserNum) + "HeadImage/Buddy/";
}
// 获取群头像图片存放路径
public String getGroupHeadPicFolder(int nUserNum) {
return getPersonalFolder(nUserNum) + "HeadImage/Group/";
}
// 获取群成员头像图片存放路径
public String getSessHeadPicFolder(int nUserNum) {
return getPersonalFolder(nUserNum) + "HeadImage/Sess/";
}
// 获取聊天图片存放路径
public String getChatPicFolder(int nUserNum) {
return getPersonalFolder(nUserNum) + "ChatImage/";
}
// 获取用户头像图片全路径文件名
public String getUserHeadPicFullName(int nUserNum) {
if (0 == nUserNum)
nUserNum = m_nQQUin;
return getPersonalFolder(nUserNum) + "HeadImage/Buddy/" + Utils.getUInt(nUserNum) + ".png";
}
// 获取好友头像图片全路径文件名
public String getBuddyHeadPicFullName(int nQQNum) {
return getPersonalFolder(0) + "HeadImage/Buddy/" + Utils.getUInt(nQQNum) + ".png";
}
// 获取群头像图片全路径文件名
public String getGroupHeadPicFullName(int nGroupNum) {
return getPersonalFolder(0) + "HeadImage/Group/" + Utils.getUInt(nGroupNum) + ".png";
}
// 获取群成员头像图片全路径文件名
public String getSessHeadPicFullName(int nQQNum) {
return getPersonalFolder(0) + "HeadImage/Sess/" + Utils.getUInt(nQQNum) + ".png";
}
// 获取聊天图片全路径文件名
public String getChatPicFullName(String strFileName) {
if (null == strFileName || strFileName.length() <= 0)
return "";
return getChatPicFolder(m_nQQUin) + strFileName;
}
// 获取消息记录全路径文件名
public String getMsgLogFullName(int nUserNum) {
return getPersonalFolder(nUserNum) + "Msg.db";
}
}