📄 retrievenumber.cpp
字号:
/* ====================================================================
* File: RetrieveNumber.cpp
* Created: 07/20/07
* Author:
* Copyright (c): , All rights reserved
* ==================================================================== */
#include "RetrieveNumber.h"
#include <e32base.h>
#include <EIKENV.H>
#include <aknnotewrappers.h>
CRetrieveNumber* CRetrieveNumber::NewL()
{
CRetrieveNumber* self = CRetrieveNumber::NewLC();
CleanupStack::Pop(); // self;
return self;
}
CRetrieveNumber* CRetrieveNumber::NewLC()
{
CRetrieveNumber* self = new ( ELeave ) CRetrieveNumber();
CleanupStack::PushL( self );
self->ConstructL();
return self;
}
CRetrieveNumber::CRetrieveNumber() : CActive( EPriorityStandard ), // Standard priority
iRemParty(iRemInfoUse),
iCallInfo(iCallInfoUse),
iCallSelection(iCallSelectionUse),
iCallStatusPkg(iCallStatus)
{
}
void CRetrieveNumber::ConstructL()
{
iTelephony = CTelephony::NewL();
CActiveScheduler::Add( this );
}
CRetrieveNumber::~CRetrieveNumber()
{
Cancel();
if (iTelephony)
{
delete iTelephony;
iTelephony = NULL;
}
}
void CRetrieveNumber::DoCancel()
{
iTelephony->CancelAsync(CTelephony::EVoiceLineStatusChangeCancel);
}
void CRetrieveNumber::RetrieveNumber()
{
_LIT( KNotifyExamplePanic, "CNotifyExample" );
__ASSERT_ALWAYS( !IsActive(), User::Panic( KNotifyExamplePanic, 1 ));
iTelephony->NotifyChange(iStatus, CTelephony::EVoiceLineStatusChange, iCallStatusPkg);
SetActive();
}
void CRetrieveNumber::RunL()
{
if(iStatus==KErrNone)
{
CTelephony::TCallStatus status = iCallStatus.iStatus;
switch ( status )
{
case CTelephony::EStatusRinging:
{
WriteToFile(_L8("EStatusRinging\n "));
iCallSelectionUse.iLine = CTelephony::EVoiceLine;
iCallSelectionUse.iSelect = CTelephony::EInProgressCall;
iTelephony->GetCallInfo(iCallSelection,iCallInfo,iRemParty);
TBuf8<100> CallerNumber;
CallerNumber.Copy(iRemInfoUse.iRemoteNumber.iTelNumber);
WriteToFile(CallerNumber);
}
break;
case CTelephony::EStatusConnected :
{
WriteToFile(_L8("EStatusConnected\n "));
}
break;
case CTelephony::EStatusAnswering :
{
WriteToFile(_L8("EStatusAnswering\n "));
}
break;
case CTelephony::EStatusDialling:
{
WriteToFile(_L8("EStatusDialling\n "));
}
break;
case CTelephony::EStatusDisconnecting:
{
WriteToFile(_L8("EStatusDisconnecting\n "));
}
break;
case CTelephony::EStatusConnecting:
{
WriteToFile(_L8("EStatusConnecting\n "));
}
break;
case CTelephony::EStatusUnknown:
{
WriteToFile(_L8("EStatusUnknown\n "));
}
break;
case CTelephony::EStatusIdle:
{
WriteToFile(_L8("EStatusIdle\n "));
}
break;
case CTelephony::EStatusReconnectPending:
{
WriteToFile(_L8("EStatusReconnectPending\n "));
}
break;
case CTelephony::EStatusHold:
{
WriteToFile(_L8("EStatusHold\n "));
}
break;
case CTelephony::EStatusTransferring:
{
WriteToFile(_L8("EStatusTransferring\n "));
}
break;
case CTelephony::EStatusTransferAlerting:
{
WriteToFile(_L8("EStatusTransferAlerting\n "));
}
break;
}
iTelephony->NotifyChange( iStatus,
CTelephony::EVoiceLineStatusChange,
iCallStatusPkg );
SetActive();
}
else
{
CEikonEnv::Static()->InfoWinL(_L("Error in:"), _L("status"));
}
}
TInt CRetrieveNumber::RunError( TInt aError )
{
return aError;
}
void CRetrieveNumber::WriteToFile(TDesC8& aContent8)
{
_LIT(KFileSpec,"C:\\Nokia\\LogsTelephony.txt");
TInt iPos=0;
RFs iFs;
User::LeaveIfError(iFs.Connect());
RFile iFile;
TInt err = iFile.Open(iFs, KFileSpec, EFileShareExclusive|EFileStreamText|EFileWrite);
if(err!= KErrNone)
{
if (iFile.Create(iFs, KFileSpec, EFileShareExclusive|EFileStreamText|EFileWrite) != KErrNone)
{
err = iFile.Open(iFs, KFileSpec, EFileShareExclusive|EFileStreamText|EFileWrite);
}
}
err =iFile.Seek(ESeekEnd,iPos);
if (err != KErrNone)
{
TBuf<10> errBuf;
errBuf.AppendNum(err);
CEikonEnv::InfoWinL(_L("Seek Unsuccessful"), errBuf);
}
err = iFile.Write(aContent8);
iFile.Flush();
if (err != KErrNone)
{
TBuf<10> errBuf;
errBuf.AppendNum(err);
CEikonEnv::InfoWinL(_L("Write Unsuccessful"), errBuf);
}
iFile.Close();
iFs.Close();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -