⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phoneobserver.cpp

📁 play stream media file. OS: symbian s60
💻 CPP
字号:
/*
* ============================================================================
*  Name     : Phoneobserver.cpp
*  Part of  : RecorderExample
*  Created  : 20.03.2005 by Forum Nokia
*  Version  : 1.0.0
*  Copyright: Nokia Corporation
* ============================================================================
*/


//INCLUDES
#include <e32base.h>

#include <e32std.h> 

#include <etel.h>

#include "phoneobserver.h"
#include "recorderview.h"
#include "recorder.hrh"

// ---------------------------------------------------------
// CPhoneObserver::CPhoneObserver()
// C++ default constructor
// ---------------------------------------------------------
CPhoneObserver::CPhoneObserver(): CActive(EPriorityStandard)
{
}

// ---------------------------------------------------------
// CPhoneObserver::~CPhoneObserver()
// C++ destructor
// ---------------------------------------------------------
CPhoneObserver::~CPhoneObserver()
{
	Cancel();
}


// ---------------------------------------------------------
// CPhoneObserver::NewL()
// Two phase constructor
// ---------------------------------------------------------
CPhoneObserver* CPhoneObserver::NewL(CRecorderView* aRecView, RLine* aLine)
{
    CPhoneObserver* self = NewLC(aRecView, aLine);
    CleanupStack::Pop(self); 
    return self;
}

// ---------------------------------------------------------
// CPhoneObserver::NewLC()
// ---------------------------------------------------------
CPhoneObserver* CPhoneObserver::NewLC(CRecorderView* aRecView, RLine* aLine)
{
    CPhoneObserver* self = new (ELeave) CPhoneObserver();
    CleanupStack::PushL(self);
    self->ConstructL(aRecView, aLine);
    return self;
}

// ---------------------------------------------------------
// CPhoneObserver::RunL()
// Called by active object framework when line event occurs
// ---------------------------------------------------------
void CPhoneObserver::RunL()
{
	if (iStatus.Int() == KErrNone)
	{
		if (iLineStatus == RCall::EStatusConnected)
		{
			//If line is connected, recording may start.
			iRecView -> HandleCommandL(EProgCmdRecord);
		}
		else if (iLineStatus == RCall::EStatusHangingUp)
		{
			//If line is hanging up, recorder must stop.
			iRecView -> HandleCommandL(EProgCmdStop);
		}
		
		Start();
	}
	
	
	else
	{
		Cancel();
	}
}

// ---------------------------------------------------------
// CPhoneObserver::RunError()
// Called by active object framework when error occurs
// ---------------------------------------------------------
TInt CPhoneObserver::RunError(TInt Error)
{
	return Error;		
}

// ---------------------------------------------------------
// CPhoneObserver::DoCancel()
// Cancels active objects callback request
// ---------------------------------------------------------
void CPhoneObserver::DoCancel()
{
	iLine -> NotifyStatusChangeCancel();
}


// ---------------------------------------------------------
// CPhoneObserver::ConstructL()
// 
// ---------------------------------------------------------
void CPhoneObserver::ConstructL(CRecorderView* aRecView, RLine* aLine)
{
	iRecView = aRecView;
	iLine = aLine;
	
    CActiveScheduler::Add(this);
}

 
 // ---------------------------------------------------------
 // CPhoneObserver::Start()
 // Active object is activated
 // ---------------------------------------------------------
void CPhoneObserver::Start()
{
	Cancel();
			
	iLine -> NotifyStatusChange(iStatus, iLineStatus);
	SetActive();
}

// ---------------------------------------------------------
// CPhoneObserver::Deactivate()
// Active object is canceled outside of this class.
// ---------------------------------------------------------
void CPhoneObserver::Deactivate()
{
	DoCancel();
}
   
   
// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -