📄 chsgedittextcontainer.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 + -