Ejemplo n.º 1
0
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);

    }