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