00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "CDummyAnswer.h"
00032 #include "CMainMenu.h"
00033
00040 CDummyAnswer* CDummyAnswer::NewL(MExecAsync* aController)
00041 {
00042 CDummyAnswer* self = new(ELeave) CDummyAnswer(aController);
00043 CleanupStack::PushL(self);
00044 self->ConstructL();
00045 CleanupStack::Pop(self);
00046 return self;
00047 }
00048
00054 CDummyAnswer::CDummyAnswer(MExecAsync* aController)
00055 : CActive(EPriorityStandard),
00056 iController(aController)
00057 {
00058 iConsole = iController->GConsole();
00059 CActiveScheduler::Add(this);
00060 }
00061
00065 void CDummyAnswer::ExampleComplete()
00066 {
00067 iController->ExecComplete(KNotType);
00068 }
00069
00073 void CDummyAnswer::ConstructL()
00074 {
00075
00076 User::LeaveIfError(iTimer.CreateLocal());
00077 iFirstTime = ETrue;
00078 }
00079
00083 void CDummyAnswer::ResetFirstTime()
00084 {
00085 iFirstTime = ETrue;
00086 }
00087
00092 CDummyAnswer::~CDummyAnswer()
00093 {
00094 Cancel();
00095 iTimer.Close();
00096 }
00097
00101 void CDummyAnswer::StartCount(TTimeIntervalMicroSeconds32 aDelay)
00102 {
00103 _LIT(KDummyAnswerPanic, "CDummyAnswer");
00104 __ASSERT_ALWAYS(!IsActive(), User::Panic(KDummyAnswerPanic, 1));
00105 iTimer.After(iStatus, aDelay);
00106 SetActive();
00107 }
00108
00113 void CDummyAnswer::RunL()
00114 {
00115 if (iStatus != KErrNone)
00116 {
00117 iConsole->Printf(KError);
00118
00119
00120 iConsole->Printf(_L("%d\n"), iStatus.Int());
00121 }
00122 else
00123 {
00124
00125 iConsole->ClearScreen();
00126 iConsole->Printf(KMenuMsg);
00127 iConsole->Printf(KHangupMsg);
00128 iConsole->Printf(_L("Call Duration %d seconds\n"), iCount);
00129 iCount++;
00130 StartCount(1000000);
00131 }
00132 if (iFirstTime)
00133 {
00134 iFirstTime = EFalse;
00135 ExampleComplete();
00136 }
00137 }
00138
00142 void CDummyAnswer::DoCancel()
00143 {
00144 ResetFirstTime();
00145 iCount = 0;
00146 iTimer.Cancel();
00147 }