亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? recorderview.cpp

?? symbian手機通話錄音程序
?? CPP
字號:
/*
* ============================================================================
*  Name     : RecorderView.cpp
*  Part of  : RecorderExample
*  Created  : 20.03.2005 by Forum Nokia
*  Version  : 1.0.0
*  Copyright: Nokia Corporation
* ============================================================================
*/


// INCLUDE FILES

#include <aknviewappui.h>
#include "recorderadapter.h"

#include <recorder.rsg>

#include "RecorderView.h"
#include "RecorderContainer.h"
#include "ScreenUpdateTimer.h"
#include "phoneobserver.h"

#include <aknselectionlist.h>  //cba
#include <eikcmbut.h> //button

const TInt KInitIncrement = 0;

const TInt KTimerModelHundredths = 100;
const TInt KTimerModelIncrement = 1;
const TBool KTimerModelRunning = ETrue;

_LIT (KTsyName,"phonetsy.tsy");

// ================= MEMBER FUNCTIONS =======================

//----------------------------------------------------------
// C++ default constructor
// ---------------------------------------------------------
CRecorderView::CRecorderView()
                 : iContainer( NULL ),
                   iTimer( NULL )
    {
    }


// ---------------------------------------------------------
// CRecorderView::ConstructL( const TRect& aRect )
// EPOC two-phased constructor
// ---------------------------------------------------------
void CRecorderView::ConstructL()
    {
    	BaseConstructL( R_RECORDER_VIEW1 );
    }

// ---------------------------------------------------------
// CRecorderView::~CRecorderView()
// Destructor.
// ---------------------------------------------------------
CRecorderView::~CRecorderView()
    {
	
    if ( iContainer )
        {
        AppUi()->RemoveFromStack( iContainer );
        }

    delete iTimer;
    iTimer = NULL;

    delete iContainer;
    iContainer = NULL;
    
    delete iRecorderAdapter;
    iRecorderAdapter = NULL;
    
    if (iPhoneObserver != NULL)
    {
    	iPhoneObserver -> Deactivate();
    	delete iPhoneObserver;
		iPhoneObserver = NULL;
    }
	
	//Close line, phone and server 
	UnRegisterLine();

    }

// ---------------------------------------------------------
// TUid CRecorderView::Id()
// returns view Id.
// ---------------------------------------------------------
TUid CRecorderView::Id() const
    {
    return KViewId;
    }


