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

📄 aknexgridcontainerasselection.cpp

📁 symbian 格子的生成和使用源代码 让你明白九宫格生成原理 适合游戏开发
💻 CPP
📖 第 1 页 / 共 3 页
字号:
    aToBottom = iTopToBottom;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::DetermineFillingOrderL()
// show a dialog to determine filling order
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::DetermineFillingOrderL()
    {
    // Create the custom dialog
    CEikDialog* dialog = new ( ELeave ) CAknExGridDialogFillingOrder( this );

    // Launch the dialog
    if ( dialog->ExecuteLD( R_EXGR_THREE_TEXT_FIELD_DIALOG ) )
        {
        // Redraw the application view with the new coordinates.
        SetGridLayoutL();
        }
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::NumberOfColumns()
// Gets the number of columns and
// sets the number of columns to ChangeSize dialog.
// -----------------------------------------------------------------------------
//
TInt CAknExGridContainerAsSelection::NumberOfColumns()
{
    TInt aNumberOfColumns = iNumOfColumns;

    return aNumberOfColumns;
}

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::NumberOfRows()
// Gets the number of rows and set the number of rows to ChangeSize dialog.
// -----------------------------------------------------------------------------
//
TInt CAknExGridContainerAsSelection::NumberOfRows()
    {
    TInt aNumberOfRows = iNumOfRows;

    return aNumberOfRows;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::SetNumberOfColumns()
// Updates the number of columns of Selection Grid
// with the number of columns in ChangeSize dialog.
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::SetNumberOfColumns( TInt aNumberOfColumns )
    {
    iNumOfColumns = aNumberOfColumns;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::SetNumberOfRows()
// Updates the number of rows of Selection Grid
// with the number of rows in ChangeSize dialog.
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::SetNumberOfRows( TInt aNumberOfRows )
    {
    iNumOfRows = aNumberOfRows;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::DetermineChangeSizeL()
// Shows a dialog to determine Change Size
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::DetermineChangeSizeL()
    {
    TInt numberOfColumns = NumberOfColumns();
    TInt numberOfRows = NumberOfRows();
    CAknMultiLineDataQueryDialog* dlg =
        CAknMultiLineDataQueryDialog::NewL( numberOfColumns, numberOfRows );

    if( dlg->ExecuteLD( R_EXGR_DIALOG_CHANGE_SIZE ) == EAknSoftkeyOk )
        {
        SetNumberOfColumns( numberOfColumns );
        SetNumberOfRows( numberOfRows );
        TRect rect = Rect();
        iSizeOfItems.iWidth = ( rect.iBr.iX - rect.iTl.iX ) / iNumOfColumns;
        iSizeOfItems.iHeight = ( rect.iBr.iY - rect.iTl.iY ) / iNumOfRows;
        SetGridLayoutL();

        // If item size changes, need to alter the item style
        ApplySelGridGraphicStyleL();
        }
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::SelectContents()
// Selects a kind of contents.
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::SelectContents( TInt aContents )
    {
    iContentType = aContents;
    ApplySelGridGraphicStyleL();
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::NumberOfItems()
// Gets the number of item in Grid.
// -----------------------------------------------------------------------------
//
TInt CAknExGridContainerAsSelection::NumberOfItems()
    {
    TInt aNumberOfItems = iNumOfItems;
    return aNumberOfItems;

    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::SetNumberOfitems()
// Updates member variables of CAknExGridContainerAsSelection
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::SetNumberOfItems( TInt aNumberOfItems )
    {
    iNumOfItems = aNumberOfItems;
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::EnterNumberOfItemsL()
// Shows dialog to enter the number of items.
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::EnterNumberOfItemsL()
    {
    TInt number = NumberOfItems();
    CAknNumberQueryDialog* dlg =
                new ( ELeave ) CAknNumberQueryDialog(
                                    number,CAknQueryDialog::ENoTone );
    dlg->SetEmergencyCallSupport( EFalse );
    if( dlg->ExecuteLD( R_EXGR_DIALOG_NUMBEROFITEMS ) == EAknSoftkeyOk )
        {
        SetNumberOfItems( number );
        }

    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::CreateGridResourceL()
// Prepares resources for the grid
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::CreateGridResourceL()
    {

    // load graphics
    LoadGraphicsL();

    // create data
    AddDataL( iNumOfItems );

    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::LoadGraphicsL()
// Loads bitmap resources
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::LoadGraphicsL()
    {
    CArrayPtr< CGulIcon >* icons
        = new ( ELeave ) CAknIconArray( KNumberOfBitmap );
    CleanupStack::PushL( icons );

    // Create icon bitmap and mask.
    if ( iGridType == EAknExGridMarkableGrid )
        {
        CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridGriditem );
        CleanupStack::PushL( bitmap );

        CFbsBitmap* mask = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridGriditemm );
        CleanupStack::PushL( mask );
        icons->AppendL( CGulIcon::NewL( bitmap, mask ) );

        CleanupStack::Pop(); // mask
        CleanupStack::Pop(); // bitmap
        }
    else
        {
        CFbsBitmap* bitmap = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridGriditem );
        CleanupStack::PushL( bitmap );

        CFbsBitmap* mask = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridGriditemm );
        CleanupStack::PushL( mask );
        icons->AppendL( CGulIcon::NewL( bitmap, mask ) );

        CleanupStack::Pop(); // mask
        CleanupStack::Pop(); // bitmap
        }

    // If markable grid, add marks ( on/off )
    if ( iGridType == EAknExGridMarkableGrid )
        {
        // mark ( off )
        CFbsBitmap* bitmap2 = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridMarkoff );
        CleanupStack::PushL( bitmap2 );
        CFbsBitmap* mask2 = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridMarkm );
        CleanupStack::PushL( mask2 );
        icons->AppendL( CGulIcon::NewL( bitmap2, mask2 ) );
        CleanupStack::Pop(); // mask
        CleanupStack::Pop(); // bitmap

        // mark ( on )
        CFbsBitmap* bitmap3 = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridMarkon );
        CleanupStack::PushL( bitmap3 );
        CFbsBitmap* mask3 = iEikonEnv->CreateBitmapL( KPathAppMbm,
            EMbmAknexgridMarkm );
        CleanupStack::PushL( mask3 );
        icons->AppendL( CGulIcon::NewL( bitmap3, mask3 ) );
        CleanupStack::Pop(); // mask
        CleanupStack::Pop(); // bitmap
        }

    // Set icon array.
    iGrid->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
    CleanupStack::Pop(); // icons array

    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::SetGridLayoutL()
// Sets layout for the grid
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::SetGridLayoutL()
    {
    // If the grid is created as a menu, iGrid may be NULL.
    if ( iGrid )
        {
        if ( iVerticalOrientation )
            {
            iGrid->SetLayoutL( iVerticalOrientation, iLeftToRight,
                               iTopToBottom, iNumOfRows, iNumOfColumns,
                               iSizeOfItems );
            iGrid->SetPrimaryScrollingType( iVerticalScrollingType );
            iGrid->SetSecondaryScrollingType( iHorizontalScrollingType );
            }
        else
            {
            iGrid->SetLayoutL( iVerticalOrientation, iLeftToRight,
                               iTopToBottom, iNumOfColumns, iNumOfRows,
                               iSizeOfItems );
            iGrid->SetPrimaryScrollingType( iHorizontalScrollingType );
            iGrid->SetSecondaryScrollingType( iVerticalScrollingType );
            }

        iGrid->SetCurrentDataIndex( 0 );

        DrawNow();
        }
    }

// -----------------------------------------------------------------------------
// CAknExGridContainerAsSelection::ApplySelGridGraphicStyleL()
// Applies the layout to cells in the grid
// -----------------------------------------------------------------------------
//
void CAknExGridContainerAsSelection::ApplySelGridGraphicStyleL()
    {

    if ( !iGrid )
        {
        return;
        }

    AknListBoxLayouts::SetupStandardGrid( *iGrid );

    TInt grWidth = 0;
    TInt txWidth = 0;

    switch ( iContentType )
        {
        case EContainText :
            txWidth = iGrid->ColumnWidth();
            break;

        case EContainGraphic :
            grWidth = iGrid->ColumnWidth();
            break;

        case EContainBoth :
            grWidth = iGrid->ColumnWidth() / KTextAreaRatio;
            txWidth = iGrid->ColumnWidth() - grWidth;
            break;

        default :
            break;
        }

    // Layout of the graphic
    // If markable grid
    if ( iGridType == EAknExGridMarkableGrid )
        {
        TInt markTop ( iGrid->ItemHeight() - KAknExGridMarkSize );

        // Setup cell for showing icon.
        AknListBoxLayouts::SetupFormGfxCell(
            *iGrid, iGrid->ItemDrawer(),
            KAknExGridMarkableIconPosition, // index of "Icon" in icon array.
            KAknExGridItemLeft, KAknExGridItemTop,
            0, 0, // these arguments are "Reserved"
            grWidth, markTop,
            TPoint( KAknExGridItemLeft, KAknExGridItemTop ),
            TPoint ( grWidth, markTop )
            );

        // Setup cell for showing mark.
        AknListBoxLayouts::SetupFormGfxCell(
            *iGrid, iGrid->ItemDrawer(),
            KAknExGridMarkableMarkPosition, // index of "Mark( off )" in array.
            KAknExGridItemLeft, markTop,    // left/top in drawing area.
            0, 0, // these arguments are "Reserved"
            KAknExGridMarkSize, KAknExGridMarkSize,
            TPoint( KAknExGridItemLeft, markTop ),
            TPoint ( grWidth, iGrid->ItemHeight() )
            );

        // Setup in order to mark on/off
        iGrid->ItemDrawer()->SetItemMarkPosition(
                                        KAknExGridMarkableMarkPosition );
        iGrid->ItemDrawer()->SetItemMarkReplacement(
                                        KAknExGridMarkableMarkReplace );
        iGrid->ItemDrawer()->SetItemMarkReverse( ETrue );
        }
    else
        {
        AknListBoxLayouts::SetupFormGfxCell( *iGrid, iGrid->ItemDrawer(),
            KIndexOfGraphic, 0, 0, 0, 0,  grWidth, iGrid->ItemHeight(),
            TPoint( 0, 0 ), TPoint( grWidth, iGrid->ItemHeight() ) );
        }

    const CFont* fontText = LatinBold12();
    // layout of text
    if ( iGridType == EAknExGridMarkableGrid )
        {
        AknListBoxLayouts::SetupFormTextCell(
                *iGrid, iGrid->ItemDrawer(),
                KAknExGridMarkableTextPosition, fontText,
                KDefaultTextColor,
                grWidth, 0,
                fontText->HeightInPixels(),
                txWidth,
                CGraphicsContext::ELeft,
                TPoint( grWidth, 0 ),
                TPoint( iGrid->ColumnWidth(), iGrid->ItemHeight() )
                );
        }
    else
        {
        AknListBoxLayouts::SetupFormTextCell( *iGrid, iGrid->ItemDrawer(),
                KIndexOfText, fontText,
                KDefaultTextColor,
                grWidth, 0,
                fontText->HeightInPixels(),
                txWidth,
                CGraphicsContext::ELeft,
                TPoint( grWidth, 0 ),

⌨️ 快捷键说明

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