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
00032 #include "MenuApp.h"
00033
00034
00035 const TUid KUidMenuApp = { 0xE800008C };
00036
00037
00038 TUid CExampleApplication::AppDllUid() const
00039 {
00040 return KUidMenuApp;
00041 }
00042
00043
00044
00045 CApaDocument* CExampleApplication::CreateDocumentL()
00046 {
00047 return new (ELeave) CExampleDocument(*this);
00048 }
00049
00050 CExampleDocument::CExampleDocument(CEikApplication& aApp)
00051 : CEikDocument(aApp)
00052 {}
00053
00054
00055
00056
00057 CEikAppUi* CExampleDocument::CreateAppUiL()
00058 {
00059 return new(ELeave) CExampleAppUi;
00060 }
00061
00062
00063
00064 void CExampleAppUi::ConstructL()
00065 {
00066 BaseConstructL();
00067 iAppView = CExampleAppView::NewL(ClientRect());
00068
00069 User::LeaveIfError(iApaLsSession.Connect());
00070 }
00071
00072
00073
00074 CExampleAppUi::~CExampleAppUi()
00075 {
00076
00077 iApaLsSession.Close();
00078 delete iAppView;
00079 }
00080
00081
00082 void CExampleAppUi::HandleCommandL(TInt aCommand)
00083 {
00084 switch (aCommand)
00085 {
00086
00087 case EEikCmdExit:
00088 Exit();
00089 break;
00090
00091
00092 default:
00093 TUid appUid;
00094
00095 appUid.iUid = aCommand;
00096 TApaAppInfo info;
00097
00098
00099 TInt ret = iApaLsSession.GetAppInfo(info,appUid);
00100 if(ret==KErrNone)
00101 {
00102 CApaCommandLine* cmdLn = CApaCommandLine::NewLC();
00103
00104 cmdLn->SetExecutableNameL(info.iFullName);
00105 User::LeaveIfError(iApaLsSession.StartApp(*cmdLn));
00106 CleanupStack::PopAndDestroy(cmdLn);
00107 }
00108 }
00109 }
00110
00111
00112 void CExampleAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
00113 {
00114 if(aResourceId == R_EXAMPLE_FIRST_MENU)
00115 {
00116 CEikMenuPaneItem::SData extraItem;
00117 TRequestStatus status;
00118
00119 iApaLsSession.RegisterListPopulationCompleteObserver(status);
00120 User::WaitForRequest(status);
00121
00122 if (status == KErrNone)
00123 {
00124
00125 TInt ret = iApaLsSession.GetAllApps();
00126 if(ret==KErrNone)
00127 {
00128
00129 TApaAppInfo appInfo;
00130
00131 while ((iApaLsSession.GetNextApp(appInfo)) == KErrNone)
00132 {
00133
00134 extraItem.iCascadeId = 0;
00135 extraItem.iFlags = EEikMenuItemSymbolIndeterminate|EEikMenuItemSymbolOn;
00136
00137 extraItem.iCommandId = appInfo.iUid.iUid;
00138
00139 extraItem.iText = appInfo.iCaption;
00140
00141 aMenuPane->AddMenuItemL(extraItem);
00142 }
00143 }
00144 }
00145
00146 extraItem.iCommandId = EEikCmdExit;
00147 _LIT(KText,"Close");
00148 extraItem.iText = KText;
00149
00150 aMenuPane->AddMenuItemL(extraItem);
00151 }
00152 }
00153
00154
00155 CExampleAppView::CExampleAppView()
00156 {}
00157
00158
00159 CExampleAppView* CExampleAppView::NewL(const TRect& aRect)
00160 {
00161 CExampleAppView* self = new(ELeave) CExampleAppView();
00162 CleanupStack::PushL(self);
00163 self->ConstructL(aRect);
00164 CleanupStack::Pop();
00165 return self;
00166 }
00167
00168 CExampleAppView::~CExampleAppView()
00169 {}
00170
00171
00172 void CExampleAppView::ConstructL(const TRect& aRect)
00173 {
00174
00175 CreateWindowL();
00176
00177 SetRect(aRect);
00178
00179 ActivateL();
00180 }
00181
00182
00183
00184 void CExampleAppView::Draw(const TRect& ) const
00185 {
00186 CWindowGc& gc = SystemGc();
00187 TRect drawRect = Rect();
00188 const CFont* fontUsed;
00189 gc.Clear();
00190 drawRect.Shrink(10,10);
00191 gc.DrawRect(drawRect);
00192 fontUsed = iEikonEnv->TitleFont();
00193 gc.UseFont(fontUsed);
00194 TInt baselineOffset=(drawRect.Height())/2;
00195 _LIT(KText,"Welcome to the menu application example");
00196 gc.DrawText(KText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0);
00197 gc.DiscardFont();
00198 }