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 "CLifeEngine.h"
00032 #include "Direct.h"
00033 #include "CDirectDisplayLife.h"
00034
00035 #include <eikenv.h>
00036 #include <eikmenub.h>
00037
00038 #include <eikspane.h>
00039
00040 #include <eikstart.h>
00041
00042
00043
00044
00045
00046 CExampleAppView::CExampleAppView(CLifeEngine& aLifeEngine)
00047 : iLifeEngine(aLifeEngine)
00048 {
00049 }
00050
00051 void CExampleAppView::ConstructL(const TRect& aRect)
00052 {
00053
00054 CreateWindowL();
00055 SetRect(aRect);
00056
00057
00058 iDirectDisplayLife = new (ELeave) CDirectDisplayLife (
00059 iEikonEnv->WsSession(),
00060 Window(),
00061 iLifeEngine);
00062 iDirectDisplayLife -> ConstructL();
00063
00064 ActivateL();
00065 }
00066
00067 CExampleAppView::~CExampleAppView()
00068 {
00069 delete iDirectDisplayLife;
00070 }
00071
00072
00073 void CExampleAppView::StartDirectL()
00074 {
00075 iDirectDisplayLife -> StartL();
00076 iState = EDirectStarted;
00077 }
00078
00079
00080 void CExampleAppView::PauseDirect()
00081 {
00082 iState = EDirectPaused;
00083 iDirectDisplayLife -> Cancel();
00084 }
00085
00086
00087 void CExampleAppView::RestartDirect()
00088 {
00089 iState = EDirectStarted;
00090 iDirectDisplayLife -> Restart(RDirectScreenAccess::ETerminateCancel);
00091 }
00092
00093
00094 TInt CExampleAppView::State() const
00095 {
00096 return iState;
00097 }
00098
00099
00100 void CExampleAppView::Draw(const TRect& ) const
00101 {
00102 CWindowGc& gc = SystemGc();
00103
00104 TRect rect=Rect();
00105 gc.SetPenStyle(CGraphicsContext::ENullPen);
00106 gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
00107 gc.SetBrushColor(KRgbWhite);
00108 gc.DrawRect(rect);
00109
00110 rect.Shrink(10,10);
00111 gc.SetBrushStyle(CGraphicsContext::ENullBrush);
00112 gc.SetPenStyle(CGraphicsContext::ESolidPen);
00113 gc.DrawRect(rect);
00114 }
00115
00116
00117
00118
00119
00120
00121 void CExampleAppUi::ConstructL()
00122 {
00123 BaseConstructL();
00124
00125
00126 iAppView=new(ELeave) CExampleAppView(static_cast<CExampleDocument*>(Document())->LifeEngine());
00127 iAppView->ConstructL(ClientRect());
00128
00129
00130 iOverlayDialog = new (ELeave) COverlayDialog();
00131 CActiveScheduler::Add(iOverlayDialog);
00132 }
00133
00134 CExampleAppUi::~CExampleAppUi()
00135 {
00136 delete iAppView;
00137 iOverlayDialog->Cancel();
00138 delete iOverlayDialog;
00139 }
00140
00141
00142 void CExampleAppUi::HandleCommandL(TInt aCommand)
00143 {
00144 switch (aCommand)
00145 {
00146
00147 case EExampleCmd1:
00148
00149
00150 if (iAppView -> State() == CExampleAppView::EDirectNotStarted)
00151 iAppView -> StartDirectL();
00152 else
00153 {
00154 iAppView -> PauseDirect();
00155 static_cast<CExampleDocument*>(Document())->LifeEngine().Reset();
00156 iAppView -> RestartDirect();
00157 }
00158 break;
00159
00160 case EExampleCmd2:
00161 iOverlayDialog->ShowDialog();
00162 break;
00163
00164 case EEikCmdExit:
00165 Exit();
00166 break;
00167 }
00168 }
00169
00170
00171
00172
00173
00174 CExampleAppUi::COverlayDialog::COverlayDialog()
00175 :CActive(EPriorityStandard)
00176 {
00177 iNotifier.Connect();
00178 }
00179
00180 CExampleAppUi::COverlayDialog::~COverlayDialog()
00181 {
00182 Cancel();
00183 iNotifier.Close();
00184 }
00185
00186 void CExampleAppUi::COverlayDialog::ShowDialog()
00187 {
00188 _LIT(KLine1,"Overlaying dialog");
00189 _LIT(KLine2,"Owned by another thread");
00190 _LIT(KBut,"OK");
00191
00192
00193 iNotifier.Notify(KLine1,KLine2,KBut,KBut,iR,iStatus);
00194 SetActive();
00195 }
00196
00197 void CExampleAppUi::COverlayDialog::RunL()
00198 {
00199
00200 }
00201
00202 void CExampleAppUi::COverlayDialog::DoCancel()
00203 {
00204 }
00205
00206
00207
00208
00209
00210 CExampleDocument::CExampleDocument(CEikApplication& aApp)
00211 : CEikDocument(aApp)
00212 {
00213 }
00214
00215 CExampleDocument::~CExampleDocument()
00216 {
00217 delete iLifeEngine;
00218 }
00219
00220 CLifeEngine& CExampleDocument::LifeEngine() const
00221 {
00222 return *iLifeEngine;
00223 }
00224
00225 CEikAppUi* CExampleDocument::CreateAppUiL()
00226 {
00227
00228 User::After(1);
00229 TTime now;
00230 now.HomeTime();
00231
00232
00233 iLifeEngine = new (ELeave) CLifeEngine(now.Int64());
00234 return new(ELeave) CExampleAppUi;
00235 }
00236
00237
00238
00239
00240
00241 TUid CExampleApplication::AppDllUid() const
00242 {
00243 return KUidExample;
00244 }
00245
00246 CApaDocument* CExampleApplication::CreateDocumentL()
00247 {
00248 return new (ELeave) CExampleDocument(*this);
00249 }
00250
00251
00252
00253
00254
00255 EXPORT_C CApaApplication* NewApplication()
00256 {
00257 return new CExampleApplication;
00258 }
00259
00260
00261 extern TInt E32Main()
00262 {
00263 return EikStart::RunApplication(NewApplication);
00264 }