⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aknexgridviewasmenu.cpp

📁 symbian 格子的生成和使用源代码 让你明白九宫格生成原理 适合游戏开发
💻 CPP
字号:
/* Copyright (c) 2004, Nokia. All rights reserved */


// INCLUDE FILES
#include <aknviewappui.h>
#include <avkon.hrh>
#include <AknGridView.h>
#include <akntitle.h>
#include <AknExGrid.rsg>

#include "AknExGridAppUi.h"
#include "AknExGridView.h"
#include "AknExGridViewAsMenu.h"
#include "AknExGridContainerAsMenu.h"
#include "AknExGrid.hrh"


// ============================ MEMBER FUNCTIONS ===============================

// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CAknExGridViewAsMenu* CAknExGridViewAsMenu::NewL()
    {
    CAknExGridViewAsMenu* self = CAknExGridViewAsMenu::NewLC();
    CleanupStack::Pop( self );
    return self;
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::NewLC()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CAknExGridViewAsMenu* CAknExGridViewAsMenu::NewLC()
    {
    CAknExGridViewAsMenu* self = new ( ELeave ) CAknExGridViewAsMenu();
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMenu::ConstructL()
    {
    BaseConstructL( R_EXGR_VIEW_MENU );
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::~CAknExGridViewAsMenu()
// Destructor.
// -----------------------------------------------------------------------------
//
CAknExGridViewAsMenu::~CAknExGridViewAsMenu()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromStack( iContainer );
        }

    delete iContainer;
    }

// -----------------------------------------------------------------------------
// TUid CAknExGridViewAsMenu::Id()
// Returns the View Id.
// -----------------------------------------------------------------------------
//
TUid CAknExGridViewAsMenu::Id() const
    {
    return KViewMenuId;
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::HandleCommandL()
// Handles the commands.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMenu::HandleCommandL( TInt aCommand )
    {
    TBuf<KLengthOfAboutString> aboutString;

    switch ( aCommand )
        {
        case EAknSoftkeyBack:
            {
            CEikStatusPane *sp = StatusPane();
            CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
                ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
            titlePane->SetTextToDefaultL();
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewId, EAknExGridViewTab );
            break;
            }

        case EAknExGridCmdShowMenu:
            iContainer->ShowGridInMenuL();
            break;

        case EAknExGridCmdNumOfItems:
            iContainer->EnterNumberOfItemsL();
            break;

        case EAknExGridCmdChangeSize:
            iContainer->DetermineChangeSizeL();
            break;

        case EAknExGridCmdFillingOrder:
            iContainer->DetermineFillingOrderL();
            break;

        case EAknExGridCmdLoopingVertFollowLoop:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndLoops );
            break;

        case EAknExGridCmdLoopingVertFollowStop:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndStops );
            break;

        case EAknExGridCmdLoopingVertFollowGrid:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollFollowsGrid );
            break;

        case EAknExGridCmdLoopingVertStopEnd:
            iContainer->SetVerticalScrollingTypeL(
                CAknGridView::EScrollStops );
            break;

        case EAknExGridCmdLoopingHorizFollowLoop:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndLoops );
            break;

        case EAknExGridCmdLoopingHorizFollowStop:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollIncrementLineAndStops );
            break;

        case EAknExGridCmdLoopingHorizFollowGrid:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollFollowsGrid );
            break;

        case EAknExGridCmdLoopingHorizStopEnd:
            iContainer->SetHorizontalScrollingTypeL(
                CAknGridView::EScrollStops );
            break;

        case EAknExGridCmdAbout:
            iCoeEnv->ReadResource(
                aboutString, R_EXGR_TEXT_ABOUT_MENU );
            iEikonEnv->AlertWin( aboutString );
            break;

        case EAknExGridCmdClose:
            {
            CEikStatusPane *sp = StatusPane();
            CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
                ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
            titlePane->SetTextToDefaultL();
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewId, EAknExGridViewTab );
            break;
            }

        case ESGridSoftKeyNext:
            {
            if(iContainer->AutoTestL())
                {
                CEikStatusPane *sp = StatusPane();
                CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
                    ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
                titlePane->SetTextToDefaultL();
                static_cast<CAknExGridAppUi*>( AppUi() )
                    ->ChangeActiveViewAndTabL( KViewId, EAknExGridViewTab );
                }
            break;
            }

        default:
            {
            AppUi()->HandleCommandL( aCommand );
            break;
            }
        }
    }


// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::HandleClientRectChange()
// Handles the size of the clientrect.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMenu::HandleClientRectChange()
    {
    if ( iContainer )
        {
        iContainer->SetRect( ClientRect() );
        }
    }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::DoActivateL()
// Creates the Container class object.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMenu::DoActivateL(
    const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/,
    const TDesC8& /*aCustomMessage*/ )
    {
    iContainer = CAknExGridContainerAsMenu::NewL( ClientRect() );
    iContainer->SetMopParent(this);
    AppUi()->AddToStackL( *this, iContainer );
   }

// -----------------------------------------------------------------------------
// CAknExGridViewAsMenu::DoDeactivate()
// Deletes the Container class object.
// -----------------------------------------------------------------------------
//
void CAknExGridViewAsMenu::DoDeactivate()
    {
    if ( iContainer )
        {
        AppUi()->RemoveFromStack( iContainer );
        }

    delete iContainer;
    iContainer = NULL;
    }

// End of File

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -