00001
00002
00003
00004
00005 #include <eikrted.h>
00006 #include <txtrich.h>
00007
00008 #include "SMSExampleRTEContainer.h"
00009
00010
00011 #define KEditorPosition TPoint(0,0)
00012
00013
00014 const TInt KNumberOfControls = 1;
00015
00016 const TInt KNumberOfLines = 0;
00017 const TInt KTextLimit = 128;
00018
00019 _LIT(KEventLog, "Event log: \n" );
00020 _LIT(KTextLine, "---------------------------");
00021
00022
00023
00024
00025 CSMSExampleRTEContainer* CSMSExampleRTEContainer::NewL(const TRect& aRect)
00026 {
00027 CSMSExampleRTEContainer* self = CSMSExampleRTEContainer::NewLC(aRect);
00028 CleanupStack::Pop(self);
00029 return self;
00030 }
00031
00032
00033
00034
00035 CSMSExampleRTEContainer* CSMSExampleRTEContainer::NewLC(const TRect& aRect)
00036 {
00037 CSMSExampleRTEContainer* self = new (ELeave) CSMSExampleRTEContainer();
00038 CleanupStack::PushL(self);
00039 self->ConstructL(aRect);
00040 return self;
00041 }
00042
00043
00044
00045
00046 void CSMSExampleRTEContainer::ConstructL(const TRect& aRect)
00047 {
00048 CreateWindowL();
00049
00050 iRTE = new (ELeave) CEikRichTextEditor();
00051 iRTE->SetContainerWindowL(*this);
00052 iRTE->ConstructL(this, KNumberOfLines, KTextLimit,
00053 CEikEdwin::EReadOnly | CEikEdwin::EAvkonDisableCursor,
00054 EGulFontControlAll, EGulNoSymbolFonts);
00055 iRTE->CreateScrollBarFrameL()->SetScrollBarVisibilityL(
00056 CEikScrollBarFrame::EOff, CEikScrollBarFrame::EOn);
00057
00058 SetRect(aRect);
00059 ActivateL();
00060
00061 DrawTextL(KEventLog);
00062 }
00063
00064
00065
00066
00067 CSMSExampleRTEContainer::~CSMSExampleRTEContainer()
00068 {
00069 delete iRTE;
00070 iRTE = 0;
00071 }
00072
00073
00074
00075
00076 void CSMSExampleRTEContainer::DrawTextWithoutCarriageL(const TDesC& aText)
00077 {
00078
00079 iCharacterFormatMask.SetAttrib(EAttColor);
00080 iCharacterFormat.iFontPresentation.iTextColor = KRgbBlack;
00081
00082 CRichText* text = iRTE->RichText();
00083 TInt textSize = text->DocumentLength();
00084
00085 text->InsertL(textSize, aText);
00086
00087 text->ApplyCharFormatL(iCharacterFormat, iCharacterFormatMask,
00088 textSize, aText.Length());
00089 iRTE->HandleTextChangedL();
00090 }
00091
00092
00093
00094
00095 void CSMSExampleRTEContainer::DrawTextL(const TDesC& aText)
00096 {
00097 DrawTextWithoutCarriageL(aText);
00098 AddCarriageReturnL();
00099 iRTE->HandleTextChangedL();
00100
00101
00102 iRTE->MoveCursorL(TCursorPosition::EFPageDown, EFalse);
00103 }
00104
00105
00106
00107
00108 void CSMSExampleRTEContainer::AddCarriageReturnL()
00109 {
00110 CRichText* text = iRTE->RichText();
00111 text->InsertL(text->DocumentLength(), CEditableText::ELineBreak);
00112 }
00113
00114
00115
00116
00117 void CSMSExampleRTEContainer::DrawUnderlinedTextL(const TDesC& aText)
00118 {
00119 iCharacterFormatMask.SetAttrib(EAttFontUnderline);
00120
00121 iCharacterFormat.iFontPresentation.iUnderline = EUnderlineOn;
00122 DrawTextWithoutCarriageL(aText);
00123 iCharacterFormat.iFontPresentation.iUnderline = EUnderlineOff;
00124 }
00125
00126
00127
00128
00129 void CSMSExampleRTEContainer::DrawLineL()
00130 {
00131 DrawTextL(KTextLine);
00132 }
00133
00134
00135
00136
00137 void CSMSExampleRTEContainer::SizeChanged()
00138 {
00139 TRect rect = Rect();
00140 TInt scrollbarWidth = GetScrollbarWidth();
00141 iRTE->SetExtent(KEditorPosition, TSize(rect.Width() - scrollbarWidth,
00142 rect.Height()));
00143 }
00144
00145
00146
00147
00148 TInt CSMSExampleRTEContainer::GetScrollbarWidth() const
00149 {
00150 TInt scrollbarWidth = iRTE->ScrollBarFrame()->
00151 ScrollBarBreadth(CEikScrollBar::EVertical);
00152
00153
00154 if (scrollbarWidth == 0)
00155 {
00156 scrollbarWidth = 8;
00157 }
00158 return scrollbarWidth;
00159 }
00160
00161 TInt CSMSExampleRTEContainer::CountComponentControls() const
00162 {
00163 return KNumberOfControls;
00164 }
00165
00166 CCoeControl* CSMSExampleRTEContainer::ComponentControl(TInt aIndex) const
00167 {
00168 switch (aIndex)
00169 {
00170 case 0:
00171 return iRTE;
00172 default:
00173 return NULL;
00174 }
00175 }
00176
00177 void CSMSExampleRTEContainer::Draw(const TRect& aRect) const
00178 {
00179 CWindowGc& gc = SystemGc();
00180 gc.SetPenStyle(CGraphicsContext::ENullPen);
00181 gc.SetBrushColor(KRgbWhite);
00182 gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
00183 gc.DrawRect(aRect);
00184 }
00185
00186 TKeyResponse CSMSExampleRTEContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,
00187 TEventCode aType)
00188 {
00189 if (iRTE)
00190 {
00191 return iRTE->OfferKeyEventL(aKeyEvent, aType);
00192 }
00193 else
00194 {
00195 return CCoeControl::OfferKeyEventL(aKeyEvent, aType);
00196 }
00197 }
00198
00199