CallManager.h 2.24 KB
#ifndef _CALL_MANAGER_H__
#define _CALL_MANAGER_H__

#include <QtCore>
class Notification;
class RSessVoice;
class RSessVideo;
class RSession;
class RCallManager : public QObject
{
    Q_OBJECT

public:
    RCallManager(QObject *parent = 0);

    static RCallManager *Instance();

    bool init();
    int getSessId();

    void setMicphone(const QString &id);
    QString getMicphone();
    void setSpeaker(const QString &id);
    QString getSpeaker();
    void setCamera(const QString &id);
    QString getCamera();

    bool startSess(const QString &qsPhone, bool bVideo);
    void rmvSession(RSession * pSession);
    void endAllSess();
    bool hasAudio();
    bool hasVideo();

    void showRefreshOk();
    void showCallInComing(unsigned int dwSessId);
    void showCallOutgoing(unsigned int dwSessId);
    void showCallAlerted(unsigned int dwSessId);
    void showCallConnecting(unsigned int dwSessId);
    void showCallTalking(unsigned int dwSessId);
    void showCallTermed(unsigned int dwSessId);
    void showCallVideoSize(unsigned int dwSessId, unsigned int dwWidth,
                unsigned int dwHeight, unsigned int dwOrientation);
    void showCallCaptureSize(unsigned int dwSessId, unsigned int dwWidth,
                unsigned int dwHeight);
    
    static void MtcCallInComing(unsigned int dwSessId);
    static void MtcCallOutgoing(unsigned int dwSessId);
    static void MtcCallAlerted(unsigned int dwSessId, unsigned int dwAlertType);
    static void MtcCallConnecting(unsigned int dwSessId);
    static void MtcCallTalking(unsigned int dwSessId);
    static void MtcCallTermed(unsigned int dwSessId, unsigned int dwStatCode, const char *pcReason);
   
signals:
    void CallIncoming(const QString name,const QString img);//来电信号
    void CallOutgoing(QString);//挂掉信号

private Q_SLOTS:
    void onServiceEvent(const QString &name, size_t cookie, const Notification &info);

private:
    void initCallback();
    bool startAudioDevice();
    void stopAudioDevice();

public:
    RSession *m_pRSession;

private:

    RSessVoice *m_pSessVoice;
    RSessVideo *m_pSessVideo;

    static RCallManager *m_psRCallManager;

    QString m_qsMicphone;
    QString m_qsSpeaker;
    QString m_qsCamera;
    bool m_bAudioStarted;
};

#endif /* _CALL_MANAGER_H__ */