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

📄 chsgedittextcontainer.cpp

📁 Symbian工程 九宫格界面
💻 CPP
字号:
#include <gulicon.h>
#include <aknutils.h>
#include <avkon.hrh>

#include "CHsgEditTextContainer.h"
//#include "LxdMessageManagement.h"
#include "CHsgEditTextView.h"
#include "CJGProjectappui.h"
#include <eiklabel.h>
#include "CJGProject.rsg"
#include <eikedwin.h>
#include <BARSREAD.H>
#include "NewsRollText.h"
#include "HsgTextView.h"
#include "LxdAD.h"
#include "CJGProject.rsg"
#define MEMORY_FREE(a) if(a){delete a; a=NULL;}

CHsgEditTextContainer::CHsgEditTextContainer()
{
	iHsgLableEditTitle           =NULL;
	iHsgLableEditContent         =NULL;

	iHsgEditorEditTitle          =NULL;
	iHsgEditorEditContent        =NULL;
	iEditMesLabel                =NULL;
	iLxdEditPointer              =NULL;
}

// EPOC default constructor can leave.
void CHsgEditTextContainer::ConstructL(const TRect& aRect)
{
    CreateWindowL();	
    SetRect( aRect );
    SetExtentToWholeScreen();
	//动态创建标题Label

	iHsgLableEditTitle = new(ELeave) CEikLabel;		
	iHsgLableEditTitle->SetContainerWindowL(*this);
	const CFont* fontUsed = iEikonEnv->LegendFont();
	iHsgLableEditTitle->SetFont(fontUsed);
 	//导入中文资源
	TBuf<32> sPhoneNumLabelTitle;		
	CEikonEnv::Static()->ReadResource(sPhoneNumLabelTitle, R_QTN_HEWB_LXD_TITLE);
	//设置Label显示内容
	iHsgLableEditTitle->SetTextL(sPhoneNumLabelTitle);
	iHsgLableEditTitle->SetExtent(TPoint(aRect.Width()/30,aRect.Height()/7), iHsgLableEditTitle->MinimumSize());

	// 	动态创建内容Label

	iHsgLableEditContent = new(ELeave) CEikLabel;		
	iHsgLableEditContent->SetContainerWindowL(*this);
	iHsgLableEditContent->SetFont(fontUsed);
	//导入中文资源
	TBuf<32> sPhoneNumLabelContent;		
	CEikonEnv::Static()->ReadResource(sPhoneNumLabelContent, R_QTN_HEWB_LXD_CONTENT);
	//设置Label显示内容
	iHsgLableEditContent->SetTextL(sPhoneNumLabelContent);
	iHsgLableEditContent->SetExtent(TPoint(aRect.Width()/30,aRect.Height()/7+fontUsed->HeightInPixels()+10+aRect.Height()/14+10), iHsgLableEditContent->MinimumSize());



	//动态创建标题Editor
	iHsgEditorEditTitle = new(ELeave) CEikEdwin;
	iHsgEditorEditTitle->SetContainerWindowL(*this);
	iHsgEditorEditTitle->ConstructL(EAknEditorFlagDefault, 1, 16, 1);
	//设置editor显示位置、大小
	iHsgEditorEditTitle->SetExtent(TPoint(aRect.Width()/30,aRect.Height()/7+(fontUsed->HeightInPixels())+10),TSize(aRect.Width()-aRect.Width()/15,aRect.Height()/14));
	//设置当前输入模式
	iHsgEditorEditTitle->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode);
	iHsgEditorEditTitle->SetFocus(ETrue);

	//动态创建内容Editor
	iHsgEditorEditContent = new(ELeave) CEikEdwin;
	iHsgEditorEditContent->SetContainerWindowL(*this);
	iHsgEditorEditContent->ConstructL(EAknEditorFlagDefault, 1, 72, 10);
	//设置editor显示位置、大小
	iHsgEditorEditContent->SetExtent(TPoint(aRect.Width()/30,aRect.Height()/7+2*(fontUsed->HeightInPixels())+aRect.Height()/14+30),TSize(aRect.Width()-aRect.Width()/15,aRect.Height()*5/7-2*(fontUsed->HeightInPixels())-30-aRect.Height()/14));
	//设置当前输入模式
	iHsgEditorEditContent->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode);
//************************************************************************************
        CCJGProjectAppUi* pAppUi = (CCJGProjectAppUi*)CCoeEnv::Static()->AppUi();
		iEditMesLabel = new(ELeave)CNewsRollText;
		iEditMesLabel->SetContainerWindowL(*this);
        CLxdAD* ilxdpointer=pAppUi->LxdGetADPointer();
	 	HBufC* buf=ilxdpointer->LxdGetAD(3);
 
	 	iEditMesLabel->NewsSetTextL(buf->Des());//显示中文滚动文字
		iEditMesLabel->NewsSetBackgroundColor(TRgb(159,203,223));
		TSize sz = iEditMesLabel->MinimumSize();
		iEditMesLabel->NewsSetExtent( TPoint(0,0), sz);
		iEditMesLabel->Start();
