www.pudn.com > LDFUCK.rar > EditContainer.cpp
#include#include #include #include #include #include "LDFUCK.rsg" #include //TDesC #include "EditContainer.h" //#include #include #include // TResourceReader #include CEditContainer::CEditContainer() { m_ptext = NULL; m_ptitle = NULL; } // EPOC default constructor can leave. void CEditContainer::ConstructL(const TRect& aRect, const TDesC& aNumber, const TDesC& aContent) { CreateWindowL(); //添加标签手机 b_plablename = new (ELeave) CEikLabel; b_plablename->SetContainerWindowL( *this ); TBuf<32> buf; CEikonEnv::Static()->ReadResource(buf, R_QTN_LF_EDITNUM); b_plablename->SetTextL(buf); b_plablename->SetExtent( TPoint(10,12), b_plablename->MinimumSize() ); //添加标签内容 b_plablecontent = new (ELeave) CEikLabel; b_plablecontent->SetContainerWindowL( *this ); // TBuf<32> buf; CEikonEnv::Static()->ReadResource(buf, R_QTN_LF_EDITCON); b_plablecontent->SetTextL(buf); b_plablecontent->SetExtent( TPoint(10,40), b_plablecontent->MinimumSize() ); //添加手机号码输入 m_ptext = new (ELeave) CEikEdwin(TGulBorder::ESingleBlack); m_ptext->SetContainerWindowL(*this); //add tempNumber // m_ptext->ConstructL(EAknEditorFlagLatinInputModesOnly); m_ptext->ConstructL(EEikEdwinNoAutoSelection | EEikEdwinIgnoreVirtualCursor, 11, 11, 1); m_ptext->SetAknEditorCurrentInputMode(EAknEditorNumericInputMode); m_ptext->SetAknEditorAllowedInputModes(EAknEditorNumericInputMode); m_ptext->SetAknEditorFlags(EAknEditorFlagLatinInputModesOnly); // m_ptext->SetAknEditorNumericKeymap(EAknEditorPlainNumberModeKeyMap); m_ptext->SetExtent(TPoint(50, 10), TSize(110, 20)); // TResourceReader reader; // iCoeEnv->CreateResourceReaderLC(reader, R_EDITVIEW_NUMBEREDIT); // CleanupStack::PopAndDestroy(); // reader //set Focus m_ptext->SetFocus(EFalse); //添加内容输入 m_ptitle = new (ELeave) CEikEdwin(TGulBorder::ESingleBlack); m_ptitle->SetContainerWindowL(*this); m_ptitle->ConstructL(EEikEdwinNoAutoSelection | EEikEdwinIgnoreVirtualCursor|EEikEdwinJustAutoCurEnd, 15, 77, 7); m_ptitle->SetExtent(TPoint(50, 40), TSize(110, 90)); //add TempContent this->addTemp(aNumber,aContent); //set Focus m_ptitle->SetFocus(ETrue); SetRect( aRect ); ActivateL(); } // destructor CEditContainer::~CEditContainer() { if(m_ptext) { delete m_ptext; m_ptext = NULL; } if(m_ptitle) { delete m_ptitle; m_ptitle = NULL; } if (b_plablename) { delete b_plablename; b_plablename=NULL; } if (b_plablecontent) { delete b_plablecontent; b_plablecontent=NULL; } } void CEditContainer::SizeChanged() { } // --------------------------------------------------------- // CEditContainer::CountComponentControls() const // return the number of controls // --------------------------------------------------------- // TInt CEditContainer::CountComponentControls() const { // return number of controls inside this container return 4; } // --------------------------------------------------------- // CEditContainer::ComponentControl(TInt aIndex) const // return the pointer to specified control. // --------------------------------------------------------- // CCoeControl* CEditContainer::ComponentControl( TInt aIndex ) const { switch(aIndex) { case 0 : return m_ptext; break; case 1 : return m_ptitle; break; case 2 : return b_plablename; break; case 3 : return b_plablecontent; break; default: return NULL; break; } } // --------------------------------------------------------- // CEditContainer::Draw(const TRect& aRect) const // handle the message when client region must be redrawn. // --------------------------------------------------------- // void CEditContainer::Draw( const TRect& aRect ) const { CWindowGc& gc = SystemGc(); //设置背景颜色为灰色 gc.SetPenStyle(CGraphicsContext::ENullPen); gc.SetBrushColor(KRgbGray); gc.SetBrushStyle(CGraphicsContext::ESolidBrush); gc.DrawRect(aRect); gc.Clear(Rect()); // gc.DrawRect(TRect(TPoint(10, 10), TSize(20, 20))); } // --------------------------------------------------------- // CAknExGridContainer::OfferKeyEventL( // const TKeyEvent& aKeyEvent, TEventCode aType ) // Handles the key events. // --------------------------------------------------------- // TKeyResponse CEditContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType ) { if (m_ptitle) { if (m_ptitle->IsFocused()) { if((aType == EEventKey) && (aKeyEvent.iCode == EKeyUpArrow)) { m_ptitle->SetFocus(EFalse); m_ptext->SetFocus(ETrue); return EKeyWasConsumed; } return m_ptitle->OfferKeyEventL(aKeyEvent, aType); } } if (m_ptext) { if (m_ptext->IsFocused()) { if((aType == EEventKey) && (aKeyEvent.iCode == EKeyDownArrow)) { m_ptext->SetFocus(EFalse); m_ptitle->SetFocus(ETrue); return EKeyWasConsumed; } return m_ptext->OfferKeyEventL(aKeyEvent, aType); } if (m_ptext) return m_ptext->OfferKeyEventL(aKeyEvent, aType); else return CCoeControl::OfferKeyEventL(aKeyEvent, aType); } return EKeyWasNotConsumed; } TBool CEditContainer::TextJudge() { TBuf<128> ztext; getText(ztext); TBuf<32> buf; if(ztext.Length() > 50) { CEikonEnv::Static()->ReadResource(buf, R_QTN_LF_ALERT_CON);//内容不得超过50字 CAknInformationNote* informationNote = new (ELeave) CAknInformationNote; informationNote->ExecuteLD(buf); return EFalse; } else return ETrue; } TBool CEditContainer::NumJudge() { TBuf<16> znumber; getNumber(znumber); TBuf<32> buf; if(znumber.Length() != 11) { CEikonEnv::Static()->ReadResource(buf, R_QTN_LF_ALERT_NUM);//请输入11位手机号 CAknInformationNote* informationNote = new (ELeave) CAknInformationNote; informationNote->ExecuteLD(buf); return EFalse; } else return ETrue; } void CEditContainer::getNumber( TDes& aNumber ) { m_ptext->GetText(aNumber); } void CEditContainer::getText( TDes& aText ) { m_ptitle->GetText(aText); } void CEditContainer::addTemp(const TDesC& aNumber,const TDesC& aContent) { TBuf<128> zCon; m_ptitle->GetText(zCon); zCon.Append(aContent); m_ptitle->SetTextL(&zCon); TBuf<128> zNum; zNum.Append(aNumber); m_ptext->SetTextL(&zNum); } // End of File