package com.wyp.materialqqlite.qqclient.task;
import java.util.ArrayList;
import org.apache.http.client.HttpClient;
import com.wyp.materialqqlite.qqclient.protocol.QQProtocol;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.GetSignResult;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.QQCallBackMsg;
import com.wyp.materialqqlite.qqclient.protocol.protocoldata.SetSignResult;
public class QQSignTask extends HttpTask {
public static final int OP_TYPE_GET = 0; // 获取
public static final int OP_TYPE_SET = 1; // 设置
public int m_nType; // 操作类型
public ArrayList<QQSign_Param_Get> m_arrGetParam;
public ArrayList<QQSign_Param_Set> m_arrSetParam;
private class QQSign_Param_Get {
boolean bIsGMember; // 是群成员还是好友
int nGroupCode; // 群代码
int nQQUin; // 好友Uin或者群成员Uin
};
private class QQSign_Param_Set {
String m_strSign; // 需要设置的个性签名
};
public QQSignTask(String strTaskName, HttpClient httpClient) {
super(strTaskName, httpClient);
// TODO Auto-generated constructor stub
m_arrGetParam = new ArrayList<QQSign_Param_Get>();
m_arrSetParam = new ArrayList<QQSign_Param_Set>();
}
public boolean addGetParam(boolean bIsGMember, int nGroupCode, int nQQUin) {
QQSign_Param_Get param = new QQSign_Param_Get();
param.bIsGMember = bIsGMember;
param.nGroupCode = nGroupCode;
param.nQQUin = nQQUin;
m_arrGetParam.add(param);
return true;
}
public boolean addSetParam(String strSign) {
if (null == strSign || strSign.length() <= 0)
return false;
QQSign_Param_Set param = new QQSign_Param_Set();
param.m_strSign = strSign;
m_arrSetParam.add(param);
return true;
}
public void delAllItems() {
m_arrGetParam.clear();
m_arrSetParam.clear();
}
@Override
public void doTask() {
if (null == m_httpClient || null == m_QQUser
|| null == m_arrGetParam || null == m_arrSetParam) {
return;
}
try {
if (OP_TYPE_GET == m_nType) // 获取QQ个性签名
{
for (int i = 0; i < m_arrGetParam.size(); i++)
{
QQSign_Param_Get param = m_arrGetParam.get(i);
if (null == param)
continue;
GetSignResult result = new GetSignResult();
boolean bRet = QQProtocol.getQQSign(m_httpClient, param.nQQUin,
m_QQUser.m_LoginResult2.m_strVfWebQq, result);
if (m_bCancel)
break;
if (!bRet || result.m_nRetCode != 0)
result = null;
if (!param.bIsGMember)
sendMessage(QQCallBackMsg.UPDATE_BUDDY_SIGN, 0, 0, result);
else
sendMessage(QQCallBackMsg.UPDATE_GMEMBER_SIGN, param.nGroupCode, 0, result);
}
}
else if (OP_TYPE_SET == m_nType) // 设置QQ个性签名
{
SetSignResult result = new SetSignResult();
for (int i = 0; i < (int)m_arrSetParam.size(); i++)
{
QQSign_Param_Set param = m_arrSetParam.get(i);
if (null == param)
continue;
boolean bRet = QQProtocol.setQQSign(m_httpClient,
param.m_strSign, m_QQUser.m_LoginResult2.m_strVfWebQq, result);
if (m_bCancel)
break;
if (!bRet || result.m_nRetCode != 0)
continue;
}
}
delAllItems();
} catch (Exception e) {
e.printStackTrace();
} finally {
}
}
}