void CRecognizerContainer::ConstructL(const TRect& aRect, CAknView* View, TBool navi) { CALLSTACKITEM_N(_CL("CRecognizerContainer"), _CL("ConstructL")); iView=View; iNavi=navi; iCurrentCodeArray=new RPointerArray<CCodeInfo>; iScreenMsgBuf = CEikonEnv::Static()->AllocReadResourceL(R_CODE_SCREEN_MSG); if (iNavi) { CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane(); CAknNavigationControlContainer *np = (CAknNavigationControlContainer *)sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)); CLocalNotifyWindow* tp=CLocalNotifyWindow::Global(); np->PushDefaultL(ETrue); HBufC * t = iEikonEnv->AllocReadResourceL(R_CHOOSE_CODE); tp->SetTitleText(t); } else { // CEikStatusPane* sp=iEikonEnv->AppUiFactory()->StatusPane(); CLocalNotifyWindow* tp=CLocalNotifyWindow::Global(); tp->SetTitleTextToDefaultL(); } CreateWindowL(); iStandByLabel = new (ELeave) CEikLabel; iStandByLabel->SetContainerWindowL(*this); iStandByLabel->SetTextL(_L("Camera Standby\nClick to resume")); iStandByLabel->SetAlignment(TGulAlignment(EHCenterVCenter)); iStandByLabel->SetExtent(TPoint(0,0), TSize(176,144)); SetRect(aRect); ActivateL(); }
void CMainMenuListContainer::SizeChanged() { CCoeControl::SizeChanged(); if(iBgContext) { iBgContext->SetRect(Rect()); if (&Window()) { iBgContext->SetParentPos(PositionRelativeToScreen()); } } CCoeControlArray::TCursor cursor = Components().Find(ETitleLabel); CEikLabel* label = cursor.Control<CEikLabel>(); const TDesC* titleText = label->Text(); TRect rect = Rect(); CFont* titleFont = FindLargestPossibleFontL(*titleText, rect.Width(), EAknLogicalFontPrimaryFont); label->SetFont(titleFont); CEikonEnv::Static()->ScreenDevice()->ReleaseFont(titleFont); // Set the size of the label, need to think of the descent as well. TSize size = label->MinimumSize(); size.iWidth = rect.Width(); TInt descent = label->Font()->DescentInPixels(); size.iHeight += descent; // Set the pos for the listbox, use the height for the label when doing this. // Also add the descent in pixels to get some space between the label and the // listbox. rect.iTl.iY = descent; TPoint pos(0, descent); label->SetExtent(rect.iTl, size); rect.iTl.iY += size.iHeight; // As default display both rows and hide the scrollbars HideSecondRow(EFalse); iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOff); // Need to set the rect to get the listbox to update its values iListBox->SetRect(rect); TInt listBoxHeight = iListBox->ItemHeight() * iListBox->Model()->NumberOfItems(); if (listBoxHeight > rect.Height()) { // The listbox is to large to fint, hide the row and check again. HideSecondRow(ETrue); iListBox->SetRect(rect); listBoxHeight = iListBox->ItemHeight() * iListBox->Model()->NumberOfItems(); if (listBoxHeight > rect.Height()) { // Show scroll bar only if the height of the listbox is larger then // the rect. iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOn); iListBox->UpdateScrollBarsL(); } } else { // Setting the first item gets the list box positioned correctly on the screen iListBox->ScrollToMakeItemVisible(0); } }