diff -r 000000000000 -r 1fb32624e06b textrendering/textformatting/test/src/TCustomWrap.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textrendering/textformatting/test/src/TCustomWrap.cpp Tue Feb 02 02:02:46 2010 +0200 @@ -0,0 +1,282 @@ +/* +* Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#include "TCustomWrap.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "TCustomWrap.hrh" +#include + +// +// ---------------- CCustomWrapAppControl (a simple Edwin control) ----------- + +class CCustomWrapAppControl : public CCoeControl, public MCoeControlObserver + { +public: + ~CCustomWrapAppControl(); + void ConstructL(); + void SetCustomWrapOnL(); + void SetCustomWrapCustomL(); + void SetCustomWrapOffL(); + void ReformatL(); + +private: // framework + void Draw(const TRect& aRect) const; + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType); // from the MCoeControlObserverInterface +// void ActivateL(); + virtual TInt CountComponentControls() const; + virtual CCoeControl* ComponentControl(TInt aIndex) const; + // the two functions above are needed in order for the control to work correctly. + + +private: + void CreateEdwinL(); + + +private: + CCoeControl* iFocusControl; // The control that is currently in focus. + CEikEdwin* iEdwin; // I still need a focus control, even if just one EikEdwin... + const MFormCustomWrap* iStandardCustomWrap; + TTestCustomWrap iCustomCustomWrap; + }; + +CCustomWrapAppControl::~CCustomWrapAppControl() + { + delete iEdwin; + } + +void CCustomWrapAppControl::ConstructL() + { + CreateWindowL(); + Window().SetShadowDisabled(ETrue); + CreateEdwinL(); + iStandardCustomWrap = iEdwin->TextLayout()->CustomWrap(); + iFocusControl=iEdwin; + SetExtentToWholeScreen(); + ActivateL(); + iFocusControl->SetFocus(ETrue); + } + +//void CCustomWrapAppControl::ActivateL() +// { +// CCoeControl::ActivateL(); +// iEdwin->ActivateL(); +// } + +void CCustomWrapAppControl::HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType) + { + if (aEventType==EEventRequestFocus) + { + iFocusControl=aControl; + iFocusControl->SetFocus(ETrue,EDrawNow); + } + } + +TInt CCustomWrapAppControl::CountComponentControls() const + { + return 1; + } + +CCoeControl* CCustomWrapAppControl::ComponentControl(TInt /*aIndex*/) const + { + return iEdwin; + } + +void CCustomWrapAppControl::CreateEdwinL() + { + const TSize screenSize(iCoeEnv->ScreenDevice()->SizeInPixels()); + // Rich text editor. + iEdwin=new(ELeave) CEikRichTextEditor; + STATIC_CAST(CEikRichTextEditor*,iEdwin)->ConstructL(this,0,0,EEikEdwinCustomWrap); + //STATIC_CAST(CEikRichTextEditor*,iEdwin)->ConstructL(this,0,0,EEikEdwinInclusiveSizeFixed); + iEdwin->SetObserver(this); + iEdwin->CreateScrollBarFrameL(); + iEdwin->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOn); + iEdwin->SetExtent(TPoint(screenSize.iWidth/5,screenSize.iHeight/8),TSize(screenSize.iWidth/3,screenSize.iHeight*3/5)); + } + +TKeyResponse CCustomWrapAppControl::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) + { + if (aType==EEventKey) + { + iEdwin->OfferKeyEventL(aKeyEvent, aType); + } + return(EKeyWasConsumed); + } + +void CCustomWrapAppControl::Draw(const TRect& aRect) const + { + CWindowGc& gc=SystemGc(); + gc.SetBrushStyle(CGraphicsContext::ESolidBrush); + gc.SetBrushColor(KRgbWhite); + gc.SetPenStyle(CGraphicsContext::ENullPen); + gc.DrawRect(aRect); + } + + +void CCustomWrapAppControl::SetCustomWrapOnL() + { + iEdwin->TextLayout()->SetCustomWrap(iStandardCustomWrap); + ReformatL(); + } + +void CCustomWrapAppControl::SetCustomWrapCustomL() + { + iEdwin->TextLayout()->SetCustomWrap(&iCustomCustomWrap); + ReformatL(); + } + +void CCustomWrapAppControl::SetCustomWrapOffL() + { + iEdwin->TextLayout()->SetCustomWrap(0); + ReformatL(); + } + +void CCustomWrapAppControl::ReformatL() + { + iEdwin->NotifyNewFormatL(); + } + +// +// ---------------------- CCustomWrapAppView definition ---------------- +// + +class CCustomWrapAppUi : public CEikAppUi + { +public: + void ConstructL(); + ~CCustomWrapAppUi(); +private: // from CEikAppUi -- framework + void HandleCommandL(TInt aCommand); +private: + CCustomWrapAppControl* iCustomWrapAppControl; + + }; + +void CCustomWrapAppUi::ConstructL() + { + BaseConstructL(); + iCustomWrapAppControl=new(ELeave) CCustomWrapAppControl; + iCustomWrapAppControl->ConstructL(); + AddToStackL(iCustomWrapAppControl); + } + +CCustomWrapAppUi::~CCustomWrapAppUi() + { + RemoveFromStack(iCustomWrapAppControl); + delete iCustomWrapAppControl; + } + +void CCustomWrapAppUi::HandleCommandL(TInt aCommand) + { + switch(aCommand) + { + case EAppCmdExit: + CBaActiveScheduler::Exit(); + break; + case EAppCmdWrap0: + iCustomWrapAppControl->SetCustomWrapOffL(); + break; + case EAppCmdWrap1: + iCustomWrapAppControl->SetCustomWrapOnL(); + break; + case EAppCmdWrap2: + iCustomWrapAppControl->SetCustomWrapCustomL(); + break; + default: + break; + } + } + +// +// --------------------- CCustomWrapAppDoc class Definition ------------ +// + +class CCustomWrapAppDoc : public CEikDocument + { +public: + CCustomWrapAppDoc(CEikApplication& aApp); +private: + CEikAppUi* CreateAppUiL(); + }; + + +CCustomWrapAppDoc::CCustomWrapAppDoc(CEikApplication& aApp):CEikDocument(aApp) + { + // Nothing else to do, just call the base class constructor + // + } + +CEikAppUi* CCustomWrapAppDoc::CreateAppUiL() + { + return new (ELeave) CCustomWrapAppUi; + } +// +// ------------------------------ CCustomWrapApp ----------------------- +// + + +const TUid KCustomWrapUid = {0x10005d2f}; + +class CCustomWrapApp : public CEikApplication + { +private: + CApaDocument* CreateDocumentL(); + TUid AppDllUid() const; + + }; + +TUid CCustomWrapApp::AppDllUid() const + { + return KCustomWrapUid; + } + +CApaDocument* CCustomWrapApp::CreateDocumentL() + { + return new (ELeave) CCustomWrapAppDoc(*this); + } + + +//////////////////////////////////////////////////////////////////////////////////////////// +// + + static CApaApplication* NewApplication() + { + return new CCustomWrapApp; + } + + TInt E32Main() + { + return EikStart::RunApplication(&NewApplication); + } + +