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

📄 aknexgridcontainerasgms.cpp

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

// INCLUDE FILES

#include <akntitle.h>
#include <AknIconArray.h>
#include <AknGMSStyleGrid.h>
#include <AknExGrid.rsg>    // Dialog
#include <AknExGrid.mbg>    // Bitmap

#include "AknExGridContainerAsGMS.h"


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

// -----------------------------------------------------------------------------
// CAknExGridContainerAsGMS::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CAknExGridContainerAsGMS* CAknExGridContainerAsGMS::NewL( const TRect& aRect )
    {
    CAknExGridContainerAsGMS* self = NewLC( aRect );
    CleanupStack::Pop( self );
    return self;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsGMS::NewLC()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CAknExGridContainerAsGMS* CAknExGridContainerAsGMS::NewLC( const TRect& aRect )
    {
    CAknExGridContainerAsGMS* self = new ( ELeave ) CAknExGridContainerAsGMS();
    CleanupStack::PushL( self );
    self->ConstructL( aRect );
    return self;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsGMS::CAknExGridContainerAsGMS()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------

CAknExGridContainerAsGMS::CAknExGridContainerAsGMS()
: iGridGMS( NULL )
    {
    // No implementation required
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsGMS::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsGMS::ConstructL( const TRect& aRect )
    {
    CreateWindowL();

    iTestNumber = 0;

    // Read and set title
    iTitles = iCoeEnv->ReadDesCArrayResourceL( R_EXGR_TITLE_GMS );
    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
    CAknTitlePane* titlePane = static_cast<CAknTitlePane*>
        ( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );

    titlePane->SetTextL( ( *iTitles )[EGMSTest1] );

    // Create grid control
    iGridGMS = CAknGMSStyleGrid::NewL( this );
    iGridGMS->SetContainerWindowL( *this );

    // Load graphics from bitmap resource
    CArrayPtr<CGulIcon>* icons =
            new ( ELeave ) CAknIconArray( KInitialNumOfItemsInGMS );
    CleanupStack::PushL( icons );

    CGulIcon* newIcon1 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridGriditem,
                                EMbmAknexgridGriditemm );
    CleanupStack::PushL( newIcon1 );

    CGulIcon* newIcon2 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridBlacktextonwhite_wbmp );
    CleanupStack::PushL( newIcon2 );

    CGulIcon* newIcon3 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridWhitetextonblack_wbmp );
    CleanupStack::PushL( newIcon3 );

    CGulIcon* newIcon4 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridBlacktextonwhite_ota );
    CleanupStack::PushL( newIcon4 );

    CGulIcon* newIcon5 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridWhitetextonblack_ota );
    CleanupStack::PushL( newIcon5 );

    CGulIcon* onImage = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridMarkon,
                                EMbmAknexgridMarkm );
    CleanupStack::PushL( onImage );

    CGulIcon* offImage = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridMarkoff,
                                EMbmAknexgridMarkm );
    CleanupStack::PushL( offImage );

    // Add graphics to grid
    icons->AppendL( onImage );
    icons->AppendL( offImage );
    icons->AppendL( newIcon1 );
    icons->AppendL( newIcon2 );
    icons->AppendL( newIcon3 );
    icons->AppendL( newIcon4 );
    icons->AppendL( newIcon5 );

    iGridGMS->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );

    CleanupStack::Pop(); // offImage
    CleanupStack::Pop(); // onImage
    CleanupStack::Pop(); // newIcon5
    CleanupStack::Pop(); // newIcon4
    CleanupStack::Pop(); // newIcon3
    CleanupStack::Pop(); // newIcon2
    CleanupStack::Pop(); // newIcon1
    CleanupStack::Pop(); // icons

    // Create grid text
    TBuf< KLengthOfItemResourceString > format;
    iCoeEnv->ReadResource( format, R_EXGR_FORMATSTRING_GMSGRID );

    CDesCArray* array = new ( ELeave )
        CDesCArrayFlat( KInitialNumOfItemsInGMS );

    for ( TInt loop = 0; loop < KInitialNumOfItemsInGMS; loop ++ )
        {
        TBuf< KLengthOfItemResourceString > string;
        if ( loop < 4 )
            string.Format( format, loop+3 );
        else
            string.Format( format, 2 );
        array->AppendL( string );
        }
    iGridGMS->Model()->SetItemTextArray( array );

    iGridGMS->SetupLayout();

    SetRect( aRect );
    ActivateL();

    iGridGMS->HandleItemAdditionL(); // Update the grid size

    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsGMS::~CAknExGridContainerAsGMS()
// Destructor.
// -----------------------------------------------------------------------------
//
CAknExGridContainerAsGMS::~CAknExGridContainerAsGMS()
    {
    delete iGridGMS;
    delete iTitles;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsGMS::ShowPopupGMSGridL()
// Create a popup GMS grid and show it.
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsGMS::ShowPopupGMSGridL()
    {
    // To create a popup GMS grid we first need to
    // construct a regular GMS grid object
    CAknGMSStyleGrid* GMSGrid = new ( ELeave )CAknGMSStyleGrid( ETrue );
    CleanupStack::PushL( GMSGrid );
    CAknGMSPopupGrid* popupGMSGrid = CAknGMSPopupGrid::NewL( GMSGrid,
                                        R_AVKON_SOFTKEYS_SELECT_CANCEL );
    CleanupStack::PushL( popupGMSGrid );
    GMSGrid->ConstructL( popupGMSGrid, KNumOfGMSRows, KNumOfGMSColumns );

    MDesCArray* itemList = GMSGrid->Model()->ItemTextArray();
    CDesCArray* itemArray = static_cast<CDesCArray*>(itemList);

    // Create grid text
    TBuf < KLengthOfItemResourceString > format;
    iCoeEnv->ReadResource( format, R_EXGR_FORMATSTRING_GMSGRID );
    for ( TInt i=0;i<KInitialNumOfItemsInGMS;i++ )
        {
        TBuf< KLengthOfItemResourceString > string;
        if ( i<4 )
            string.Format( format, i+3 );
        else
            string.Format( format, 2 );
        itemArray->AppendL( string );
        }

    // Load graphics from bitmap resource
    CArrayPtr<CGulIcon>* icons =
            new ( ELeave ) CAknIconArray( KInitialNumOfItemsInGMS );
    CleanupStack::PushL( icons );

    CGulIcon* newIcon1 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridGriditem,
                                EMbmAknexgridGriditemm );
    CleanupStack::PushL( newIcon1 );

    CGulIcon* newIcon2 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridBlacktextonwhite_wbmp );
    CleanupStack::PushL( newIcon2 );

    CGulIcon* newIcon3 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridWhitetextonblack_wbmp );
    CleanupStack::PushL( newIcon3 );

    CGulIcon* newIcon4 = CEikonEnv::Static()->CreateIconL(
                                KPathAppMbm,
                                EMbmAknexgridBlacktextonwhite_ota );
    CleanupStack::PushL( newIcon4 );

    CGulIcon* newIcon5 = CEikonEnv::Static()->CreateIconL(

⌨️ 快捷键说明

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