diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/txtrich_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/txtrich_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,283 +0,0 @@ - - -TB10.1 Example Applications: examples/AppFramework/txtshell/txtrich.cpp Source File - - - - -

examples/AppFramework/txtshell/txtrich.cpp

00001 // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
-00002 // All rights reserved.
-00003 // This component and the accompanying materials are made available
-00004 // under the terms of "Eclipse Public License v1.0"
-00005 // which accompanies this distribution, and is available
-00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
-00007 //
-00008 // Initial Contributors:
-00009 // Nokia Corporation - initial contribution.
-00010 //
-00011 // Contributors:
-00012 //
-00013 // Description:
-00014 //
-00015 
-00016 #include "txtexamp.h"
-00017 
-00018 #include <txtrich.h>
-00019 
-00020 CRichControl::~CRichControl()
-00021         {
-00022         delete iTextView; // text view
-00023         delete iLayout; // text layout
-00024         delete iRichText; // contained text object
-00025         delete iCharFormatLayer; // character format layer
-00026         delete iParaFormatLayer; // and para format layer
-00027         }
-00028 
-00029 
-00030 void CRichControl::UpdateModelL()
-00031         {
-00032         // Create all constant literal descriptors used in this function, 
-00033         // e.g. for message text
-00034         _LIT(KHamletSpeech, "To be, or not to be, that is the question; \
-00035 whether 'tis nobler in the mind to suffer the \
-00036 slings and arrows of outrageous fortune, or \
-00037 to stand against a sea of troubles, and by \
-00038 opposing end them."); 
-00039         _LIT(KPath,"\\richtxt.dat");
-00040         _LIT(KText1,"Rich text in bold. ");
-00041         _LIT(KText2,"Much larger rich text.");
-00042         _LIT(KText5,"New text has preserved formatting at insertion point. ");
-00043         _LIT(KText7,"New text has lost formatting at insertion point. ");
-00044         _LIT(KStatus0,"Initialised rich text object and text view");
-00045         _LIT(KStatus1,"InsertL() at position zero");
-00046         _LIT(KStatus2,"Inserted text with specific formatting applied");
-00047         _LIT(KStatus3,"Underlining applied to part of paragraph");
-00048         _LIT(KStatus4,"Deleted text, but preserved formatting ...");
-00049         _LIT(KStatus5,"... and inserted with same format");
-00050         _LIT(KStatus6,"Deleted text and forgot about formatting ...");
-00051         _LIT(KStatus7,"... and inserted with format before new text");
-00052         _LIT(KStatus8,"Added 2 new paragraphs with default formatting");
-00053         _LIT(KStatus9,"Set alignment for second paragraph");
-00054         _LIT(KStatus10,"Used StoreL() to store rich text and components");
-00055         _LIT(KStatus12,"Used RestoreL() to restore rich text and components");
-00056         _LIT(KStatusReset,"Reset();");
-00057         _LIT(KStatusDefault,"(overshot!!)");
-00058 
-00059         TBufC<28>   name(KPath);
-00060         
-00061         switch (Phase())
-00062                 {
-00063         case 0:
-00064                 {
-00065                 // Create text object, text view and layout.
-00066                 iParaFormatLayer=CParaFormatLayer::NewL(); // required para format layer
-00067                 iCharFormatLayer=CCharFormatLayer::NewL(); // required char format layer
-00068                 // Create an empty rich text object
-00069                 iRichText=CRichText::NewL(iParaFormatLayer, iCharFormatLayer);
-00070                 // prerequisites for view - viewing rectangle
-00071                 iViewRect=Rect();
-00072                 iViewRect.Shrink(3,3);
-00073                 // context and device
-00074                 CWindowGc& gc=SystemGc(); // get graphics context
-00075                 CBitmapDevice *device=(CBitmapDevice*) (gc.Device()); // device
-00076                 // Create the text layout, (required by text view),
-00077                 // with the text object and a wrap width (=width of view rect)
-00078                 iLayout=CTextLayout::NewL(iRichText,iViewRect.Width());
-00079                 // Create text view
-00080                 iTextView=CTextView::NewL(iLayout, iViewRect,
-00081                                 device,
-00082                                 device,
-00083                                 &Window(),
-00084                                 0, // no window group
-00085                                 &iCoeEnv->WsSession()
-00086                                 ); // new view
-00087                 // message to say what we did
-00088                 iFormObserver->NotifyStatus(KStatus0);
-00089                 break;
-00090                 }
-00091         case 1:
-00092                 // Set some character formatting
-00093                 iCharFormatMask.SetAttrib(EAttFontStrokeWeight);  
-00094                 
-00095                 iCharFormat.iFontSpec.iFontStyle.SetStrokeWeight(EStrokeWeightBold);
-00096 
-00097                 // apply formatting - pos and length are irrelevent
-00098                 iRichText->ApplyCharFormatL(iCharFormat,iCharFormatMask, 0,0);
-00099                 
-00100                 // Insert some text
-00101                 iRichText->InsertL(0,KText1);
-00102                 iFormObserver->NotifyStatus(KStatus1);
-00103                 break;
-00104         case 2:
-00105                 // Insert some more text with specific formatting
-00106                 {
-00107                 TCharFormat charFormat;
-00108                 TCharFormatMask charFormatMask;
-00109                 charFormatMask.SetAttrib(EAttFontHeight); // interested in font height
-00110                 charFormat.iFontSpec.iHeight=480; // (in twips) increase it from default to 1/3 inch
-00111                 TInt pos=iRichText->DocumentLength(); // insertion position = end of doc
-00112                 iRichText->SetInsertCharFormatL(charFormat, charFormatMask,pos);
-00113                         // Set formatting, when inserting at this position
-00114                 iRichText->InsertL(pos,KText2); // Insert text at this position
-00115                 iRichText->CancelInsertCharFormat(); // Cancel "insert pending" state
-00116                         // This is necessary before inserting anywhere else
-00117                 iFormObserver->NotifyStatus(KStatus2);
-00118                 break;
-00119                 }
-00120         case 3:
-00121                 {
-00122                 // Apply underlining to text which uses a mixture of formatting.
-00123                 TCharFormat charFormat;
-00124                 TCharFormatMask charFormatMask;
-00125                 charFormatMask.SetAttrib(EAttFontUnderline); // interested in underline
-00126                 charFormat.iFontPresentation.iUnderline=EUnderlineOn; // set it on
-00127                 iRichText->ApplyCharFormatL(charFormat, charFormatMask,13,10);
-00128                                 // apply this character formatting, from position 13, 10 characters
-00129                 iFormObserver->NotifyStatus(KStatus3);
-00130                 break;
-00131                 }
-00132         case 4:
-00133                 // delete text, then insert new text at same point to 
-00134                 // demonstrate preserving the deleted text's formatting.
-00135                 iRichText->DelSetInsertCharFormatL(19,(iRichText->DocumentLength()-19));
-00136                         // delete from pos 19, for rest of document; retain formatting at pos 19
-00137                 iFormObserver->NotifyStatus(KStatus4);
-00138                 break;
-00139         case 5:
-00140                 // ... and then insert with same format
-00141                 iRichText->InsertL(19,KText5);
-00142                         // inserted with old formatting
-00143                 iRichText->CancelInsertCharFormat(); // must cancel before inserting elsewhere
-00144                 iFormObserver->NotifyStatus(KStatus5);
-00145                 break;
-00146         case 6:
-00147                 // delete some text ... 
-00148                 iRichText->DeleteL(19,(iRichText->DocumentLength()-19));
-00149                         // DeleteL() deletes, and forgets formatting
-00150                 iFormObserver->NotifyStatus(KStatus6);
-00151                 break;
-00152         case 7:
-00153                 // ... then insert new text at that point to 
-00154                 // demonstrate how DeleteL() differs from DelSetInsertCharFormatL(). 
-00155                 iRichText->InsertL(19,KText7);
-00156                         // insert, inheriting current formatting from char before 10
-00157                         // (no need to cancel anything!)
-00158                 iFormObserver->NotifyStatus(KStatus7);
-00159                 break;
-00160         case 8:
-00161                 {
-00162                 // Rich text paragraph formatting.
-00163                 // Insert another 2 paragraphs using default formatting.
-00164                 // First remove specific formatting from final paragraph delimiter,
-00165                 // otherwise new paragraphs would pick up this formatting.
-00166                 iRichText->RemoveSpecificCharFormatL(iRichText->DocumentLength()-1,1);
-00167                 iRichText->InsertL(iRichText->DocumentLength(),
-00168                         CEditableText::EParagraphDelimiter); // new para
-00169                 for (TInt count=0;count<2;count++) // insert lots of text, twice over
-00170                         {       
-00171                         iRichText->InsertL(iRichText->DocumentLength(),KHamletSpeech); 
-00172                         iRichText->InsertL(iRichText->DocumentLength(),
-00173                                 CEditableText::EParagraphDelimiter); // end para
-00174                         };
-00175                 iFormObserver->NotifyStatus(KStatus8);
-00176                 break;
-00177                 }
-00178         case 9:
-00179                 {
-00180                 CParaFormat* paraFormat=CParaFormat::NewLC();
-00181                 TParaFormatMask paraFormatMask;
-00182                 // make para 1 right-aligned (numbering starts at 0)
-00183                 TInt pos, length;
-00184                 paraFormatMask.SetAttrib(EAttAlignment); // interested in alignment
-00185                 paraFormat->iHorizontalAlignment=CParaFormat::ERightAlign; // right-align
-00186                 pos=iRichText->CharPosOfParagraph(length,1); // start of para 2
-00187                 iRichText->ApplyParaFormatL(paraFormat,paraFormatMask,pos,1);
-00188                         // apply format to entire para - even 1 char will do
-00189                 iFormObserver->NotifyStatus(KStatus9);
-00190                 CleanupStack::PopAndDestroy();  // paraFormat
-00191                 break;
-00192                 }
-00193 // Storing and restoring
-00194         case 10:
-00195                 // set up a file store
-00196                 {
-00197                 RFs         theFs;
-00198                 CFileStore* theStore;
-00199                 TParse      filestorename;
-00200                 // Make a connection to the file server
-00201                 theFs.Connect();
-00202                 theFs.Parse(name,filestorename);
-00203                 theStore=CDirectFileStore::ReplaceLC(theFs,filestorename.FullName(),EFileRead|EFileWrite);
-00204                 theStore->SetTypeL(KDirectFileStoreLayoutUid);
-00205                 // store rich text to file store
-00206                 iStreamId=iRichText->StoreL(*theStore); 
-00207                 // close the store
-00208                 CleanupStack::PopAndDestroy(); // pop and destroy store
-00209                 // Disconnect from file server
-00210                 theFs.Close();
-00211                 iFormObserver->NotifyStatus(KStatus10);
-00212                 break;
-00213                 }
-00214         case 11:
-00215                 // reset document, clearing it of all content
-00216                 iRichText->Reset();
-00217                 iFormObserver->NotifyStatus(KStatusReset);
-00218                 break;
-00219         case 12:
-00220                 // open the store
-00221                 {
-00222                 RFs         theFs;
-00223                 CFileStore* theStore;
-00224                 TParse      filestorename;
-00225 
-00226                 theFs.Connect();
-00227                 theFs.Parse(name,filestorename);
-00228                 theStore=CDirectFileStore::OpenLC(theFs,filestorename.FullName(),EFileRead|EFileShareReadersOnly);
-00229                 if (theStore->Type()[0]!=KDirectFileStoreLayoutUid)
-00230                         User::Leave(KErrUnknown);
-00231                 // internalize from the store
-00232                 iRichText->RestoreL(*theStore,iStreamId);
-00233                 // close the store
-00234                 CleanupStack::PopAndDestroy(); // pop and destroy store
-00235                 theFs.Close();
-00236                 iFormObserver->NotifyStatus(KStatus12);
-00237                 break;
-00238                 }
-00239         case 13:
-00240                 //reset document
-00241                 iRichText->Reset();
-00242                 // message to say what we did
-00243                 iFormObserver->NotifyStatus(KStatusReset);
-00244                 break;
-00245         default:
-00246                 iFormObserver->NotifyStatus(KStatusDefault);
-00247                 break;
-00248                 }
-00249         }
-00250 
-00251 
-00252 void CRichControl::Draw(const TRect& aRect) const
-00253         {
-00254         // draw surround
-00255         CGraphicsContext& gc=SystemGc(); // context to draw into
-00256         TRect rect=Rect(); // screen boundary
-00257         gc.DrawRect(rect); // outline screen boundary
-00258         rect.Shrink(1,1);
-00259         gc.SetPenColor(KRgbWhite);
-00260         gc.DrawRect(rect);
-00261         rect.Shrink(1,1);
-00262         gc.SetPenColor(KRgbBlack);
-00263         gc.DrawRect(rect);
-00264         // draw editable text - will work unless OOM
-00265         TInt err;
-00266         TRAP(err,iTextView->FormatTextL());
-00267         if (err) return;
-00268         TRAP(err,iTextView->DrawL(aRect));
-00269 }
-00270 
-00271 
-

Generated on Thu Jan 21 10:32:54 2010 for TB10.1 Example Applications by  - -doxygen 1.5.3
- -