📄 aknexgridcontainerasgms.cpp
字号:
/* 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 + -