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

📄 maininterfacecontainer.cpp

📁 symbian 3nd 实现短信息收发
💻 CPP
字号:
/*
* ============================================================================
*  Name     : CMainInterfaceContainer from CCoeControl, MCoeControlObserver
*  Part of  : MainInterface
*  Copyright (c) 2003 Nokia. All rights reserved.
* ============================================================================
*/

// INCLUDE FILES
#include <eiklabel.h>  // for example label control
#include <barsread.h>  // for resource reader
#include <eikedwin.h>  // for CEikEdwin
#include <eikgted.h>   // for CEikGlobalTextEditor

#include <FrMes.rsg>
#include "FrMes.hrh"
#include "MainInterfaceContainer.h"

#include <aknlists.h>  // for avrell style listbox
#include <akniconarray.h>
#include "FrMesAppUi.h"


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

// C++ default constructor can NOT contain any code, that
// might leave.
//
CMainInterfaceContainer::CMainInterfaceContainer()
{
	iGrid = NULL;
}

// EPOC default constructor can leave.
void CMainInterfaceContainer::ConstructL(const TRect& aRect)
{
	CreateWindowL();
	iGrid = new( ELeave ) CAknGrid;
	iGrid->SetContainerWindowL( *this );//共享窗口
	iGrid->ConstructL( this, EAknListBoxSelectionGrid );
	iGrid->SetEmptyGridTextL(_L("empty"));
	// set layout
	iGrid->SetRect(aRect.Size());
	// set initial params for the grid
	iGridType = EAknExGridSelectionGrid;
	
	iVerticalOrientation	= EFalse;
	iTopToBottom			= ETrue;
	iLeftToRight			= ETrue;
	iNumOfColumns			= 3;
	iNumOfRows				= 3;
	iContentType			= EContainGraphic;
	iNumOfItems				= 9;
	
	iVerticalScrollingType = CAknGridView::EScrollIncrementLineAndLoops;
	iHorizontalScrollingType = CAknGridView::EScrollIncrementLineAndLoops;
	iSizeOfItems.iWidth = ( aRect.iBr.iX - aRect.iTl.iX ) / iNumOfColumns;
	iSizeOfItems.iHeight = ( aRect.iBr.iY - aRect.iTl.iY ) / iNumOfRows;
	
	iGrid->SetLayoutL( iVerticalOrientation, iLeftToRight, iTopToBottom, 
		iNumOfColumns, iNumOfRows, iSizeOfItems );
	iGrid->SetPrimaryScrollingType( iHorizontalScrollingType );
	iGrid->SetSecondaryScrollingType( iVerticalScrollingType );	
	
	LoadGraphicsL();
	AddDataL();
	iInstantsCreated = ETrue;
	
	// activate the grid
	iGrid->SetCurrentDataIndex(0);
	iGrid->MakeVisible( ETrue );
	iGrid->SetFocus( ETrue );
	iGrid->ActivateL();
	iGrid->DrawNow();
	
	SetRect(aRect);
	ActivateL();
}

// Destructor
CMainInterfaceContainer::~CMainInterfaceContainer()
{
	if(iGrid)
	{
		delete iGrid;
		iGrid = NULL;
	}	
}

// ---------------------------------------------------------
// CMainInterfaceContainer::FocusTo(TInt aCommand)
// Change foccused control.
// (other items were commented in a header).
// ---------------------------------------------------------
//

void CMainInterfaceContainer::FocusTo(TInt aCommand)
{
}

// ---------------------------------------------------------
// CMainInterfaceContainer::SizeChanged()
// Called by framework when the view size is changed
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CMainInterfaceContainer::SizeChanged()
{
}

// ---------------------------------------------------------
// CMainInterfaceContainer::CountComponentControls() const
// (other items were commented in a header).
// ---------------------------------------------------------
//
TInt CMainInterfaceContainer::CountComponentControls() const
{
    return 1; // return nbr of controls inside this container
}

// ---------------------------------------------------------
// CMainInterfaceContainer::ComponentControl(TInt aIndex) const
// (other items were commented in a header).
// ---------------------------------------------------------
//
CCoeControl* CMainInterfaceContainer::ComponentControl(TInt aIndex) const
{
	return iGrid;
}

// ---------------------------------------------------------
// CMainInterfaceContainer::Draw(const TRect& aRect) const
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CMainInterfaceContainer::Draw(const TRect& aRect) const
{
    CWindowGc& gc = SystemGc();
    gc.SetPenStyle(CGraphicsContext::ENullPen);
    gc.SetBrushColor(KRgbCyan);
    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
    gc.DrawRect(aRect);
}

// ---------------------------------------------------------
// CMainInterfaceContainer::OfferKeyEventL(...)
// Notify key events to editors.
// (other items were commented in a header).
// ---------------------------------------------------------
//
TKeyResponse CMainInterfaceContainer::OfferKeyEventL(
													 const TKeyEvent& aKeyEvent, TEventCode aType)
{
	if(!iGrid)
	{
		return EKeyWasNotConsumed;
	}
	return iGrid->OfferKeyEventL(aKeyEvent, aType);
}


