📄 aknexgridcontainerasselection.cpp
字号:
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 + -