CALLNTFY.CPP

//**************************************************************************** 
// Module: AVPHONE.EXE
// File: CALLNTFY.CPP
// Content:
//
//
// Copyright (c) Microsoft Corporation 1995-1997
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//****************************************************************************

#include "precomp.h"

//****************************************************************************
//
// Constructor
//
//****************************************************************************

CCallNotify::CCallNotify()
{

}


CCallNotify::CCallNotify(Conf *pConf)
{
m_pConf = pConf;
}


//****************************************************************************
//
// Destructor
//
//****************************************************************************

CCallNotify::~CCallNotify()
{

}


//****************************************************************************
//
// methods from IUnknown
//
//****************************************************************************

ULONG STDMETHODCALLTYPE CCallNotify::AddRef()
{
return RefCount::AddRef();
}

ULONG STDMETHODCALLTYPE CCallNotify::Release()
{
return RefCount::Release();
}

HRESULT STDMETHODCALLTYPE CCallNotify::QueryInterface(REFIID riid, PVOID * ppvObject)
{
*ppvObject = NULL;

if (riid == IID_IUnknown)
*ppvObject = (PVOID *)this;
else if (riid == IID_INmCallNotify)
*ppvObject = (PVOID *)this;
else
return E_NOINTERFACE;

AddRef();
return S_OK;
}


//****************************************************************************
//
// Sink connection methods
//
//****************************************************************************

HRESULT CCallNotify::Connect(IUnknown * pUnkOuter)
{
return CNotify::Connect(pUnkOuter, IID_INmCallNotify, (IUnknown *)this);
}

HRESULT CCallNotify::Disconnect()
{
return CNotify::Disconnect();
}


//****************************************************************************
//
// Main sink notification methods
//
//****************************************************************************

HRESULT STDMETHODCALLTYPE CCallNotify::Failed(ULONG uError)
{
return S_OK;
}

HRESULT STDMETHODCALLTYPE CCallNotify::Accepted(INmConference *pConference)
{
return S_OK;
}

HRESULT STDMETHODCALLTYPE CCallNotify::NmUI(CONFN uNotify)
{
return S_OK;
}

HRESULT STDMETHODCALLTYPE CCallNotify::StateChanged(NM_CALL_STATE uState)
{
switch (uState)
{
case NM_CALL_RING:

// Query whether to accept the call and notify my Conf object the result.
if (MessageBox(NULL,"Accept incoming call?","Call",MB_YESNO|MB_TASKMODAL)== IDYES)
m_pConf->AcceptCall();
else
m_pConf->RejectCall();
break;

case NM_CALL_REJECTED:

// Notify my Conf object that the call was rejected.
m_pConf->CallRejected();
break;

case NM_CALL_ACCEPTED:

// Notify my Conf object that the call was accepted
m_pConf->CallAccepted();
break;
}
return S_OK;
}