void CMainInterfaceContainer::HandleControlEventL(
												  CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
{
}


void CMainInterfaceContainer::AddInfoToList(TInt aIndex, const TDesC& aText)
{
	TBuf<64>	sBuf;
	sBuf.AppendNum(aIndex);
	sBuf.Append(_L("\t"));
	sBuf.Append(aText);
}

void CMainInterfaceContainer::LoadGraphicsL()
{
	CFrMesAppUi* pApp = (CFrMesAppUi*)CEikonEnv::Static()->AppUi();
	
    CArrayPtr< CGulIcon >* icons = new(ELeave) CAknIconArray(iNumOfItems);
    CleanupStack::PushL( icons );
    // Create icon bitmap and mask.
    if ( iGridType == EAknExGridSelectionGrid )
	{
		icons->AppendL(pApp->LoadGraphicsL(0));
		icons->AppendL(pApp->LoadGraphicsL(2));
		icons->AppendL(pApp->LoadGraphicsL(3));
		icons->AppendL(pApp->LoadGraphicsL(1));
		icons->AppendL(pApp->LoadGraphicsL(1));
		icons->AppendL(pApp->LoadGraphicsL(1));
		icons->AppendL(pApp->LoadGraphicsL(1));
		icons->AppendL(pApp->LoadGraphicsL(1));
		icons->AppendL(pApp->LoadGraphicsL(1));
	}
    // Set icon array.
    iGrid->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
    CleanupStack::Pop(); // icons array
}

void CMainInterfaceContainer::AddDataL()
{
    MDesCArray* array = iGrid->Model()->ItemTextArray();
    CDesCArray* cArray = ( CDesCArray* )array;
	
	TBuf<32> sBuf;
	//SMS
	sBuf.Copy(_L("0\t"));
	TBuf<32> item0;
	iCoeEnv->ReadResource(item0, R_QTN_FRMES_GRID_ITEM1);
	sBuf.Append(item0);
	cArray->AppendL(sBuf);
	//PHB
	sBuf.Copy(_L("1\t"));
	TBuf<32> item1;
	iCoeEnv->ReadResource(item1, R_QTN_FRMES_GRID_ITEM2);
	sBuf.Append(item1);
	cArray->AppendL(sBuf);
	//Account
	sBuf.Copy(_L("2\t"));
	TBuf<32> item2;
	iCoeEnv->ReadResource(item2, R_QTN_FRMES_GRID_ITEM3);
	sBuf.Append(item2);
	cArray->AppendL(sBuf);
	//SMS
	sBuf.Copy(_L("3\t"));
	//	sBuf.Append(_L("abc"));
	cArray->AppendL(sBuf);
	//PHB
	sBuf.Copy(_L("4\t"));
	//	sBuf.Append(_L("abc"));
	cArray->AppendL(sBuf);
	//Account
	sBuf.Copy(_L("5\t"));
	//	sBuf.Append(_L("abc"));
	cArray->AppendL(sBuf);
	//SMS
	sBuf.Copy(_L("6\t"));
	//	sBuf.Append(_L("abc"));
	cArray->AppendL(sBuf);
	//PHB
	sBuf.Copy(_L("7\t"));
	//	sBuf.Append(_L("abc"));
	cArray->AppendL(sBuf);
	//Account
	sBuf.Copy(_L("8\t"));
	//	sBuf.Append(_L("abc"));
	cArray->AppendL(sBuf);
	
	//	const CFont* fontText = ApacPlain12();
    iGrid->HandleItemAdditionL();
    ApplySelGridGraphicStyleL();
}

void CMainInterfaceContainer::ApplySelGridGraphicStyleL()
{
    if (!iGrid) 
	{
        return;
	}
	
    AknListBoxLayouts::SetupStandardGrid( *iGrid );
	
	const CFont* fontText = ApacPlain12();
	TInt nX = (iGrid->ColumnWidth() - 24) / 2;
	TInt nY = (iGrid->ItemHeight() - 24 - fontText->HeightInPixels()) / 2;
    AknListBoxLayouts::SetupFormGfxCell( 
		*iGrid, 
		iGrid->ItemDrawer(),
		0, 
		nX, 
		nY, 
		0, 
		0,  
		24, 
		24, 
		TPoint( nX, nY ), 
		TPoint( 24+nX, 24+nY) );
	
	// layout of text
	AknListBoxLayouts::SetupFormAntiFlickerTextCell( 
		*iGrid, 
		iGrid->ItemDrawer(),
		1, 
		fontText, 
		215, 
		0, 
		0, 
		24+nY+fontText->HeightInPixels(),
		iGrid->ColumnWidth(), 
		CGraphicsContext::ECenter,
		TPoint( 0, 24+nY), 
		TPoint( iGrid->ColumnWidth(), iGrid->ItemHeight()) );
	
    DrawNow();
}


TInt CMainInterfaceContainer::GetSelectedItemIndex(TInt& aIndex)
{
	CTextListBoxModel* model = iGrid->Model();
    if(model->NumberOfItems()==0)
	{
        return KErrNotFound;
	}
	
    aIndex=iGrid->CurrentDataIndex();
    return KErrNone;	
}

// End of File  

⌨️ 快捷键说明

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