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

📄 pbitemcontainer.cpp.bak

📁 个人手机助理套件:包含1、记事本(备忘录)、名片夹、名片夹的上传下载(异地备份)、短消息模块
💻 BAK
字号:
/*
* ============================================================================
*  Name     : CPBItemContainer from CCoeControl, MCoeControlObserver
*  Part of  : FunZone
*  Copyright (c) 2003 Nokia. All rights reserved.
* ============================================================================
*/

// INCLUDE FILES

#include "MEM_FREE.H"
#include <FunZone.rsg>
#include "FunZone.hrh"
#include "PBItemContainer.h"

#include <eiklabel.h>
#include <eikedwin.h>
#include <eikenv.h>
#include <barsread.h>
#include "PBInfo.h"
#include "FunZoneAppUi.h"
#include "PBItemView.h"



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

// C++ default constructor can NOT contain any code, that
// might leave.
//
CPBItemContainer::CPBItemContainer(CPBInfo* a_pPBInfo)
    {
	i_pLabelLastName  = NULL;
	i_pLabelFirstName = NULL;
 	i_pLabelTel       = NULL;
	i_pLabelHomeTel   = NULL;
	i_pLabelEmail     = NULL;
	i_pEditLastName   = NULL;
	i_pEditFirstName  = NULL;
	i_pEditTel        = NULL;
	i_pEditHomeTel    = NULL;
	i_pEditEmail      = NULL;
	i_pPBInfo         = a_pPBInfo;
    }

// EPOC default constructor can leave.
void CPBItemContainer::ConstructL(const TRect& aRect)
    {
    CreateWindowL();
 	CreateLabel();
 	CreateEdit();
   SetRect(aRect);
	SetExtentToWholeScreen();
    ActivateL();
    }

// Destructor
CPBItemContainer::~CPBItemContainer()
    {
	    MEM_FREE(i_pLabelLastName  )
		MEM_FREE(i_pLabelFirstName  )
		MEM_FREE(i_pLabelHomeTel  )
		MEM_FREE(i_pLabelTel  )
		MEM_FREE(i_pLabelEmail)
		MEM_FREE(i_pEditLastName)
		MEM_FREE(i_pEditFirstName)
		MEM_FREE(i_pEditTel   )
		MEM_FREE(i_pEditHomeTel)
		MEM_FREE(i_pEditEmail )
	//	MEM_FREE(i_pPBInfo    )
    }

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

void CPBItemContainer::FocusTo(TInt aCommand)
    {
    }

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

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

// ---------------------------------------------------------
// CPBItemContainer::ComponentControl(TInt aIndex) const
// (other items were commented in a header).
// ---------------------------------------------------------
//
CCoeControl* CPBItemContainer::ComponentControl(TInt aIndex) const
    {
	switch(aIndex)
	{
	case 0:
		{
			return i_pLabelLastName;
			break;
		}

	case 1:
		{
			return i_pLabelFirstName;
			break;
		}
	case 2:
		{
			return i_pLabelHomeTel;
			break;
		}

	case 3:
		{
			return i_pLabelEmail;
			break;
		}
	case 4:
		{
			return i_pLabelTel;
			break;
		}
	case 5:
		{
			return i_pEditLastName;
			break;
		}
	case 6:
		{
			return i_pEditFirstName;
			break;
		}
	case 7:
		{
			return i_pEditTel;
			break;
		}
	case 8:
		{
			return i_pEditHomeTel;
			break;
		}
	case 9:
		{
			return i_pEditEmail;
			break;
		}
	default:
		{
			return NULL;
            break;
		}
	}	
    }

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

	gc.SetPenColor(KRgbBlack);
	gc.SetPenStyle(CGraphicsContext::ESolidPen);
	gc.DrawLine(TPoint(10,0), TPoint(10,142));
	gc.DrawLine(TPoint(10,142), TPoint(176,142));
	
	TRect rRectFrist;
	rRectFrist.iTl = TPoint(3,4);
	rRectFrist.iBr = TPoint(170,48);
	gc.SetBrushColor(KRgbBlue);
