void QWidgetPrivate::show_sys() { Q_Q(QWidget); if (q->testAttribute(Qt::WA_OutsideWSRange)) return; Q_ASSERT(q->testAttribute(Qt::WA_WState_Created)); q->setAttribute(Qt::WA_Mapped); if (q->testAttribute(Qt::WA_DontShowOnScreen)) { invalidateBuffer(q->rect()); return; } if (q->internalWinId()) { if (!extra->activated) activateSymbianWindow(); QSymbianControl *id = static_cast<QSymbianControl *>(q->internalWinId()); const bool isFullscreen = q->windowState() & Qt::WindowFullScreen; const TBool cbaRequested = q->windowFlags() & Qt::WindowSoftkeysVisibleHint; #ifdef Q_WS_S60 // Lazily initialize the S60 screen furniture when the first window is shown. if (q->isWindow() && !QApplication::testAttribute(Qt::AA_S60DontConstructApplicationPanes) && !S60->buttonGroupContainer() && !S60->statusPane()) { if (!q->testAttribute(Qt::WA_DontShowOnScreen)) { // Create the status pane and CBA here CEikAppUi *ui = static_cast<CEikAppUi *>(S60->appUi()); MEikAppUiFactory *factory = CEikonEnv::Static()->AppUiFactory(); QT_TRAP_THROWING( factory->CreateResourceIndependentFurnitureL(ui); TRect boundingRect = static_cast<CEikAppUi*>(S60->appUi())->ClientRect(); CEikButtonGroupContainer *cba = CEikButtonGroupContainer::NewL(CEikButtonGroupContainer::ECba, CEikButtonGroupContainer::EHorizontal,ui,R_AVKON_SOFTKEYS_EMPTY_WITH_IDS); if (isFullscreen && !cbaRequested) cba->MakeVisible(false); CEikButtonGroupContainer *oldCba = factory->SwapButtonGroup(cba); Q_ASSERT(!oldCba); S60->setButtonGroupContainer(cba); // If the creation of the first widget is delayed, for example by doing it // inside the event loop, S60 somehow "forgets" to set the visibility of the // toolbar (the three middle softkeys) when you flip the phone over, so we // need to do it ourselves to avoid a "hole" in the application, even though // Qt itself does not use the toolbar directly.. CAknAppUi *appui = dynamic_cast<CAknAppUi *>(CEikonEnv::Static()->AppUi()); if (appui) { CAknToolbar *toolbar = appui->PopupToolbar(); if (toolbar && !toolbar->IsVisible()) toolbar->SetToolbarVisibility(ETrue); } CEikMenuBar *menuBar = new(ELeave) CEikMenuBar; menuBar->ConstructL(ui, 0, R_AVKON_MENUPANE_EMPTY); menuBar->SetMenuType(CEikMenuBar::EMenuOptions); S60->appUi()->AddToStackL(menuBar,ECoeStackPriorityMenu,ECoeStackFlagRefusesFocus); CEikMenuBar *oldMenu = factory->SwapMenuBar(menuBar); Q_ASSERT(!oldMenu); ) if (S60->statusPane()) { // Use QDesktopWidget as the status pane observer to proxy for the AppUi. // Can't use AppUi directly because it privately inherits from MEikStatusPaneObserver. QSymbianControl *desktopControl = static_cast<QSymbianControl *>(QApplication::desktop()->winId()); S60->statusPane()->SetObserver(desktopControl); if (isFullscreen) { const bool cbaVisible = S60->buttonGroupContainer() && S60->buttonGroupContainer()->IsVisible(); S60->setStatusPaneAndButtonGroupVisibility(false, cbaVisible); } } } }
void CBCTestAppFrmAknAppUICase::TestPublicFunction() { /*********************************************************/ /*CAknAppUi*/ /*********************************************************/ CAknAppUi* iAknAppUI = static_cast<CAknAppUi*> ( CEikonEnv::Static()->EikAppUi() ); iAknAppUI->Cba(); _LIT( KCAknAppUiCba, "CAknAppUi::Cba() invoked" ); AssertTrueL( ETrue, KCAknAppUiCba ); iAknAppUI->CurrentPopupToolbar(); _LIT( KCurrentPopupToolbar, "CAknAppUi::CurrentPopupToolbar() invoked" ); AssertTrueL( ETrue, KCurrentPopupToolbar ); TInt iErrCode = KErrNone; SExtendedError iExtErr; TBuf<16> iErrorText; TBuf<16> iContextText; iAknAppUI->HandleError( iErrCode, iExtErr, iErrorText, iContextText ); _LIT( KCAknAppUiHandleError , "CAknAppUi::HandleError() invoked" ); AssertTrueL( ETrue, KCAknAppUiHandleError); iAknAppUI->TouchPane(); _LIT( KTouchPane ,"CAknAppUi::TouchPane() invoked" ); AssertTrueL( ETrue, KTouchPane ); iAknAppUI->PopupToolbar(); _LIT( KPopupToolbar , "CAknAppUi::PopupToolbar() invoked" ); AssertTrueL( ETrue, KPopupToolbar ); iAknAppUI->HandleTouchPaneSizeChange(); _LIT( KHandleTouchPaneSizeChange , "CAknAppUi::HandleTouchPaneSizeChange() invoked" ); AssertTrueL( ETrue, KHandleTouchPaneSizeChange ); TBool iHide = ETrue; iAknAppUI->HideApplicationFromFSW( iHide ); _LIT( KHideApplicationFromFSW , "CAknAppUi::HideApplicationFromFSW() invoked" ); AssertTrueL( ETrue, KHideApplicationFromFSW ); iAknAppUI->IsAppShutterRunning(); _LIT( KIsAppShutterRunning , "CAknAppUi::IsAppShutterRunning() invoked" ); AssertTrueL( ETrue, KIsAppShutterRunning); iAknAppUI->ProcessCommandL( 100 ); _LIT( KProcessCommandL,"CAknAppUi::ProcessCommandL() invoked" ); AssertTrueL( ETrue, KProcessCommandL); /*********************************************************/ /*CAknAppUiBase*/ /*********************************************************/ CAknAppUiBase* iAknAppUIBase = static_cast<CAknAppUiBase*> ( CEikonEnv::Static()->EikAppUi() ); iAknAppUIBase->IsFullScreenApp(); _LIT( KIsFullScreenApp , "CAknAppUIBase::IsFullScreenApp() invoked" ); AssertTrueL( ETrue, KIsFullScreenApp ); iAknAppUIBase->IsPartialForeground(); _LIT( KIsPartialForeground, "CAknAppUIBase::IsPartialForeground() invoked" ); AssertTrueL( ETrue, KIsPartialForeground ); iAknAppUIBase->LocalUiZoom(); _LIT( KLocalUiZoom ,"CAknAppUIBase::LocalUiZoom() invoked" ); AssertTrueL( ETrue, KLocalUiZoom ); iAknAppUIBase->Orientation(); _LIT( KOrientation , "CAknAppUIBase::Orientation() invoked" ); AssertTrueL( ETrue, KOrientation ); iAknAppUIBase->SetLayoutAwareApp( ETrue ); _LIT( KSetLayoutAwareApp , "CAknAppUIBase::SetLayoutAwareApp() invoked" ); AssertTrueL( ETrue, KSetLayoutAwareApp ); iAknAppUIBase->SetLocalUiZoomL( EAknUiZoomNormal ); _LIT( KSetLocalUiZoomL , "CAknAppUIBase::SetLocalUiZoomL() invoked" ); AssertTrueL( ETrue, KSetLocalUiZoomL ); iAknAppUIBase->HandleForegroundEventL( ETrue ); _LIT( KHandleForegroundEventL, "CAknAppUIBase::HandleForegroundEventL() invoked" ); AssertTrueL( ETrue, KHandleForegroundEventL ); iAknAppUIBase->SetOrientationL( iAknAppUIBase->Orientation() ); _LIT( KSetOrientationL, "CAknAppUIBase::SetOrientationL() invoked" ); AssertTrueL( ETrue, KSetOrientationL); }