// ---------------------------------------------------------
// CRecorderView::HandleCommandL( TInt aCommand )
// handles commands.
// ---------------------------------------------------------
void CRecorderView::HandleCommandL( TInt aCommand )
{   
   
	switch ( aCommand )
    {
	    case EAknCmdExit:
	    case EAknSoftkeyBack:
	    case EEikCmdExit:
	    
	        //To ensure destroying of the timer object
	        delete iTimer;
	        iTimer = NULL;
	        
	        AppUi()->HandleCommandL( EEikCmdExit );
	        return; // Returns if exit

	    case EProgCmdPlay:

			//Start timer to update progressbar.
	        ConstructTimerModel();
			ConstructTimerL();

			//Start playback from begin
	       	iRecorderAdapter -> StopL(EPause);	         	
	       	iRecorderAdapter -> PlayL();
	       	
	       	//Set progressbar to start position
	      	iContainer -> ResetAllValues( 0, iRecorderAdapter -> GetMaxDuration() );

	        break;

		case EProgCmdRecord:
	        	      				
			ConstructTimerModel();
			ConstructTimerL();

			iRecorderAdapter -> RecordL();
			iContainer -> ResetAllValues( iRecorderAdapter -> GetDuration(), iRecorderAdapter -> GetMaxDuration() );

			break;
	    	
	    case EProgCmdStop:	
	        iRecorderAdapter -> StopL(EStop);
		           
		    delete iTimer;
		    iTimer = NULL;
	        break;
	    	
	    case ERecordActivate:
	    
	    	iContainer -> SetInfo(ETrue);
	    	
	    	//If ETel is not activated 
	    	if (iPhoneObserver == NULL)
	    	{
	    	
	    		//If registering don't success, server,line and phone are closed
	    		TRAPD(error, RegisterLineL());
	    		
				if(error)
				{
					UnRegisterLine();
					User::Leave(error);	
				}

	    		iPhoneObserver = CPhoneObserver::NewL(this, &iLine); 
	    		iPhoneObserver -> Start();  
	    	}
	    	       	
	    	break;
	    	
	    case ERecordDeactivate:
	    
	    	iContainer -> SetInfo(EFalse);
	    	if (iPhoneObserver != NULL)
	    	{
	    	
	        	iPhoneObserver -> Deactivate();
	        	delete iPhoneObserver;
				iPhoneObserver = NULL;
				
				UnRegisterLine();
			    	
	    	}
	    	
	    	break;
	    
		//Pause	is also used from SoftkeyNext
	    case EProgCmdPause:
	    case EProgSoftkeyNext:
	    	{
	
        	//Depending on recorder's status, different functionality is chosen
	    	if (iRecorderAdapter -> GetRecorderStatus() == EPause)
	    	{
	    		ConstructTimerModel();
				ConstructTimerL();
	    		iRecorderAdapter -> PlayCurrentPositionL();
	    		iContainer -> ResetAllValues( iRecorderAdapter -> GetDuration(), iRecorderAdapter -> GetMaxDuration() );
	    	}
	    	else if(iRecorderAdapter -> GetRecorderStatus() == EPlaying)
	    	{
			    delete iTimer;
			    iTimer = NULL;

	       		iRecorderAdapter -> StopL(EPause);
	    	}
	    	else
	    	{
	    	    ConstructTimerModel();
				ConstructTimerL();
				iRecorderAdapter -> StopL(EPause);	 
	    		iRecorderAdapter -> PlayL();        
	    		iContainer -> ResetAllValues(iRecorderAdapter -> GetDuration(), iRecorderAdapter -> GetMaxDuration() );		
	    	}
	 
	    	break;	
	    	
	    	}
	    	
	    default:
	        AppUi()->HandleCommandL( aCommand );
	        return; // returns if default
	       

	} // End switch ( aCommand )
}

// ---------------------------------------------------------
// CRecorderView::HandleClientRectChange()
// 
// ---------------------------------------------------------
void CRecorderView::HandleClientRectChange()
{
	if ( iContainer )
    {
    	iContainer->SetRect( ClientRect() );
    }
}


// ---------------------------------------------------------
// CRecorderView::DoActivateL(...)
// 
// ---------------------------------------------------------
void CRecorderView::DoActivateL(
   const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/,
   const TDesC8& /*aCustomMessage*/ )
{

	iContainer = new( ELeave ) CRecorderContainer;
	iContainer->SetMopParent(this);
	iContainer->ConstructL( ClientRect() );
	AppUi()->AddToStackL( *this, iContainer );

	iRecorderAdapter = CRecorderAdapter::NewL(iContainer);
		
	//RLine can't be used in debugger
	#ifdef __WINS__
	#else
    //initialize iRLine
	TRAPD(error, RegisterLineL());
	if(error)
	{
		UnRegisterLine();
		User::Leave(error);	
	}

	iPhoneObserver = CPhoneObserver::NewL(this, &iLine); 
	iPhoneObserver -> Start();  
	#endif
	
}
 
// ---------------------------------------------------------
// CRecorderView::HandleCommandL( TInt aCommand )
// 
// ---------------------------------------------------------
void CRecorderView::DoDeactivate()
{
	 
    if ( iContainer )
    {
        AppUi()->RemoveFromStack( iContainer );
    }

    delete iTimer;
    iTimer = NULL;
    
    delete iContainer;
    iContainer = NULL;
    
    delete iRecorderAdapter;
    iRecorderAdapter = NULL;

	if ( iPhoneObserver )
		iPhoneObserver -> Deactivate();
	
	delete iPhoneObserver;
	iPhoneObserver = NULL;
}

// ----------------------------------------------------
// CRecorderView::ConstructTimerModel()
// Set Timer Model
// ----------------------------------------------------
void CRecorderView::ConstructTimerModel()
{
    iTimerModel.iHundredths = KTimerModelHundredths;
    iTimerModel.iIncrement = KTimerModelIncrement;
    iTimerModel.iRunning = KTimerModelRunning;
}