// 	if ( iState == ECardOpen )
// 	{
// 		gc.SetBrushColor(KRgbWhite);
// 	}
	if (i_pEditLastName->IsFocused())
	{
		gc.DrawRect(rRectFrist);
	}


	TRect rRectLast;
	rRectLast.iTl = TPoint(3,49);
	rRectLast.iBr = TPoint(170,94);
	gc.SetBrushColor(KRgbGray);
// 	if ( iState == ECardOpen )
// 	{
// 		gc.SetBrushColor(KRgbWhite);
// 	}
	if (i_pEditFirstName->IsFocused())
	{
		gc.DrawRect(rRectLast);
	}
	
	TRect rRectPhoneNO;
	rRectPhoneNO.iTl = TPoint(3,94);
	rRectPhoneNO.iBr = TPoint(170,139);
	gc.SetBrushColor(KRgbGray);
// 	if ( iState == ECardOpen )
// 	{
// 		gc.SetBrushColor(KRgbWhite);
// 	}
	if (i_pEditHomeTel->IsFocused())
	{
		gc.DrawRect(rRectPhoneNO);
	}
	
//	const CFont* iFont;


// 	gc.SetPenColor(KRgbBlack);
// 	gc.SetPenStyle(CGraphicsContext::ESolidPen);
// 	gc.DrawLine(TPoint(25,0), TPoint(25,142));
// 	gc.DrawLine(TPoint(25,142), TPoint(176,188));

    }

// ---------------------------------------------------------
// CPBItemContainer::OfferKeyEventL(...)
// Notify key events to editors.
// (other items were commented in a header).
// ---------------------------------------------------------
//
TKeyResponse CPBItemContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
{

if(EStdKeyHash==aKeyEvent.iScanCode)
{
	// CFunZoneAppUi* pApp = (CFunZoneAppUi*)CEikonEnv::Static()->AppUi();
//	pApp->GetView()->StatusPane()->MakeVisible(EFalse);
}


	if (i_pEditLastName)
	{
		if (i_pEditLastName->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
			{
				i_pEditLastName->SetFocus(EFalse);
				i_pEditFirstName->SetFocus(ETrue);
				DrawDeferred();
				return EKeyWasConsumed;
			}
			return i_pEditLastName->OfferKeyEventL(aKeyEvent, aType);
		}
	}
	
	if (i_pEditFirstName)
	{
		if (i_pEditFirstName->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
			{
				i_pEditFirstName->SetFocus(EFalse);
				i_pEditHomeTel->SetFocus(ETrue);
				DrawNow();
				return EKeyWasConsumed;
			}
			else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow))
			{
				i_pEditLastName->SetFocus(ETrue);
				i_pEditFirstName->SetFocus(EFalse);
				DrawNow();
				return EKeyWasConsumed;
			}
			return i_pEditFirstName->OfferKeyEventL(aKeyEvent, aType);
		}
	}


	if (i_pEditHomeTel)
	{
		if (i_pEditHomeTel->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow))
			{
				i_pEditFirstName->SetFocus(ETrue);
				i_pEditHomeTel->SetFocus(EFalse);
				DrawDeferred();
				return EKeyWasConsumed;
				
			}
			else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
			{
				i_pEditTel->SetFocus(ETrue);
				i_pEditHomeTel->SetFocus(EFalse);
				DrawDeferred();
				return EKeyWasConsumed;
			}
			return i_pEditHomeTel->OfferKeyEventL(aKeyEvent, aType);
		}
	}
	if (i_pEditTel)
	{
		if (i_pEditTel->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow))
			{
				i_pEditHomeTel->SetFocus(ETrue);
				i_pEditTel->SetFocus(EFalse);
				DrawDeferred();
				return EKeyWasConsumed;
			}
			else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
			{
				i_pEditEmail->SetFocus(ETrue);
				i_pEditTel->SetFocus(EFalse);
				DrawDeferred();
				return EKeyWasConsumed;
			}
			return i_pEditTel->OfferKeyEventL(aKeyEvent, aType);
		}
	}

	if (i_pEditEmail)
	{
		if (i_pEditEmail->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow))
			{
				i_pEditEmail->SetFocus(EFalse);
				i_pEditTel->SetFocus(ETrue);
				DrawDeferred();
				return EKeyWasConsumed;
			}
			return i_pEditEmail->OfferKeyEventL(aKeyEvent, aType);
		}
	}
    return EKeyWasNotConsumed;
}


