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

📄 registercontainer.cpp

📁 symbian 2rd 备忘录
💻 CPP
字号:

#include <gulicon.h>
#include <aknutils.h>    // definition of AKN_LAF_COLOR()
#include <avkon.hrh>
#include <akntitle.h>
#include <aknnotewrappers.h>


//添加Label 和Edit框所需的头文件
#include <eiklabel.h>
#include <eikedwin.h>
#include <AknNumSecEd.h>    // for numeric secret editor
#include <barsread.h>

#include "RegisterContainer.h"
#include "Assistant.rsg"
#include "Assistant.hrh"

//////////////////////////////////////////////////////////////////////////
CRegisterContainer::CRegisterContainer()
{
	m_pLabelName = NULL;
	m_pLabelPsw1 = NULL;
	m_pLabelPsw2 = NULL;
	m_pEditName = NULL;
	m_pEditPsw1 = NULL;
	m_pEditPsw2 = NULL;
}

// EPOC default constructor can leave.
void CRegisterContainer::ConstructL(const TRect& aRect)
{
    CreateWindowL();
	
	//create name label
	m_pLabelName = new( ELeave ) CEikLabel;
	m_pLabelName->SetContainerWindowL( *this );
	TBuf<32> sTmpLabel;
	CEikonEnv::Static()->ReadResource(sTmpLabel, R_QTN_ASSISTANT_NAME);
	m_pLabelName->SetTextL(sTmpLabel);
	m_pLabelName->SetExtent(TPoint(10,20), m_pLabelName->MinimumSize());
	
	//create password1 label
	m_pLabelPsw1 = new( ELeave ) CEikLabel;
	m_pLabelPsw1->SetContainerWindowL( *this );
	TBuf<32> sTmpLabe2;
	CEikonEnv::Static()->ReadResource(sTmpLabe2, R_QTN_ASSISTANT_PASSONE);
	m_pLabelPsw1->SetTextL(sTmpLabe2);
	m_pLabelPsw1->SetExtent(TPoint(10,60), m_pLabelPsw1->MinimumSize());
	
	
	//create password2 label
	m_pLabelPsw2 = new( ELeave ) CEikLabel;
	m_pLabelPsw2->SetContainerWindowL( *this );
	TBuf<32> sTmpLabe3;
	CEikonEnv::Static()->ReadResource(sTmpLabe3, R_QTN_ASSISTANT_PASSTWO);
	m_pLabelPsw2->SetTextL(sTmpLabe3);
	m_pLabelPsw2->SetExtent(TPoint(10,100), m_pLabelPsw2->MinimumSize());
	
	//create name edit 
	m_pEditName = new (ELeave) CEikEdwin;
	m_pEditName->SetContainerWindowL(*this);
	m_pEditName->ConstructL(EAknEditorFlagDefault, 11, 11, 11);
	m_pEditName->SetExtent(TPoint(70,20), TSize(80,20));
	m_pEditName->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode);
	m_pEditName->SetAknEditorInputMode(EAknEditorNumericInputMode);
	m_pEditName->SetFocus(ETrue);
	
	//create password1 edit	
	TResourceReader reader1;
	iCoeEnv->CreateResourceReaderLC(reader1,R_PASSWORD_EDIT_NUMBER);
	m_pEditPsw1 = new (ELeave) CAknNumericSecretEditor() ;
	m_pEditPsw1->SetContainerWindowL(*this);
	m_pEditPsw1->ConstructFromResourceL(reader1);
	CleanupStack::PopAndDestroy();
	m_pEditPsw1->SetExtent(TPoint(69,60),TSize(84,22));
	//	m_pEditPsw1->SetFocus(EFalse);
	//m_pEditPsw1->SetBorder(ENone);
	
	//create password2 edit 
	TResourceReader reader2;
	iCoeEnv->CreateResourceReaderLC(reader2,R_PASSWORD_EDIT_NUMBER);
	m_pEditPsw2 = new (ELeave) CAknNumericSecretEditor() ;
	m_pEditPsw2->SetContainerWindowL(*this);
	m_pEditPsw2->ConstructFromResourceL(reader2);
	CleanupStack::PopAndDestroy();
	m_pEditPsw2->SetExtent(TPoint(69,100),TSize(84,22));
	//m_pEditPsw2->SetFocus(EFalse);
	//m_pEditPsw2->SetBorder(ENone);
	
	
    SetRect( aRect );
    ActivateL();
}

