Package iqq.im.module

Source Code of iqq.im.module.ChatModule

package iqq.im.module;

import iqq.im.QQActionListener;
import iqq.im.action.GetCustomFaceSigAction;
import iqq.im.action.GetGroupPicAction;
import iqq.im.action.GetOffPicAction;
import iqq.im.action.GetSessionMsgSigAction;
import iqq.im.action.GetUserPicAction;
import iqq.im.action.SendInputNotifyAction;
import iqq.im.action.SendMsgAction;
import iqq.im.action.ShakeWindowAction;
import iqq.im.action.UploadCustomFaceAction;
import iqq.im.action.UploadOfflinePictureAction;
import iqq.im.bean.QQMsg;
import iqq.im.bean.QQStranger;
import iqq.im.bean.QQUser;
import iqq.im.bean.content.CFaceItem;
import iqq.im.bean.content.OffPicItem;
import iqq.im.event.QQActionEvent;
import iqq.im.event.QQActionFuture;
import iqq.im.event.future.ProcActionFuture;

import java.io.File;
import java.io.OutputStream;

/**
* 消息处理
*
* @author ChenZhiHui
* @since 2013-2-25
*/
public class ChatModule extends AbstractModule {
  private QQActionFuture doSendMsg( QQMsg msg, QQActionListener listener) {
    return pushHttpAction(new SendMsgAction(getContext(), listener, msg));
  }
 
  /**
   * <p>sendMsg.</p>
   *
   * @param msg a {@link iqq.im.bean.QQMsg} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture sendMsg(final QQMsg msg, QQActionListener listener) {
    if(msg.getType() == QQMsg.Type.SESSION_MSG) {
      final ProcActionFuture future = new ProcActionFuture(listener, true);
      QQStranger stranger = (QQStranger) msg.getTo();
      if(stranger.getGroupSig() == null || stranger.getGroupSig().equals("")) {
        getSessionMsgSig(stranger, new QQActionListener() {
          @Override
          public void onActionEvent(QQActionEvent event) {
            if(event.getType() == QQActionEvent.Type.EVT_OK) {
              if(!future.isCanceled()){
                doSendMsg(msg, future);
              }
            }else if(event.getType() == QQActionEvent.Type.EVT_ERROR){
              future.notifyActionEvent(event.getType(), event.getTarget());
            }
          }
        });
      }
      return future;
    } else if(msg.getType() == QQMsg.Type.GROUP_MSG || msg.getType() == QQMsg.Type.DISCUZ_MSG) {
      if(getContext().getSession().getCfaceKey() == null || getContext().getSession().getCfaceKey().equals("")) {
        final ProcActionFuture future = new ProcActionFuture(listener, true);
        getCFaceSig(new QQActionListener() {
         
          @Override
          public void onActionEvent(QQActionEvent event) {
            if(event.getType() == QQActionEvent.Type.EVT_OK) {
              if(!future.isCanceled()){
                doSendMsg(msg, future);
              }
            }else if(event.getType() == QQActionEvent.Type.EVT_ERROR){
              future.notifyActionEvent(event.getType(), event.getTarget());
            }
          }
        });
        return future;
      }
    }
    return doSendMsg(msg, listener);
  }
 
  /**
   * <p>getSessionMsgSig.</p>
   *
   * @param user a {@link iqq.im.bean.QQStranger} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture getSessionMsgSig(QQStranger user, QQActionListener listener) {
    return pushHttpAction(new GetSessionMsgSigAction(getContext(), listener, user));
  }

  /**
   * <p>uploadOffPic.</p>
   *
   * @param user a {@link iqq.im.bean.QQUser} object.
   * @param file a {@link java.io.File} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture uploadOffPic(QQUser user, File file, QQActionListener listener) {
    return pushHttpAction(new UploadOfflinePictureAction(getContext(), listener, user, file));
  }
 
  /**
   * <p>uploadCFace.</p>
   *
   * @param file a {@link java.io.File} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture uploadCFace(File file, QQActionListener listener) {
    return pushHttpAction(new UploadCustomFaceAction(getContext(),
        listener, file));
  }
 
  /**
   * <p>getCFaceSig.</p>
   *
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture getCFaceSig(QQActionListener listener) {
    return pushHttpAction(new GetCustomFaceSigAction(getContext(), listener));
  }
 
  /**
   * <p>sendShake.</p>
   *
   * @param user a {@link iqq.im.bean.QQUser} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture sendShake(QQUser user, QQActionListener listener){
    return pushHttpAction(new ShakeWindowAction(getContext(), listener, user));
  }
 
  /**
   * <p>getOffPic.</p>
   *
   * @param offpic a {@link iqq.im.bean.content.OffPicItem} object.
   * @param msg a {@link iqq.im.bean.QQMsg} object.
   * @param picout a {@link java.io.OutputStream} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture getOffPic(OffPicItem offpic, QQMsg msg,
                  OutputStream picout, QQActionListener listener){
    return pushHttpAction(new GetOffPicAction(getContext(), listener, offpic, msg, picout));
  }
 
  /**
   * <p>getUserPic.</p>
   *
   * @param cface a {@link iqq.im.bean.content.CFaceItem} object.
   * @param msg a {@link iqq.im.bean.QQMsg} object.
   * @param picout a {@link java.io.OutputStream} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture getUserPic(CFaceItem cface, QQMsg msg,
      OutputStream picout, QQActionListener listener){
    return pushHttpAction(new GetUserPicAction(getContext(), listener, cface, msg, picout));
  }
 
  /**
   * <p>getGroupPic.</p>
   *
   * @param cface a {@link iqq.im.bean.content.CFaceItem} object.
   * @param msg a {@link iqq.im.bean.QQMsg} object.
   * @param picout a {@link java.io.OutputStream} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture getGroupPic(CFaceItem cface, QQMsg msg,
      OutputStream picout, QQActionListener listener){
    return pushHttpAction(new GetGroupPicAction(getContext(), listener, cface, msg, picout));
  }
 
  /**
   * <p>sendInputNotify.</p>
   *
   * @param user a {@link iqq.im.bean.QQUser} object.
   * @param listener a {@link iqq.im.QQActionListener} object.
   * @return a {@link iqq.im.event.QQActionFuture} object.
   */
  public QQActionFuture sendInputNotify(QQUser user, QQActionListener listener){
    return pushHttpAction(new SendInputNotifyAction(getContext(), listener, user));
  }
}
TOP

Related Classes of iqq.im.module.ChatModule

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.