// ---------------------------------------------------------
// CPBItemContainer::HandleControlEventL(
//     CCoeControl* aControl,TCoeEvent aEventType)
// (other items were commented in a header).
// ---------------------------------------------------------
//
void CPBItemContainer::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
{
	
}
void CPBItemContainer::GetLastName(TDes &aLastName)
{
	i_pEditLastName->GetText(aLastName);
}

void CPBItemContainer::GetFirstName(TDes &aFirstName)
{
	i_pEditFirstName->GetText(aFirstName);
}

void CPBItemContainer::GetTel(TDes &aTel)
{
	i_pEditTel->GetText(aTel);
}

void CPBItemContainer::GetHomeTel(TDes &aHomeTel)
{
	i_pEditHomeTel->GetText(aHomeTel);
}
void CPBItemContainer::GetEmail(TDes &aEmail)
{
	i_pEditEmail->GetText(aEmail);
}

void CPBItemContainer::CreateLabel()
{
	TBuf<32> Buf;
	
	CEikonEnv::Static()->ReadResource(Buf, R_QTN_MH_ITEM_LABEL_LASTNAME);
	i_pLabelLastName = new(ELeave) CEikLabel;
	CleanupStack::PushL(i_pLabelLastName);
	i_pLabelLastName->SetContainerWindowL(*this);
	i_pLabelLastName->SetTextL(Buf);
	i_pLabelLastName->SetExtent(TPoint(15,15), i_pLabelLastName->MinimumSize());
	
	Buf.Zero();
	CEikonEnv::Static()->ReadResource(Buf, R_QTN_MH_ITEM_LABEL_FIRSTNAME);
	i_pLabelFirstName = new(ELeave) CEikLabel;
	CleanupStack::PushL(i_pLabelLastName);
	i_pLabelFirstName->SetContainerWindowL(*this);
	i_pLabelFirstName->SetTextL(Buf);
	i_pLabelFirstName->SetExtent(TPoint(15,40), i_pLabelFirstName->MinimumSize());
	
	Buf.Zero();
	CEikonEnv::Static()->ReadResource(Buf, R_QTN_MH_ITEM_LABEL_TEL);
	i_pLabelTel = new(ELeave) CEikLabel;
	CleanupStack::PushL(i_pLabelTel);
	i_pLabelTel->SetContainerWindowL(*this);
	i_pLabelTel->SetTextL(Buf);
	i_pLabelTel->SetExtent(TPoint(15,65), i_pLabelTel->MinimumSize());
	
	Buf.Zero();
	CEikonEnv::Static()->ReadResource(Buf, R_QTN_MH_ITEM_LABEL_CELLPHONE);
	i_pLabelHomeTel = new(ELeave) CEikLabel;
	CleanupStack::PushL(i_pLabelTel);
	i_pLabelHomeTel->SetContainerWindowL(*this);
	i_pLabelHomeTel->SetTextL(Buf);
	i_pLabelHomeTel->SetExtent(TPoint(15,90), i_pLabelHomeTel->MinimumSize());
	
	Buf.Zero();
	CEikonEnv::Static()->ReadResource(Buf, R_QTN_MH_ITEM_LABEL_EMAIL);
	i_pLabelEmail = new(ELeave) CEikLabel;
	CleanupStack::PushL(i_pLabelEmail);
	i_pLabelEmail->SetContainerWindowL(*this);
	i_pLabelEmail->SetTextL(Buf);
	i_pLabelEmail->SetExtent(TPoint(15,115), i_pLabelEmail->MinimumSize());
	CleanupStack::Pop(5);
}