//**************************************************************************************

		iLxdEditPointer=pAppUi->LxdGetMessage();
	    TInt mLxdIndex;
	     pAppUi->GetHsgTextView()->LxdGetIndex(mLxdIndex);
	     iLxdEditPointer->LxdSetId(mLxdIndex);
	     TBuf<10> mTime;
         TBuf<50> mTitle;
	     TBuf<200> mContent;
	     iLxdEditPointer->LxdGetMessage(mTime,mTitle,mContent);
         HsgSetEditTitle(mTitle);
         HsgSetEditContent(mContent);
    ActivateL();
}

// destructor
CHsgEditTextContainer::~CHsgEditTextContainer()
{
	if (iHsgLableEditTitle)
	{
		delete iHsgLableEditTitle;
		iHsgLableEditTitle=NULL;
	}
	MEMORY_FREE(iHsgLableEditContent);
	MEMORY_FREE(iHsgEditorEditTitle);
	MEMORY_FREE(iHsgEditorEditContent);
    MEMORY_FREE(iEditMesLabel);
}

void CHsgEditTextContainer::SizeChanged()
{
}

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

// ---------------------------------------------------------
// CHsgEditTextContainer::ComponentControl(TInt aIndex) const
// return the pointer to specified control.
// ---------------------------------------------------------
//
CCoeControl* CHsgEditTextContainer::ComponentControl( TInt aIndex) const
{
	switch (aIndex)
	{
	case 0:
		return iHsgLableEditTitle;
	case 1:
		return iHsgLableEditContent;
	case 2:
		return iHsgEditorEditTitle;
	case 3:
		return iHsgEditorEditContent;
	case 4:
		return iEditMesLabel;
	default:
		return NULL;
	}
	return NULL;

}

// ---------------------------------------------------------
// CHsgEditTextContainer::Draw(const TRect& aRect) const
// handle the message when client region must be redrawn.
// ---------------------------------------------------------
//
void CHsgEditTextContainer::Draw( const TRect& aRect) const
{
	CWindowGc& gc = SystemGc();
	gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
	gc.SetBrushColor(KRgbBlue);
 	gc.DrawRect(Rect());

	gc.SetPenStyle(CGraphicsContext::ESolidPen);	
	gc.SetPenColor(KRgbBlack);
	const CFont* fontUsed = iEikonEnv->LegendFont();//获取中文字体
	gc.UseFont(fontUsed);
	TBuf<8> aBufOppiton;
	CEikonEnv::Static()->ReadResource(aBufOppiton,R_QTN_LXD_EDITLEFTCBA);
	TBuf<8> aBufReturn;
	CEikonEnv::Static()->ReadResource(aBufReturn,R_QTN_CJG_SNOW_CANCEL);

	TPoint pointLeft(0,aRect.Height());
	TPoint pointRight(aRect.Width()-fontUsed->TextWidthInPixels(aBufReturn),aRect.Height());

	gc.DrawText(aBufOppiton,pointLeft);
	gc.DrawText(aBufReturn,pointRight);
}

// ---------------------------------------------------------
// CAknExGridContainer::OfferKeyEventL(
//           const TKeyEvent& aKeyEvent, TEventCode aType )
// Handles the key events.
// ---------------------------------------------------------
//
TKeyResponse CHsgEditTextContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
{
	if((aType == EEventKey) && ((aKeyEvent.iCode == EKeyDevice0)||(aKeyEvent.iCode == EKeyDevice3)))
	{
		CCJGProjectAppUi* pAppUi = (CCJGProjectAppUi*)CCoeEnv::Static()->AppUi();
		pAppUi->NewsGetHsgEditTextView()->HandleCommandL(0);
	}
	if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDevice1))
	{
		CCJGProjectAppUi* pAppUi = (CCJGProjectAppUi*)CCoeEnv::Static()->AppUi();
		pAppUi->NewsGetHsgEditTextView()->HandleCommandL(1);
	}
		if (iHsgEditorEditTitle->IsFocused())
		{
			if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow))
			{
				iHsgEditorEditTitle->SetFocus(EFalse);
				iHsgEditorEditContent->SetFocus(ETrue);
				return EKeyWasNotConsumed;
			}
			return iHsgEditorEditTitle->OfferKeyEventL(aKeyEvent, aType);
		}

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

void CHsgEditTextContainer::HsgSetEditTitle(const TDesC& aTitle)
{
	iHsgEditorEditTitle->SetTextL(&aTitle);

}
void CHsgEditTextContainer::HsgSetEditContent(const TDesC& aContent)
{
	iHsgEditorEditContent->SetTextL(&aContent);
}

void CHsgEditTextContainer:: HsgGetEditTitle(TDes& aTitle)
{
	iHsgEditorEditTitle->GetText(aTitle);

}
void CHsgEditTextContainer::HsgGetEditContent(TDes &aContent)
{
	iHsgEditorEditContent->GetText(aContent);
}

// End of File  

⌨️ 快捷键说明

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