// ----------------------------------------------------
// CRecorderView::ConstructTimerL()
// Set Timer
// ----------------------------------------------------
void CRecorderView::ConstructTimerL()
{
	delete iTimer;
	iTimer = NULL;
	
    iTimer = new( ELeave ) CScreenUpdateTimer;
    iTimer->ConstructL( &iTimerModel, iContainer, iRecorderAdapter );
}


// ----------------------------------------------------
// CRecorderView::SetText()
// Set text in error label in container
// ----------------------------------------------------
void CRecorderView::SetText(TDesC& aText)
{
	iContainer -> SetText(aText);
}


// ----------------------------------------------------
// CRecorderView::UnregisterLine()
// Line, phone and server are closed
// ----------------------------------------------------
void CRecorderView::UnRegisterLine()
{
	iLine.Close();
	iPhone.Close();
	iServer.Close();
}

// ----------------------------------------------------
// CRecorderView::RegisterLine()
// Line is activated for later use
// ----------------------------------------------------
void CRecorderView::RegisterLineL()
{
	//Create a connection to the tel server
	User::LeaveIfError(iServer.Connect());

	//Load in the phone device driver
	User::LeaveIfError(iServer.LoadPhoneModule(KTsyName));
	
	//Find the number of phones available from the tel server
	TInt numberPhones;
	User::LeaveIfError(iServer.EnumeratePhones(numberPhones));

	//Check there are available phones
	if (numberPhones < 1)
	{
		User::Leave(KErrNotFound);
	}

	//Get info about the first available phone
	RTelServer::TPhoneInfo info;
	User::LeaveIfError(iServer.GetPhoneInfo(0, info));

	//Use this info to open a connection to the phone, the phone is identified by its name
	User::LeaveIfError(iPhone.Open(iServer, info.iName));

	//Get info about the first line from the phone
	RPhone::TLineInfo lineInfo;
	User::LeaveIfError(iPhone.GetLineInfo(0, lineInfo));

	User::LeaveIfError(iLine.Open(iPhone, lineInfo.iName));
}