// destructor
CRegisterContainer::~CRegisterContainer()
{
	MEMORY_FREE(m_pLabelName);
	MEMORY_FREE(m_pLabelPsw1);
	MEMORY_FREE(m_pLabelPsw2);
	MEMORY_FREE(m_pEditName);
	MEMORY_FREE(m_pEditPsw1);
	MEMORY_FREE(m_pEditPsw2);
}

void CRegisterContainer::SizeChanged()
{
}

// ---------------------------------------------------------
// CRegisterContainer::CountComponentControls() const
// return the number of controls
// ---------------------------------------------------------
//
TInt CRegisterContainer::CountComponentControls() const
{
	// return number of controls inside this container
	return 6; 
}

// ---------------------------------------------------------
// CRegisterContainer::ComponentControl(TInt aIndex) const
// return the pointer to specified control.
// ---------------------------------------------------------
//
CCoeControl* CRegisterContainer::ComponentControl( TInt aIndex ) const
{
	switch(aIndex)
	{
	case 0:
		return m_pLabelName;
	case 1:
		return m_pLabelPsw1;
	case 2:
		return m_pLabelPsw2;
	case 3:
		return m_pEditName;
	case 4:
		return m_pEditPsw1;
	case 5:
		return m_pEditPsw2;
	}
	return NULL;
}

// ---------------------------------------------------------
// CRegisterContainer::Draw(const TRect& aRect) const
// handle the message when client region must be redrawn.
// ---------------------------------------------------------
//
void CRegisterContainer::Draw( const TRect& aRect ) const
{
	CWindowGc& gc = SystemGc();
	gc.SetPenStyle(CGraphicsContext::ENullPen);
    gc.SetBrushColor(KRgbWhite);
    gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
    gc.DrawRect(aRect);
	gc.SetPenStyle(CGraphicsContext::ESolidPen);
	gc.SetPenColor(KRgbGray);
	TPoint startPos(69,19);
	TPoint endPos(151,19);
	TPoint sta(69,41);
	TPoint endlt(151,41);
	gc.DrawLine(startPos, endPos);
	gc.DrawLine(startPos,sta);
	gc.DrawLine(sta,endlt);
	gc.DrawLine(endPos,endlt);
}

// ---------------------------------------------------------
// CAknExGridContainer::OfferKeyEventL(
//           const TKeyEvent& aKeyEvent, TEventCode aType )
// Handles the key events.
// ---------------------------------------------------------
//
TKeyResponse CRegisterContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
{
	
	if (m_pEditName)
	{
		if (m_pEditName->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
			{
				m_pEditName->SetFocus(EFalse);
				m_pEditPsw1->SetFocus(ETrue);
				DrawDeferred();
				return EKeyWasConsumed;
			}
			return m_pEditName->OfferKeyEventL(aKeyEvent, aType);
		}
	}
	if (m_pEditPsw1)
	{
		if (m_pEditPsw1->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow))
			{
				m_pEditPsw1->SetFocus(EFalse);
				m_pEditName->SetFocus(ETrue);
				DrawDeferred();
				return EKeyWasConsumed;		
			}
			else if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
			{
				m_pEditPsw1->SetFocus(EFalse);
				m_pEditPsw2->SetFocus(ETrue);
				DrawDeferred();
				return EKeyWasConsumed;	
			}
			return m_pEditPsw1->OfferKeyEventL(aKeyEvent, aType);
		}
	}	
	if (m_pEditPsw2)
	{
		if (m_pEditPsw2->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow))
			{
				m_pEditPsw2->SetFocus(EFalse);
				m_pEditPsw1->SetFocus(ETrue);
				DrawDeferred();
				return EKeyWasConsumed;
			}
			return m_pEditPsw2->OfferKeyEventL(aKeyEvent, aType);
		}
	}
	return EKeyWasConsumed;
}



void CRegisterContainer::GetData(TDes& aName, TDes& aPsw1, TDes& aPsw2)
{
	m_pEditName->GetText(aName);
	m_pEditPsw1->GetText(aPsw1);
	m_pEditPsw2->GetText(aPsw2);
}

void CRegisterContainer::SetStatus(TInt aStatus)
{
	m_Status = aStatus;
}

⌨️ 快捷键说明

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