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

📄 aknexgridview.cpp

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

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

#include "AknExGridAppUi.h"
#include "AknExGridView.h"
#include "AknExGridViewAsSelection.h"
#include "AknExGridViewAsMenu.h"
#include "AknExGridViewAsMarkableSelection.h"
#include "AknExGridViewAsGMS.h"
#include "AknExGridContainer.h"
#include "AknExGrid.hrh"


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

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

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

// -----------------------------------------------------------------------------
// CAknExGridView::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CAknExGridView::ConstructL()
    {
    iTestNumber=1;
    BaseConstructL( R_EXGR_VIEW_MAIN );
    }

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

    delete iContainer;
    }

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

// -----------------------------------------------------------------------------
// CAknExGridView::HandleCommandL()
// Handles the commands.
// -----------------------------------------------------------------------------
//
void CAknExGridView::HandleCommandL( TInt aCommand )
    {
    CEikStatusPane *sp = StatusPane();
    CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
        ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );

    switch ( aCommand )
        {
        // handle softkeys
        case EAknSoftkeyBack:
            ( static_cast<MEikCommandObserver*>( AppUi() ) )->
                                                ProcessCommandL( EEikCmdExit );
            break;

        // switch the grid view
        case EAknExGridCmdSelection:
            titlePane->SetTextToDefaultL();
            static_cast<CAknExGridAppUi*>( AppUi() )->SetShortcutFlag( EFalse );
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewSelectionId,
                                           EAknExGridViewSelectionTab );
            break;

        case EAknExGridCmdMenu:
            titlePane->SetTextToDefaultL();
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewMenuId, EAknExGridViewMenuTab );
            break;

        case EAknExGridCmdMarkableSelection:
            titlePane->SetTextToDefaultL();
            static_cast<CAknExGridAppUi*>( AppUi() )->SetShortcutFlag( EFalse );
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewMarkableSelectionId,
                                           EAknExGridViewMarkableSelectionTab );
            break;

        case EAknExGridCmdGMSGrid:
            titlePane->SetTextToDefaultL();
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewGMSId, EAknExGridViewGMSTab );
            break;

        case ESGridSoftKeyNext:
            AutoTestL();
            break;

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

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

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

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

    delete iContainer;
    iContainer = NULL;
    }

// -----------------------------------------------------------------------------
// CAknExGridView::AutoTestL()
// Runs different tests.
// -----------------------------------------------------------------------------
//
void CAknExGridView::AutoTestL()
    {
    iTestNumber++;
    switch( iTestNumber )
        {
        case EAknExGridViewSelectionTab:
            static_cast<CAknExGridAppUi*>( AppUi() )->SetShortcutFlag( EFalse );
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewSelectionId,
                                           EAknExGridViewSelectionTab );
            break;
        case EAknExGridViewMenuTab:
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewMenuId, EAknExGridViewMenuTab );
            break;
        case EAknExGridViewMarkableSelectionTab:
            static_cast<CAknExGridAppUi*>( AppUi() )->SetShortcutFlag( EFalse );
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewMarkableSelectionId,
                                           EAknExGridViewMarkableSelectionTab );
            break;
        default:
        case EAknExGridViewGMSTab:
            static_cast<CAknExGridAppUi*>( AppUi() )
                ->ChangeActiveViewAndTabL( KViewGMSId, EAknExGridViewGMSTab );
            iTestNumber=1;
            break;
        }
    }

// End of File

⌨️ 快捷键说明

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