//End of File

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频在线看| 国产麻豆视频精品| 亚洲综合免费观看高清完整版在线 | 亚洲人成网站在线| 亚洲国产精品成人综合色在线婷婷 | 91精品国产91久久久久久一区二区 | 国产精品久久久久一区二区三区| 久久亚洲春色中文字幕久久久| 精品国产乱码91久久久久久网站| 日韩免费观看高清完整版| 日韩一区二区三区av| 日韩精品一区二区三区视频| 欧美电视剧在线看免费| 欧美大肚乱孕交hd孕妇| 久久久久久免费网| 国产精品色噜噜| 亚洲精品成a人| 亚洲一区二区三区激情| 日本亚洲免费观看| 麻豆精品在线播放| 国产成人无遮挡在线视频| 国产精品123| 91丨porny丨在线| 欧美性淫爽ww久久久久无| 欧美久久久久久久久久| 精品国产一区二区三区不卡| 国产偷国产偷亚洲高清人白洁| 国产精品久久久久国产精品日日| 亚洲精品成a人| 麻豆成人免费电影| 国产成人在线视频网站| 在线看国产一区| 精品久久久久久久久久久久包黑料| 国产三级精品在线| 一区二区激情小说| 激情成人综合网| av电影在线观看完整版一区二区| 欧洲精品中文字幕| 欧美电影免费观看高清完整版| 国产精品日产欧美久久久久| 亚洲第一搞黄网站| 国产黄人亚洲片| 欧美熟乱第一页| 久久久精品tv| 亚洲二区在线视频| 国产成人综合亚洲91猫咪| 日本精品裸体写真集在线观看| 日韩精品专区在线影院观看| 亚洲天堂精品视频| 久久国产精品第一页| 99国产精品一区| 日韩视频一区二区三区在线播放 | 亚洲色图视频免费播放| 日韩高清不卡一区| av欧美精品.com| 日韩欧美黄色影院| 一区二区视频在线看| 狠狠久久亚洲欧美| 欧洲精品中文字幕| 国产精品美日韩| 久久精品国产亚洲高清剧情介绍| 色综合中文综合网| 国产成人99久久亚洲综合精品| 欧美日韩色一区| 国产精品毛片久久久久久久| 蜜桃av噜噜一区二区三区小说| 日本高清无吗v一区| 国产欧美一区二区精品性色超碰| 天天av天天翘天天综合网| 成人av在线一区二区| 精品女同一区二区| 性做久久久久久久免费看| jlzzjlzz欧美大全| 国产亚洲污的网站| 免费观看在线色综合| 欧美午夜不卡视频| 亚洲码国产岛国毛片在线| 高清不卡在线观看av| 欧美成人综合网站| 天天综合日日夜夜精品| 色综合久久久网| 国产精品久久久久一区二区三区| 国产乱码精品一区二区三区五月婷| 欧美日韩一二区| 亚洲最色的网站| 91免费版在线看| 亚洲视频精选在线| hitomi一区二区三区精品| 国产欧美日韩麻豆91| 韩国视频一区二区| 欧美成人午夜电影| 蜜桃视频第一区免费观看| 69p69国产精品| 视频在线在亚洲| 91麻豆精品国产| 天堂久久一区二区三区| 在线播放中文一区| 日韩高清电影一区| 欧美一区二区久久久| 天天色综合天天| 欧美一级生活片| 日韩av中文在线观看| 日韩欧美亚洲另类制服综合在线| 美女免费视频一区| 2021中文字幕一区亚洲| 国产伦精一区二区三区| 久久精品人人做人人爽人人| 国产成人精品aa毛片| 国产精品天干天干在观线| www.视频一区| 亚洲人午夜精品天堂一二香蕉| 日本乱人伦一区| 午夜精品久久久久久久久久 | 欧美国产精品v| av不卡在线观看| 亚洲欧美日韩精品久久久久| 91女神在线视频| 一卡二卡欧美日韩| 欧美另类变人与禽xxxxx| 蜜臂av日日欢夜夜爽一区| 精品国产91久久久久久久妲己| 韩国三级电影一区二区| 中文字幕av一区二区三区| 91蜜桃免费观看视频| 亚洲成人www| 欧美大肚乱孕交hd孕妇| 成人三级在线视频| 樱花影视一区二区| 日韩一级片在线播放| 国产成人免费视频| 一区二区三区精密机械公司| 欧美精品99久久久**| 国产一区二区三区四区五区美女 | 日韩一卡二卡三卡| 国产成人精品影视| 亚洲最色的网站| 日韩一区二区三区视频在线观看| 国产一区二区三区在线观看精品| 综合激情网...| 91麻豆精品国产自产在线| 国产精品综合一区二区| 一区二区三区视频在线观看 | 日韩高清国产一区在线| 国产亚洲精品免费| 欧美性大战久久| 国产乱码精品1区2区3区| 亚洲免费伊人电影| 日韩一本二本av| www.欧美精品一二区| 日韩1区2区日韩1区2区| 国产欧美日韩精品一区| 欧美日韩国产免费| 国产福利一区在线观看| 性欧美疯狂xxxxbbbb| 日本一区二区三级电影在线观看| 欧美日韩国产精品成人| 粉嫩绯色av一区二区在线观看 | 99re视频精品| 美女一区二区三区| 成人免费视频在线观看| 欧美成人精品二区三区99精品| 91小视频在线免费看| 精品一区二区久久| 亚洲嫩草精品久久| 亚洲成人福利片| 国产精品美女久久久久高潮| 欧美一级二级三级乱码| 99国产精品一区| 国产精品白丝jk黑袜喷水| 亚洲mv在线观看| 亚洲欧美中日韩| 久久久精品免费观看| 欧美一区二区三区啪啪| 欧美最猛性xxxxx直播| 不卡电影一区二区三区| 国产美女视频91| 天堂av在线一区| 亚洲精品va在线观看| 国产精品久线观看视频| 2023国产一二三区日本精品2022| 666欧美在线视频| 久久久不卡影院| 欧美一区在线视频| 欧美亚洲综合在线| 91网站最新网址| 成人免费视频app| 国产制服丝袜一区| 日韩精品色哟哟| 午夜精品久久久久久久久久久| 一区二区三区免费在线观看| 亚洲欧洲另类国产综合| 国产精品毛片无遮挡高清| 国产日产欧美一区二区视频| 久久久青草青青国产亚洲免观| 欧美成人女星排名| 精品日韩一区二区三区| 日韩欧美国产三级| 日韩一区二区免费在线电影| 日韩三级在线观看| 日韩一级片网址|