void CPBItemContainer::CreateEdit ()
{
	//Edit from RSS
	TResourceReader reader;
	iCoeEnv->CreateResourceReaderLC(reader, R_AKNEXEDITOR_NAME_EDWIN);
	i_pEditLastName = new(ELeave) CEikEdwin;
	CleanupStack::PushL(i_pEditLastName);
	i_pEditLastName->SetContainerWindowL(*this);
	i_pEditLastName->ConstructFromResourceL(reader);
	//i_pEditLastName->SetAknEditorCurrentInputMode(EAknEditorFlagDefault);//only Input number.
	i_pEditLastName->SetExtent(TPoint(55,15), TSize(80,20));
	i_pEditLastName->SetTextL(i_pPBInfo->GetLastName());
	i_pEditLastName->SetFocus(ETrue);
	CleanupStack::Pop();
	CleanupStack::PopAndDestroy();
	/***************************************************************/
	TResourceReader reader1;
	iCoeEnv->CreateResourceReaderLC(reader1, R_AKNEXEDITOR_NAME_EDWIN);
	i_pEditFirstName = new(ELeave) CEikEdwin;
	CleanupStack::PushL(i_pEditFirstName);
	i_pEditFirstName->SetContainerWindowL(*this);
	i_pEditFirstName->ConstructFromResourceL(reader1);
//	i_pEditFirstName->SetAknEditorCurrentInputMode(EAknEditorFlagDefault);//only Input number.
	i_pEditFirstName->SetExtent(TPoint(55,40), TSize(80,20));
	i_pEditFirstName->SetTextL(i_pPBInfo->GetFirstName());
	CleanupStack::Pop();
	CleanupStack::PopAndDestroy();
	
	
	/*************************电话****************************************/

	i_pEditHomeTel = new(ELeave) CEikEdwin;
	CleanupStack::PushL(i_pEditHomeTel);
	i_pEditHomeTel->SetContainerWindowL(*this);
	i_pEditHomeTel->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode);
	i_pEditHomeTel->ConstructL(EAknEditorFlagDefault, 10, 48, 1);
	i_pEditHomeTel->SetExtent(TPoint(55,65), TSize(80,20));
	i_pEditHomeTel->SetTextL(i_pPBInfo->GetTelephone());
	CleanupStack::Pop();
	/********************手机号***********************************************************/

	i_pEditTel = new(ELeave) CEikEdwin;
	CleanupStack::PushL(i_pEditTel);
	i_pEditTel->SetContainerWindowL(*this);
	i_pEditTel->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode);
	i_pEditTel->ConstructL(EAknEditorFlagDefault, 10, 48, 1);
	i_pEditTel->SetExtent(TPoint(55,90), TSize(80,20));
	i_pEditTel->SetTextL(i_pPBInfo->GetHomeMobileNumber());
	CleanupStack::Pop();
	
	/*************************************************************************************/
	TResourceReader reader4;
	iCoeEnv->CreateResourceReaderLC(reader4, R_AKNEXEDITOR_NAME_EDWIN);
	i_pEditEmail = new(ELeave) CEikEdwin;
	CleanupStack::PushL(i_pEditEmail);
	i_pEditEmail->SetContainerWindowL(*this);
	i_pEditEmail->ConstructFromResourceL(reader4);
//	i_pEditEmail->SetAknEditorCurrentInputMode(EAknEditorFlagDefault);//only Input number.
	i_pEditEmail->SetExtent(TPoint(55,115), TSize(80,20));
	i_pEditEmail->SetTextL(i_pPBInfo->GetEmail());
	CleanupStack::Pop();
	CleanupStack::PopAndDestroy();


// 	i_pEditName = new(ELeave) CEikEdwin;
// 	CleanupStack::PushL(i_pEditName);
// 	i_pEditName->SetContainerWindowL(*this); 
// 	i_pEditName->ConstructL(EAknEditorTextCase, 10, 10, 1);
// 	i_pEditName->SetExtent(TPoint(60,20), TSize(80,20));
// 	i_pEditName->SetTextL(&_L("Name"));
// 	i_pEditName->SetFocus(ETrue);
// 	CleanupStack::Pop();
}


void CPBItemContainer::SetEditReadOnly()
{
	i_pEditLastName->SetReadOnly(ETrue);
	i_pEditFirstName->SetReadOnly(ETrue);
	i_pEditHomeTel->SetReadOnly(ETrue);
	i_pEditTel->SetReadOnly(ETrue);
	i_pEditEmail->SetReadOnly(ETrue);
}

void CPBItemContainer::MakeVisible(TBool aVisible)
{
 // DoMakeVisible(aVisible);
}
// End of File  

⌨️ 快捷键说明

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