📄 qqclient.java
字号:
if(user.isLoggedIn()) {
ClusterExitTempPacket packet = new ClusterExitTempPacket(user);
packet.setType(type);
packet.setParentClusterId(parentClusterId);
packet.setClusterId(clusterId);
gate.send(MAIN_PORT, packet, true);
}
}
*/
/**
* 根据外部ID搜索群
*
* @param externalId 群的外部ID
* @return
* 包序号
*/
public char searchClusterById(int externalId) {
if(user.isLoggedIn()) {
ClusterSearchPacket packet = new ClusterSearchPacket(user);
packet.setExternalId(externalId);
packet.setSearchType(QQ.QQ_CLUSTER_SEARCH_BY_ID);
gate.send(MAIN_PORT, packet, true);
return packet.getSequence();
} else
return 0;
}
/**
* 搜索示范群
*
* @return
* 包序号
*/
public char searchDemoCluster() {
if(user.isLoggedIn()) {
ClusterSearchPacket packet = new ClusterSearchPacket(user);
packet.setSearchType(QQ.QQ_CLUSTER_SEARCH_DEMO);
gate.send(MAIN_PORT, packet, true);
return packet.getSequence();
} else
return 0;
}
/**
* 加入群
* @param clusterId
* @return
* 包序号
*/
public char joinCluster(int clusterId) {
if(user.isLoggedIn()) {
ClusterJoinPacket packet = new ClusterJoinPacket(user);
packet.setClusterId(clusterId);
gate.send(MAIN_PORT, packet, true);
return packet.getSequence();
}
return 0;
}
/**
* 请求加入群
* @param clusterId 群内部ID
* @param message 请求的附加信息
* @return
* 包序号
*/
public char requestJoinCluster(int clusterId, String message) {
if(user.isLoggedIn()) {
ClusterAuthPacket packet = new ClusterAuthPacket(user);
packet.setType(QQ.QQ_CLUSTER_AUTH_REQUEST);
packet.setClusterId(clusterId);
packet.setMessage(message);
gate.send(MAIN_PORT, packet, true);
return packet.getSequence();
}
return 0;
}
/**
* 同意加入群
* @param clusterId
*/
public void approveJoinCluster(int clusterId, int receiver) {
if(user.isLoggedIn()) {
ClusterAuthPacket packet = new ClusterAuthPacket(user);
packet.setType(QQ.QQ_CLUSTER_AUTH_APPROVE);
packet.setClusterId(clusterId);
packet.setReceiver(receiver);
gate.send(MAIN_PORT, packet, true);
}
}
/**
* 拒绝加入群
* @param clusterId
* @param message
*/
public void rejectJoinCluster(int clusterId, int receiver, String message) {
if(user.isLoggedIn()) {
ClusterAuthPacket packet = new ClusterAuthPacket(user);
packet.setType(QQ.QQ_CLUSTER_AUTH_REJECT);
packet.setClusterId(clusterId);
packet.setReceiver(receiver);
packet.setMessage(message);
gate.send(MAIN_PORT, packet, true);
}
}
/**
* 修改用户的个人信息
* @param oldPassword 老密码,如果不修改密码,设成null
* @param newPassword 新密码,如果不修改密码,设成null
* @param contactInfo 其他信息
*/
public void modifyInfo(String oldPassword, String newPassword, ContactInfo contactInfo) {
if(user.isLoggedIn()) {
ModifyInfoPacket packet = new ModifyInfoPacket(user);
packet.setOldPassword(oldPassword);
packet.setNewPassword(newPassword);
String[] infos = contactInfo.getInfoArray();
for(int i = 1; i < QQ.QQ_COUNT_MODIFY_USER_INFO_FIELD; i++) {
if(infos[i].equals("-"))
infos[i] = "";
}
packet.setContactInfo(contactInfo);
gate.send(MAIN_PORT, packet, true);
}
}
/**
* 修改个性签名
*
* @param sig
* 个性签名
*/
public char modifySignature(String sig) {
if(user.isLoggedIn()) {
SignatureOpPacket packet = new SignatureOpPacket(user);
packet.setSubCommand(QQ.QQ_SUB_CMD_MODIFY_SIGNATURE);
packet.setSignature(sig);
gate.send(MAIN_PORT, packet, false);
return packet.getSequence();
}
return 0;
}
/**
* 删除个性签名
*/
public char deleteSignature() {
if(user.isLoggedIn()) {
SignatureOpPacket packet = new SignatureOpPacket(user);
packet.setSubCommand(QQ.QQ_SUB_CMD_DELETE_SIGNATURE);
gate.send(MAIN_PORT, packet, false);
return packet.getSequence();
}
return 0;
}
/**
* 得到个性签名
*
* @param sigs
*/
public void getSignature(List<Signature> sigs) {
if(user.isLoggedIn()) {
SignatureOpPacket packet = new SignatureOpPacket(user);
packet.setSubCommand(QQ.QQ_SUB_CMD_GET_SIGNATURE);
packet.setSignatures(sigs);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 得到好友等级
*
* @param friends
*/
public void getFriendLevel(List<Integer> friends) {
if(user.isLoggedIn()) {
FriendLevelOpPacket packet = new FriendLevelOpPacket(user);
packet.setFriends(friends);
packet.setSubCommand(QQ.QQ_SUB_CMD_GET_FRIEND_LEVEL);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 得到一个用户的详细信息
* @param qqNum 想要得到的用户QQ号
*/
public void getUserInfo(int qqNum) {
if(user.isLoggedIn()) {
GetUserInfoPacket packet = new GetUserInfoPacket(user);
packet.setQQ(qqNum);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 请求取得好友名单,如果成功,将会触发get friend list success和
* get friend list end事件,用户需要监听这两个事件来得到所有的
* 好友信息
*/
public void getFriendList() {
if(gate.hasPort(MAIN_PORT)) {
// 请求取得好友名单
GetFriendListPacket packet = new GetFriendListPacket(user);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 请求取得好友名单,position指定了名单开始的偏移,建议初级用户不要使用此API
* @param position
*/
public void getFriendList(char position) {
if(gate.hasPort(MAIN_PORT)) {
// 请求取得好友名单
GetFriendListPacket packet = new GetFriendListPacket(user);
packet.setStartPosition(position);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 请求取得当前在线好友列表
*/
public void getFriendOnline() {
if(gate.hasPort(MAIN_PORT)) {
GetOnlineOpPacket packet = new GetOnlineOpPacket(user);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 请求取得当前在线好友列表
*/
public void getFriendOnline(int startPosition) {
if(gate.hasPort(MAIN_PORT)) {
GetOnlineOpPacket packet = new GetOnlineOpPacket(user);
packet.setStartPosition(startPosition);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 得到用户属性
*
* @param startPosition
*/
public void getUserProperty(char startPosition) {
if(gate.hasPort(MAIN_PORT)) {
UserPropertyOpPacket packet = new UserPropertyOpPacket(user);
packet.setStartPosition(startPosition);
packet.setSubCommand(QQ.QQ_SUB_CMD_GET_USER_PROPERTY);
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 使我的状态改变成在线
*/
public void makeMeOnline() {
if(user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
user.setStatus(QQ.QQ_STATUS_ONLINE);
ChangeStatusPacket packet = new ChangeStatusPacket(user);
packet.setShowFakeCam(user.isShowFakeCam());
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 使我的状态改变成离开
*/
public void makeMeAway() {
if(user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
user.setStatus(QQ.QQ_STATUS_AWAY);
ChangeStatusPacket packet = new ChangeStatusPacket(user);
packet.setShowFakeCam(user.isShowFakeCam());
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 使我的状态改变为隐身
*/
public void makeMeHidden() {
if(user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
user.setStatus(QQ.QQ_STATUS_HIDDEN);
ChangeStatusPacket packet = new ChangeStatusPacket(user);
packet.setShowFakeCam(user.isShowFakeCam());
gate.send(MAIN_PORT, packet, false);
}
}
/**
* 请求密钥
* @param request
*/
/* public void requestKey(byte request) {
if(gate != null && user.isLoggedIn() && gate.hasPort(MAIN_PORT)) {
RequestKeyPacket packet = new RequestKeyPacket(user);
packet.setRequest(request);
gate.send(MAIN_PORT, packet, true);
}
}
*/
/**
* 请求得到多人对话列表
*/
/* public void getDialogList() {
if(user.isLoggedIn()) {
ClusterSubClusterOpPacket packet = new ClusterSubClusterOpPacket(user);
packet.setOpByte(QQ.QQ_CLUSTER_SUB_CMD_GET_DIALOG_LIST);
gate.send(MAIN_PORT, packet, false);
}
}
*/
/**
* 请求得到讨论组列表
*
* @param clusterId
* 群id
*/
/* public void getSubjectList(int clusterId) {
if(user.isLoggedIn()) {
ClusterSubClusterOpPacket packet = new ClusterSubClusterOpPacket(user);
packet.setOpByte(QQ.QQ_CLUSTER_SUB_CMD_GET_SUBJECT_LIST);
packet.setClusterId(clusterId);
gate.send(MAIN_PORT, packet, false);
}
}
*/
/**
* 通用方法,发送一个packet
* 这个方法用在一些包构造比较复杂的情况下,比如上传分组信息这种包,
* 包中数据的来源是无法知道的也不是用几个参数就能概括的,可能也和实现有关。
*
* @param packet OutPacket子类
*/
public void sendPacket(OutPacket packet) {
if(user.isLoggedIn())
gate.send(MAIN_PORT, packet, true);
}
/**
* 通过指定port发送一个包
*
* @param packet
* @param port
*/
public void sendPacket(OutPacket packet, String port) {
sendPacket(packet, port, true);
}
/**
* 通过指定port发送一个包
*
* @param packet
* 输出包对象
* @param port
* port名称
* @param monitor
* true表示加入到包监视缓冲
*/
public void sendPacket(OutPacket packet, String port, boolean monitor) {
if(user.isLoggedIn())
gate.send(port, packet, monitor);
}
/**
* 不管有没有登录,都把包发出去
*
* @param packet
* @param port
*/
public void sendPacketAnyway(OutPacket packet, String port) {
gate.send(port, packet, true);
}
/**
* 执行一些退出会话的清楚工作
*
* @param pg
* @param p
*/
private void clean(PortGate pg, Porter p) {
CleanRunnable cleanRunnable = new CleanRunnable(pg, p);
new Thread(cleanRunnable).start();
}
/**
* @return 登陆服务器IP
*/
public String getLoginServer() {
return loginServer;
}
/**
* @return Returns the user.
*/
public QQUser getUser() {
return user;
}
/**
* 添加一个QQ事件监听器
*
* @param listener
* QQListener
*/
public void addQQListener(IQQListener listener) {
if(!qqListeners.contains(listener)) {
qqListeners.add(listener);
setListenerChanged(true);
}
}
/**
* 移去一个QQ事件监听器
* @param listener QQListener
*/
public void removeQQListener(IQQListener listener) {
if(qqListeners.contains(listener)) {
qqListeners.remove(listener);
setListenerChanged(true);
}
}
/**
* 设置listener changed标志
*
* @param b
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -