| author | Tom Sutcliffe <thomas.sutcliffe@accenture.com> | 
| Tue, 07 Dec 2010 17:29:09 +0000 | |
| changeset 114 | ceac7084e2e5 | 
| parent 0 | 7f656887cf89 | 
| permissions | -rw-r--r-- | 
| 0 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1 | // lrtextview.cpp | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 2 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 3 | // Copyright (c) 2009 - 2010 Accenture. All rights reserved. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 4 | // This component and the accompanying materials are made available | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 5 | // under the terms of the "Eclipse Public License v1.0" | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 6 | // which accompanies this distribution, and is available | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 7 | // at the URL "http://www.eclipse.org/legal/epl-v10.html". | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 8 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 9 | // Initial Contributors: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 10 | // Accenture - Initial contribution | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 11 | // | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 12 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 13 | #include "lrtextview.h" | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 14 | #include <e32cons.h> | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 15 | #include "filebuffer.h" | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 16 | #include <fshell/common.mmh> | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 17 | #include <fshell/ltkutils.h> | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 18 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 19 | const TInt KLastCtrlChar = 0x1f; //Last control char in ASCII | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 20 | const TInt KCtrlHTab = 0x09; //Horizontal Tab | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 21 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 22 | CLRTextView* CLRTextView::NewL(MConsoleProvider& aConsoleProvider, CFedBufferBase& aBuffer) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 23 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 24 | CLRTextView* self = new (ELeave) CLRTextView(aConsoleProvider, aBuffer); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 25 | CleanupStack::PushL(self); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 26 | self->ConstructL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 27 | CleanupStack::Pop(self); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 28 | return self; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 29 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 30 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 31 | CLRTextView::~CLRTextView() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 32 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 33 | delete iLineData; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 34 | delete iMarkFlasher; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 35 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 36 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 37 | CLRTextView::CLRTextView(MConsoleProvider& aConsoleProvider, CFedBufferBase& aBuffer) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 38 | : CTextView(aConsoleProvider, aBuffer), iMarkDocPos(-1), iOldNextLine(-1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 39 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 40 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 41 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 42 | void CLRTextView::ConstructL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 43 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 44 | iLineData = new(ELeave) CLineData; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 45 | CTextView::ConstructL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 46 | iMarkFlasher = CPeriodic::NewL(CActive::EPriorityStandard); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 47 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 48 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 49 | //MDeferredClose | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 50 | TBool CLRTextView::TryCloseL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 51 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 52 | if (!iBuffer.Modified()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 53 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 54 | return ETrue; // Ok to close now | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 55 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 56 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 57 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 58 | 		TKeyCode ch = iConsoleProvider.Query(_L("Save changes to file? (yes/no/cancel) "), _L("ync\x1B"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 59 | if (ch == 'c' || ch == EKeyEscape) return EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 60 | if (ch == 'y') | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 61 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 62 | TInt err = Save(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 63 | if (err) return EFalse; // Don't allow exit if the save failed | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 64 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 65 | return ETrue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 66 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 67 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 68 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 69 | TInt CLRTextView::Save() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 70 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 71 | if (!iBuffer.Editable() || iLineIsErrorMessage) return KErrNotSupported; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 72 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 73 | CancelMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 74 | TBool wasOpen = iBuffer.IsOpen(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 75 | TInt err = KErrNone; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 76 | const TDesC& name = iBuffer.Title(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 77 | if (name.Length()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 78 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 79 | 		iConsoleProvider.InfoPrint(_L("Saving"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 80 | TRAP(err, iBuffer.SaveL(name, ETrue)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 81 | HandleSaveResult(err, wasOpen, iBuffer.Title()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 82 | return err; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 83 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 84 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 85 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 86 | return SaveAs(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 87 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 88 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 89 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 90 | TInt CLRTextView::SaveAs() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 91 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 92 | if (!iBuffer.Editable() || iLineIsErrorMessage) return KErrNotSupported; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 93 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 94 | CancelMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 95 | TBool wasOpen = iBuffer.IsOpen(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 96 | TFileName name = iBuffer.Title(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 97 | TInt err = KErrCancel; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 98 | 	TBool go = iConsoleProvider.QueryFilename(_L("Save as: "), name);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 99 | if (go) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 100 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 101 | 		iConsoleProvider.InfoPrint(_L("Saving"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 102 | TRAP(err, iBuffer.SaveL(name, EFalse)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 103 | if (err == KErrAlreadyExists) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 104 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 105 | 			if (iConsoleProvider.Query(_L("File already exists. Replace? (yes/no) "), _L("yn")) == 'y')
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 106 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 107 | 				iConsoleProvider.InfoPrint(_L("Saving"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 108 | TRAP(err, iBuffer.SaveL(name, ETrue)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 109 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 110 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 111 | HandleSaveResult(err, wasOpen, iBuffer.Title()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 112 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 113 | return err; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 114 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 115 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 116 | void CLRTextView::HandleSaveResult(TInt aError, TBool aWasOpen, const TDesC& aName) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 117 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 118 | if (aError == KErrNone) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 119 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 120 | TRAP_IGNORE(DoRedrawL()); // Not only can QueryFilename mess up the screen, saving the file could change the line endings and thus change the character counts, meaning we need to recalculate & redraw | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 121 | 		iConsoleProvider.InfoPrint(_L("Save succeeded"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 122 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 123 | else if (aWasOpen && !iBuffer.IsOpen()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 124 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 125 | // An error occurred after the original file was closed. This is fatal so we need to put up a dialog to that effect | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 126 | 		iLine.Format(_L("Temp file @ %S"), &aName);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 127 | iLineIsErrorMessage = ETrue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 128 | UpdateStatus(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 129 | 		iConsoleProvider.InfoPrint(_L("Failed to rename temp file (%d)"), aError);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 130 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 131 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 132 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 133 | // Failed to save, but we didn't mess with the original so we can carry on using it | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 134 | TRAP_IGNORE(DoRedrawL()); // Not only can QueryFilename mess up the screen, saving the file could change the line endings and thus change the character counts, meaning we need to recalculate & redraw | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 135 | switch (aError) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 136 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 137 | case KErrDiskFull: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 138 | 				iConsoleProvider.InfoPrint(_L("Disk full, couldn't save file"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 139 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 140 | case KErrNoMemory: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 141 | 				iConsoleProvider.InfoPrint(_L("Out of memory!"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 142 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 143 | case KErrPathNotFound: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 144 | 				iConsoleProvider.InfoPrint(_L("KErrPathNotFound. Directory doesn't exist?"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 145 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 146 | case KErrGeneral: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 147 | 				iConsoleProvider.InfoPrint(_L("Couldn't save file. No idea why"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 148 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 149 | case KErrBadName: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 150 | 				iConsoleProvider.InfoPrint(_L("Bad file name"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 151 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 152 | case KErrAccessDenied: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 153 | 				iConsoleProvider.InfoPrint(_L("Access denied. Read-only file or disk?"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 154 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 155 | default: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 156 | 				iConsoleProvider.InfoPrint(_L("Unable to save file: %d"), aError);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 157 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 158 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 159 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 160 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 161 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 162 | //MKeyConsumer | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 163 | TBool CLRTextView::ConsumeKeyL(const TKeyCode& aCode) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 164 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 165 | TBool handled = ETrue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 166 | switch(aCode) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 167 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 168 | case EKeyUpArrow: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 169 | MoveCursor(0, -1); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 170 | case EKeyDownArrow: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 171 | MoveCursor(0, 1); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 172 | case EKeyLeftArrow: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 173 | MoveCursor(-1, 0); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 174 | case EKeyRightArrow: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 175 | MoveCursor(1, 0); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 176 | case EKeyPageUp: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 177 | 		case CTRL('u'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 178 | MoveCursor(0, -iWindow.iHeight); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 179 | case EKeyPageDown: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 180 | 		case CTRL('d'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 181 | MoveCursor(0, iWindow.iHeight); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 182 | case EKeyHome: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 183 | UpdateCursor(TPoint(0, iCursor.iY)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 184 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 185 | 		case CTRL('t'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 186 | iCursor.SetXY(0, 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 187 | RequestData(ETrue, 0); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 188 | 		case CTRL('b'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 189 | GoToLine(KMaxTInt); break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 190 | case EKeyEnd: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 191 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 192 | TInt pos = iLineData->LastValidPosition(iCursor.iY); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 193 | UpdateCursor(TPoint(pos, iCursor.iY)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 194 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 195 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 196 | case EKeyBackspace: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 197 | DeleteTextL(-1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 198 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 199 | case EKeyDelete: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 200 | DeleteTextL(1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 201 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 202 | 		case CTRL('s'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 203 | Save(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 204 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 205 | 		case CTRL('a'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 206 | SaveAs(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 207 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 208 | 		case CTRL('k'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 209 | DeleteCurrentLineL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 210 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 211 | 		case CTRL('g'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 212 | GoToLine(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 213 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 214 | 		case CTRL('f'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 215 | Find(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 216 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 217 | 		case CTRL('v'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 218 | PasteL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 219 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 220 | 		case CTRL('c'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 221 | if (MarkActive()) CopyOrCutL(EFalse); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 222 | else SetMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 223 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 224 | 		case CTRL('x'):
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 225 | if (MarkActive()) CopyOrCutL(ETrue); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 226 | else SetMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 227 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 228 | default: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 229 | handled = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 230 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 231 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 232 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 233 | if (!handled && (aCode == EKeyEnter || aCode == EKeyTab || TChar(aCode).IsPrint())) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 234 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 235 | TBuf<1> buf; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 236 | buf.Append(aCode); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 237 | InsertTextL(buf); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 238 | handled = ETrue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 239 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 240 | return handled; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 241 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 242 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 243 | void CLRTextView::MoveCursor(TInt aX, TInt aY) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 244 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 245 | if (aX) ASSERT(aY == 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 246 | if (aY) ASSERT(aX == 0); // Can't handle moving in both axes at once | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 247 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 248 | TInt line = iCursor.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 249 | TInt dir = (aX > 0) ? 1 : -1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 250 | TInt newX = iCursor.iX; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 251 | while (aX) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 252 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 253 | newX += dir; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 254 | if (newX < 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 255 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 256 | // Move to end of previous line | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 257 | newX = iWindow.iWidth; // Validate cursor will fix this, in the case where this causes us to scroll up a line | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 258 | aY--; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 259 | break; // We don't really support seeking further than one line either way | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 260 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 261 | else if (newX >= iWindow.iWidth-1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 262 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 263 | // Move to start of next line | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 264 | newX = 0; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 265 | aY++; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 266 | break; // We don't really support seeking further than one line either way | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 267 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 268 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 269 | if (iLineData->IsScreenPositionValid(line, newX)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 270 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 271 | aX -= dir; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 272 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 273 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 274 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 275 | if (line + aY < 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 276 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 277 | // Scroll up | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 278 | SeekData(iLineData->DocumentPosition(0), aY); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 279 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 280 | else if (line + aY >= iWindow.iHeight) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 281 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 282 | // Scroll down | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 283 | SeekData(iLineData->DocumentPosition(0), aY); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 284 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 285 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 286 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 287 | // Just update cursor | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 288 | if (iLineData->IsScreenPositionValid(line + aY, 0)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 289 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 290 | // If the line len is -1 it means the doc doesn't extend as far as this line, therefore we shouldn't allow the cursor to be moved to it | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 291 | UpdateCursor(TPoint(newX, iCursor.iY + aY)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 292 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 293 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 294 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 295 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 296 | void CLRTextView::DoResizeL(const TWindow& /*aOldWindow*/) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 297 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 298 | DoRedrawL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 299 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 300 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 301 | void CLRTextView::DoRedrawL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 302 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 303 | iLineData->EnsureCapacityL(iWindow.iWidth, iWindow.iHeight); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 304 | ValidateCursor(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 305 | RequestData(ETrue, iLineData->DocumentPosition(0)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 306 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 307 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 308 | void CLRTextView::DoDrawL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 309 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 310 | DoDrawL(iRecursiveUpdateFlag ? *iRecursiveUpdateFlag : ETrue); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 311 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 312 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 313 | void CLRTextView::DoDrawL(TBool aUpdateCursorAndStatus) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 314 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 315 | if (iDrawPoint == TPoint(iWindow.iX, iWindow.iY)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 316 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 317 | iLineData->SetDocumentPositionForLine(0, iRange.iLocation); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 318 | iLineData->SetFileLineNumberForLine(0, iRangeStartLineNumber); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 319 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 320 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 321 | ASSERT(iRange.iLength == iDes.Length()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 322 | HideCursor(); // Don't show the cursor while we're moving it around drawing - will be shown again by UpdateCursor | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 323 | for (iCurrentDrawDocIndex = 0; iCurrentDrawDocIndex < iDes.Length(); iCurrentDrawDocIndex++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 324 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 325 | TUint16 c = iDes[iCurrentDrawDocIndex]; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 326 | if(iDrawPoint.iY >= iWindow.NextY()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 327 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 328 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 329 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 330 | if(c <= KLastCtrlChar) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 331 | HandleControlChar(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 332 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 333 | AppendChar(c); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 334 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 335 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 336 | TBool moreData = !iBuffer.DocumentPositionIsEof(iRange.Max()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 337 | TBool filledScreen = iDrawPoint.iY >= iWindow.NextY(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 338 | if (!filledScreen) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 339 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 340 | WriteChars(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 341 | LineFinished(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 342 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 343 | if (!moreData) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 344 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 345 | iDrawPoint.iY++; // Start from the line *after* the line we were on | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 346 | // In the case where we've finished writing but haven't filled the screen, we need to blank the rest of it (because to avoid flicker we don't do ClearScreens) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 347 | while (iDrawPoint.iY < iWindow.NextY()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 348 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 349 | iDrawPoint.iX = iWindow.iX; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 350 | 			iLine.Copy(_L("^"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 351 | WriteChars(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 352 | TInt lineNum = iDrawPoint.iY - iWindow.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 353 | iLineData->SetDocumentPositionForLine(lineNum+1, iLineData->DocumentPosition(lineNum)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 354 | iLineData->SetFileLineNumberForLine(lineNum, -1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 355 | iLineData->LineFinishedAt(lineNum, -1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 356 | iDrawPoint.iY++; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 357 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 358 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 359 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 360 | if (filledScreen || !moreData) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 361 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 362 | // Finished - null iDes and restore cursor | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 363 | iDes.Set(NULL, 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 364 | if (aUpdateCursorAndStatus) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 365 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 366 | UpdateCursor(iCursor); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 367 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 368 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 369 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 370 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 371 | TBool flagSet = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 372 | if (!iRecursiveUpdateFlag) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 373 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 374 | iRecursiveUpdateFlag = &aUpdateCursorAndStatus; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 375 | flagSet = ETrue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 376 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 377 | // More data needed to fill the screen | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 378 | RequestData(EFalse, iRange.Max()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 379 | if (flagSet) iRecursiveUpdateFlag = NULL; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 380 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 381 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 382 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 383 | void CLRTextView::ValidateCursor() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 384 | 	{	
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 385 | CTextView::ValidateCursor(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 386 | TInt maxX = iWindow.iWidth - 1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 387 | TInt line = iCursor.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 388 | while (iCursor.iX > 0 && !iLineData->IsScreenPositionValid(line, iCursor.iX)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 389 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 390 | // In case the cursor ended up in the dead space in the middle of a tab character | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 391 | iCursor.iX--; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 392 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 393 | while (line > 0 && !iLineData->IsScreenPositionValid(line, 0)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 394 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 395 | // In case the cursor has ended up in dead space | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 396 | iCursor.iY--; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 397 | line--; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 398 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 399 | maxX = iLineData->LastValidPosition(line); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 400 | if(iCursor.iX > maxX) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 401 | iCursor.iX = maxX; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 402 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 403 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 404 | void CLRTextView::HandleControlChar() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 405 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 406 | TUint8 c = iDes[iCurrentDrawDocIndex]; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 407 | if (c == KCtrlHTab) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 408 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 409 | TInt pos = iDrawPoint.iX - iWindow.iX + iLine.Length(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 410 | TInt numToWrite = TabWidth() - (pos % TabWidth()); // Tabs align to 4-column boundaries rather than just outputting 4 spaces | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 411 | numToWrite = Min(numToWrite, iWindow.iWidth-1-pos); // In case the tab causes a line continuation, we want to make sure the tab ends at the end of the line so the following character will start at column zero | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 412 | for(TInt i=0; i<numToWrite; i++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 413 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 414 | TInt line = iDrawPoint.iY - iWindow.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 415 | TInt col = iDrawPoint.iX - iWindow.iX + iLine.Length(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 416 | 			AppendChar(' ');
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 417 | if (i > 0) iLineData->SetPositionIsValid(line, col, EFalse); // i==0 (ie the first screen position of the tab) is a valid place to move the cursor to | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 418 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 419 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 420 | else if (c == '\r') | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 421 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 422 | if (iCurrentDrawDocIndex+1 < iDes.Length() && iDes[iCurrentDrawDocIndex+1] == '\n') iCurrentDrawDocIndex++; // Skip over the CR to the LF | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 423 | WriteLine(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 424 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 425 | else if (c == '\n') | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 426 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 427 | WriteLine(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 428 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 429 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 430 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 431 | // unknown control char - so escape it | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 432 | 		AppendChar('.');
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 433 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 434 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 435 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 436 | void CLRTextView::AppendChar(TUint16 aChar) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 437 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 438 | iLine.Append(TChar(aChar)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 439 | iLineData->SetPositionIsValid(iDrawPoint.iY - iWindow.iY, iDrawPoint.iX - iWindow.iX + iLine.Length(), ETrue); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 440 | if(iDrawPoint.iX + iLine.Length() == iWindow.NextX()-1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 441 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 442 | WriteChars(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 443 | WriteLineContinue(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 444 | GoToNextLine(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 445 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 446 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 447 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 448 | //Writes the current line on the screen and moves to the next verse and line | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 449 | void CLRTextView::WriteLine() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 450 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 451 | TInt thisLine = iDrawPoint.iY-iWindow.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 452 | WriteChars(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 453 | GoToNextLine(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 454 | iLineData->SetFileLineNumberForLine(thisLine+1, iLineData->FileLineNumber(thisLine) + 1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 455 | if (iOldNextLine != -1 && thisLine+1 == iOldNextLine && iLineData->DocumentPosition(iOldNextLine) == iOldNextLineDocPos + iPredictedOldNextLineDocPosDelta) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 456 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 457 | // We have drawn everything we need to, and the drawing didn't cause the former next line to move | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 458 | iDrawPoint.iY = iWindow.NextY(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 459 | UpdateDocumentPositionsStartingAtLine(iOldNextLine+1, iPredictedOldNextLineDocPosDelta); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 460 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 461 | iOldNextLine = -1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 462 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 463 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 464 | //Writes the current line on the screen | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 465 | void CLRTextView::WriteChars() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 466 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 467 | /* As an performance optimisation, we avoid calling ClearScreen when redrawing. Therefore we must ensure we | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 468 | * write to the entire line to prevent artifacts. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 469 | * | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 470 | * There are 2 approaches to this - either using CConsoleBase::ClearToEndOfLine or padding the line with | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 471 | * spaces up to the window width. ClearToEndOfLine is really slow in WINSCW tshell which is why it's not | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 472 | * used by default. On target it's probably more efficient to use it. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 473 | */ | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 474 | TPoint drawPoint(iDrawPoint); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 475 | TPoint endPoint(drawPoint.iX + iLine.Length(), drawPoint.iY); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 476 | iConsole.SetCursorPosAbs(drawPoint); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 477 | #ifdef FSHELL_WSERV_SUPPORT | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 478 | // text windowserver is really slow at ClearToEndOfLine | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 479 | #define USE_CLEARTOENDOFLINE | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 480 | #endif | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 481 | #ifdef USE_CLEARTOENDOFLINE | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 482 | iConsole.Write(iLine); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 483 | iConsole.ClearToEndOfLine(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 484 | #else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 485 | 	iLine.AppendFill(' ', iWindow.iWidth - (iDrawPoint.iX-iWindow.iX) - iLine.Length());
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 486 | iConsole.Write(iLine); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 487 | #endif | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 488 | iLine.Zero(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 489 | // Remember to reset the console pos and the drawpoint to the end of the line proper in case the WriteChars | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 490 | // was to half a line and the rest of the line is in another block. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 491 | iDrawPoint = endPoint; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 492 | iConsole.SetCursorPosAbs(iDrawPoint); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 493 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 494 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 495 | // Moves to the next screen line but doesn't move to the next file line (used when a line is longer than the width of the window) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 496 | void CLRTextView::GoToNextLine() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 497 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 498 | LineFinished(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 499 | iDrawPoint.iX = iWindow.iX; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 500 | iDrawPoint.iY++; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 501 | iLineData->SetPositionIsValid(iDrawPoint.iY-iWindow.iY, 0, ETrue); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 502 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 503 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 504 | void CLRTextView::LineFinished() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 505 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 506 | TInt currentLine = iDrawPoint.iY - iWindow.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 507 | if (currentLine == iWindow.iHeight) return; // This can happen (and is ok) when drawing the last line of the screen | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 508 | iLineData->LineFinishedAt(currentLine, iDrawPoint.iX - iWindow.iX); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 509 | iLineData->SetDocumentPositionForLine(currentLine+1, iRange.iLocation+iCurrentDrawDocIndex+1); // Plus one cos we haven't drawn the first character of the next line yet | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 510 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 511 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 512 | void CLRTextView::WriteLineContinue() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 513 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 514 | CColorConsoleBase* cons = iConsoleProvider.ColorConsole(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 515 | if (cons) cons->SetTextAttribute(ETextAttributeHighlight); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 516 | _LIT(KContinuation, "\\"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 517 | iConsole.Write(KContinuation); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 518 | if (cons) cons->SetTextAttribute(ETextAttributeNormal); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 519 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 520 | TInt thisLine = iDrawPoint.iY-iWindow.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 521 | iLineData->SetFileLineNumberForLine(thisLine+1, iLineData->FileLineNumber(thisLine)); // The new line has the same file number as the current line, because it's a continuation line | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 522 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 523 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 524 | TInt CLRTextView::DocumentPosition() const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 525 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 526 | TInt line = iCursor.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 527 | TInt pos = iLineData->DocumentPosition(line); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 528 | for (TInt i = 0; i < iCursor.iX; i++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 529 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 530 | if (iLineData->IsScreenPositionValid(line, i)) pos++; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 531 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 532 | return pos; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 533 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 534 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 535 | void CLRTextView::InsertTextL(const TDesC& aText) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 536 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 537 | if (!iBuffer.Editable() || iLineIsErrorMessage) return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 538 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 539 | CancelMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 540 | TInt pos = DocumentPosition(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 541 | iBuffer.InsertTextL(pos, aText); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 542 | if (iCursor.iX == iWindow.iWidth-1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 543 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 544 | // If the cursor is over a line continuation character (which it will be if it gets to this value) move cursor to the real insertion point at the start of the next line before doing anything - makes the logic much easier! | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 545 | MoveCursor(1, 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 546 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 547 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 548 | // If we can be sure it won't cause a reflow, shortcut the requesting and redrawing mechanism, for performance reasons | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 549 | TPoint cursorPos = WindowLocationForDocumentPosition(pos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 550 | TInt lineNum = cursorPos.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 551 | TBool posWasAtEndOfLine = cursorPos.iX == iLineData->LastValidPosition(lineNum) && cursorPos.iX + aText.Length() < iWindow.iWidth-1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 552 | 	if (posWasAtEndOfLine && aText.Locate('\t') == KErrNotFound && aText.Locate('\r') == KErrNotFound)
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 553 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 554 | // Can't optimise if the text contains tabs or newlines, we need to do the full algorithm in that case | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 555 | iConsole.Write(aText); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 556 | for (TInt i = 0; i < aText.Length(); i++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 557 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 558 | iLineData->SetPositionIsValid(lineNum, cursorPos.iX + 1 + i, ETrue); // Each added char makes the character position one after that character valid | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 559 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 560 | for (TInt l = lineNum+1; l <= iWindow.iHeight; l++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 561 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 562 | iLineData->SetDocumentPositionForLine(l, iLineData->DocumentPosition(l) + aText.Length()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 563 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 564 | MoveCursor(aText.Length(),0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 565 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 566 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 567 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 568 | RedrawFromPositionToEndOfLine(pos, aText.Length()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 569 | CenterDocPosOnScreen(pos + aText.Length()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 570 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 571 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 572 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 573 | void CLRTextView::RedrawFromPositionToEndOfLine(TInt aDocumentPosition, TInt aNumCharsInserted) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 574 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 575 | TPoint point = WindowLocationForDocumentPosition(aDocumentPosition); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 576 | ASSERT(point.iY >= 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 577 | iDrawPoint = point + iWindow.Origin(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 578 | // Try and avoid redrawing the whole screen if the RequestData doesn't make the line longer (in terms of screen lines) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 579 | TInt lastScreenLineForCurrentLine = point.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 580 | while (iLineData->FileLineNumber(lastScreenLineForCurrentLine+1) == iLineData->FileLineNumber(lastScreenLineForCurrentLine)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 581 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 582 | // We have to allow for the current line wrapping onto additional screen lines | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 583 | lastScreenLineForCurrentLine++; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 584 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 585 | iOldNextLine = lastScreenLineForCurrentLine + 1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 586 | iOldNextLineDocPos = iLineData->DocumentPosition(iOldNextLine); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 587 | iPredictedOldNextLineDocPosDelta = aNumCharsInserted; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 588 | RequestData(EFalse, aDocumentPosition); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 589 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 590 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 591 | void CLRTextView::DeleteTextL(TInt aNumChars) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 592 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 593 | if (!iBuffer.Editable() || iLineIsErrorMessage) return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 594 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 595 | CancelMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 596 | ASSERT(aNumChars >= -1); // Can't backspace more than one character | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 597 | TInt pos = DocumentPosition(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 598 | TRange range; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 599 | if (aNumChars < 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 600 | range = TRange(pos + aNumChars, -aNumChars); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 601 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 602 | range = TRange(pos, aNumChars); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 603 | range.Intersect(TRange(0, KMaxTInt)); // Clamp the range to zero | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 604 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 605 | if (range.iLength) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 606 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 607 | iBuffer.DeleteTextL(range); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 608 | TInt line = iCursor.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 609 | if (aNumChars == -1) MoveCursor(-1, 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 610 | // Seems to be an issue using RedrawFromPositionToEndOfLine when deleting from the start of a line - since we know it wouldn't be worth using it in that case, don't do it. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 611 | if (iCursor.iY == line && aNumChars == -1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 612 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 613 | RedrawFromPositionToEndOfLine(range.iLocation, -range.iLength); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 614 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 615 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 616 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 617 | iDrawPoint = iCursor + iWindow.Origin(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 618 | RequestData(EFalse, DocumentPosition()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 619 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 620 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 621 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 622 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 623 | void CLRTextView::DeleteCurrentLineL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 624 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 625 | if (!iBuffer.Editable() || iLineIsErrorMessage) return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 626 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 627 | CancelMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 628 | TInt currentLine = iCursor.iY; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 629 | TInt lineStart = iLineData->DocumentPosition(currentLine); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 630 | TInt lineLen = iLineData->DocumentPosition(currentLine+1) - lineStart; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 631 | if (lineLen > 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 632 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 633 | TRange range(lineStart, lineLen); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 634 | iBuffer.DeleteTextL(range); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 635 | iDrawPoint = TPoint(iWindow.iX, iWindow.iY + iCursor.iY); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 636 | RequestData(EFalse, lineStart); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 637 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 638 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 639 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 640 | void CLRTextView::UpdateCursor(const TPoint& aNewPos) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 641 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 642 | CTextView::UpdateCursor(aNewPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 643 | UpdateStatus(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 644 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 645 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 646 | void CLRTextView::UpdateStatus() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 647 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 648 | if (iLineIsErrorMessage) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 649 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 650 | iConsoleProvider.WriteStatus(iLine, KNullDesC); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 651 | return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 652 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 653 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 654 | _LIT(KUnknownDelim, "CRLF"); // Since that's what it will get output as | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 655 | _LIT(KUnknownEnc, "UTF-8"); // ditto | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 656 | const TDesC* lineEnding = &KUnknownDelim; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 657 | #define CASE_LIT(res, x, y) case x: { _LIT(KName, y); res = &KName; break; }
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 658 | switch(iBuffer.DelimiterType()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 659 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 660 | CASE_LIT(lineEnding, EDelimLF, "LF") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 661 | CASE_LIT(lineEnding, EDelimCR, "CR") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 662 | CASE_LIT(lineEnding, EDelimCRLF, "CRLF") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 663 | CASE_LIT(lineEnding, EDelimUnicode, "UniLF") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 664 | default: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 665 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 666 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 667 | const TDesC* encoding = &KUnknownEnc; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 668 | switch (iBuffer.Encoding()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 669 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 670 | CASE_LIT(encoding, EEncodingNarrow, "8-bit") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 671 | CASE_LIT(encoding, EEncodingUtf8, "UTF-8") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 672 | CASE_LIT(encoding, EEncodingUtf16LE, "UTF-16LE") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 673 | CASE_LIT(encoding, EEncodingUtf16BE, "UTF-16BE") | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 674 | default: | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 675 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 676 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 677 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 678 | const TDesC* modified = &KNullDesC; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 679 | if (iBuffer.Modified()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 680 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 681 | _LIT(KMod, "(*)"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 682 | modified = &KMod; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 683 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 684 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 685 | TInt currentLine = iLineData->FileLineNumber(iCursor.iY) + 1; // Human-readable line numbers are always shown as 1-based | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 686 | TInt currentCol = iCursor.iX + 1; // Human-readable col numbers are always shown as 1-based, annoying as it is we will do the same | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 687 | TInt docPos = DocumentPosition(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 688 | _LIT(KStatus, "%S %S %S Ln:%d Col:%d Char:%d"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 689 | _LIT(KShortStatus, "%S %S %S Ln:%d"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 690 | _LIT(KMarkStatus, "Mark@%d. ^X/^C to complete. Ln:%d Ch:%d"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 691 | const TDesC* title = &iBuffer.Title(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 692 | _LIT(KUntitled, "untitled"); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 693 | if (title->Length() == 0) title = &KUntitled; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 694 | if (MarkActive()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 695 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 696 | iConsoleProvider.WriteStatus(KNullDesC, KMarkStatus, iMarkDocPos, currentLine, docPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 697 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 698 | else if (iConsole.ScreenSize().iWidth < 50) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 699 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 700 | iConsoleProvider.WriteStatus(*title, KShortStatus, modified, lineEnding, encoding, currentLine); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 701 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 702 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 703 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 704 | iConsoleProvider.WriteStatus(*title, KStatus, modified, lineEnding, encoding, currentLine, currentCol, docPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 705 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 706 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 707 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 708 | void CLRTextView::GoToLine() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 709 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 710 | TBuf<32> lineText; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 711 | 	TBool go = iConsoleProvider.QueryText(_L("Go to line: "), lineText);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 712 | if (go == EFalse) return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 713 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 714 | TLex lex(lineText); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 715 | TBool gotoLine = ETrue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 716 | if (lex.Peek() == 'c') | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 717 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 718 | // Go to character pos | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 719 | lex.Inc(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 720 | gotoLine = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 721 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 722 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 723 | TInt pos; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 724 | TInt err = lex.Val(pos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 725 | if (err || pos <= 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 726 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 727 | 		iConsoleProvider.InfoPrint(_L("Couldn't parse line number '%S'"), &lineText);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 728 | return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 729 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 730 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 731 | if (gotoLine && pos > 1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 732 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 733 | GoToLine(pos-1); // -1 to change 1-based display number to internal 0-based. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 734 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 735 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 736 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 737 | CenterDocPosOnScreen(pos-1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 738 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 739 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 740 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 741 | void CLRTextView::GoToLine(TInt aLine) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 742 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 743 | TInt err = iBuffer.SeekFromOffset(*this, 0, aLine, KMaxTInt); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 744 | if (err) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 745 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 746 | HandleDataLoadError(err); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 747 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 748 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 749 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 750 | CenterDocPosOnScreen(iRange.iLocation); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 751 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 752 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 753 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 754 | void CLRTextView::Find() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 755 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 756 | TBool searchBackwards = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 757 | 	TBool proceed = iConsoleProvider.QueryText(_L("Find text: "), iFindText);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 758 | while (proceed) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 759 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 760 | TInt nextLineStart = iLineData->DocumentPosition(iCursor.iY + 1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 761 | 		iConsoleProvider.InfoPrint(_L("Searching..."));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 762 | TInt found = iBuffer.Find(nextLineStart, iFindText, searchBackwards); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 763 | if (found == KErrNotFound) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 764 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 765 | 			iConsoleProvider.InfoPrint(_L("Cannot find '%S'"), &iFindText);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 766 | proceed = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 767 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 768 | else if (found < 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 769 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 770 | 			iConsoleProvider.InfoPrint(_L("Error during searching: %d"), found);
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 771 | proceed = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 772 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 773 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 774 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 775 | CenterDocPosOnScreen(found); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 776 | 			/*TKeyCode ch = iConsoleProvider.Query(_L("Search again? (next/previous/cancel) "));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 777 | if (ch == 'n') | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 778 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 779 | searchBackwards = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 780 | continue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 781 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 782 | else if (ch == 'p') | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 783 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 784 | searchBackwards = ETrue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 785 | continue; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 786 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 787 | else*/ | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 788 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 789 | proceed = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 790 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 791 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 792 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 793 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 794 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 795 | void CLRTextView::CenterDocPosOnScreen(TInt aDocumentPosition) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 796 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 797 | const TInt numScreenLines = iWindow.iHeight; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 798 | TPoint point = WindowLocationForDocumentPosition(aDocumentPosition); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 799 | if (point.iY != -1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 800 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 801 | // pos is on screen already - just move the cursor | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 802 | UpdateCursor(point); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 803 | return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 804 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 805 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 806 | TInt err = iBuffer.SeekFromOffset(*this, aDocumentPosition, -(numScreenLines/2), iWindow.iWidth-1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 807 | if (err) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 808 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 809 | HandleDataLoadError(err); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 810 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 811 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 812 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 813 | iDrawPoint.SetXY(iWindow.iX, iWindow.iY); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 814 | DoDrawL(EFalse); // EFalse to say we will update the cursor and status ourselves | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 815 | UpdateCursor(WindowLocationForDocumentPosition(aDocumentPosition)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 816 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 817 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 818 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 819 | void CLineData::EnsureCapacityL(TInt aWidth, TInt aHeight) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 820 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 821 | if (!iDocPosAndLine || (TUint)User::AllocLen(iDocPosAndLine) < sizeof(TInt)*2 * (aHeight+1)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 822 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 823 | User::Free(iDocPosAndLine); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 824 | iDocPosAndLine = NULL; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 825 | iDocPosAndLine = (TInt*)User::AllocZL(sizeof(TInt)*2*(aHeight+1)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 826 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 827 | iLineLen = aWidth-1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 828 | TInt lineWidthBytes = ((iLineLen+7)&~7)/8; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 829 | TInt screenBytes = lineWidthBytes * (aHeight+1); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 830 | if (!iScreenIndexes || User::AllocLen(iScreenIndexes) < screenBytes) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 831 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 832 | User::Free(iScreenIndexes); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 833 | iScreenIndexes = NULL; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 834 | iScreenIndexes = (TUint8*)User::AllocZL(screenBytes); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 835 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 836 | SetPositionIsValid(0, 0, ETrue); // This position is always valid even if the document is empty | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 837 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 838 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 839 | TInt CLineData::DocumentPosition(TInt aLine) const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 840 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 841 | return iDocPosAndLine[aLine*2]; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 842 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 843 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 844 | TInt CLineData::FileLineNumber(TInt aLine) const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 845 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 846 | return iDocPosAndLine[aLine*2 + 1]; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 847 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 848 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 849 | const TUint8& CLineData::ByteForPos(TInt aLine, TInt aCol, TInt& aOffset) const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 850 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 851 | return const_cast<CLineData*>(this)->ByteForPos(aLine, aCol, aOffset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 852 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 853 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 854 | TUint8& CLineData::ByteForPos(TInt aLine, TInt aCol, TInt& aOffset) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 855 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 856 | TInt lineWidthBytes = ((iLineLen+7)&~7)/8; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 857 | TInt byteIndex = aLine*lineWidthBytes + aCol/8; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 858 | aOffset = aCol%8; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 859 | TUint8& b = iScreenIndexes[byteIndex]; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 860 | return b; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 861 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 862 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 863 | TBool CLineData::IsScreenPositionValid(TInt aLine, TInt aCol) const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 864 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 865 | TInt offset; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 866 | TUint8 b = ByteForPos(aLine, aCol, offset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 867 | return b & (1 << offset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 868 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 869 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 870 | void CLineData::SetDocumentPositionForLine(TInt aLine, TInt aDocumentPosition) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 871 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 872 | ASSERT(iDocPosAndLine && aLine*2*sizeof(TInt) < (TUint)User::AllocLen(iDocPosAndLine)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 873 | iDocPosAndLine[aLine*2] = aDocumentPosition; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 874 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 875 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 876 | void CLineData::SetFileLineNumberForLine(TInt aLine, TInt aFileLineNumber) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 877 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 878 | ASSERT(iDocPosAndLine && (aLine*2+1)*sizeof(TInt) < (TUint)User::AllocLen(iDocPosAndLine)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 879 | iDocPosAndLine[aLine*2 + 1] = aFileLineNumber; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 880 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 881 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 882 | void CLineData::SetPositionIsValid(TInt aLine, TInt aCol, TBool aValid) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 883 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 884 | TInt offset; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 885 | TUint8& b = ByteForPos(aLine, aCol, offset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 886 | if (aValid) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 887 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 888 | b |= (1<<offset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 889 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 890 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 891 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 892 | b &= ~(1<<offset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 893 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 894 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 895 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 896 | void CLineData::LineFinishedAt(TInt aLine, TInt aCol) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 897 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 898 | if (aCol >=0 && aCol < iLineLen) SetPositionIsValid(aLine, aCol, ETrue); // The last position on the line is valid even though nothing is drawn there | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 899 | TInt offset; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 900 | TUint8& b = ByteForPos(aLine, aCol+1, offset); // Plus one as we want to clear everything beyond the aCol position | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 901 | // Clear everything above the offset'th bit | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 902 | b &= (1 << offset) - 1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 903 | // And clear all bytes from b to the end of the line | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 904 | TUint8* endb = &ByteForPos(aLine, iLineLen-1, offset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 905 | // Armv5 doesn't like passing in a length of zero to memset, not sure why. Anyway, check there are actually some other bytes that need clearing | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 906 | if (endb > &b) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 907 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 908 | Mem::FillZ((&b)+1, endb - &b); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 909 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 910 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 911 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 912 | CLineData::~CLineData() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 913 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 914 | User::Free(iDocPosAndLine); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 915 | User::Free(iScreenIndexes); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 916 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 917 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 918 | TInt CLineData::LastValidPosition(TInt aLine) const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 919 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 920 | TInt offset; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 921 | TInt pos = iLineLen-1; // Start comparing from the last possible valid position | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 922 | const TUint8* b = &ByteForPos(aLine, pos, offset); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 923 | while(*b == 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 924 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 925 | b--; // Optimisation to skip over blanks | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 926 | pos -= offset+1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 927 | offset = 7; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 928 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 929 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 930 | while (offset >= 0 && ((*b) & (1<<offset)) == 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 931 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 932 | pos--; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 933 | offset--; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 934 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 935 | ASSERT(IsScreenPositionValid(aLine, pos)); // Something's gone very wrong in the logic of this function if this assert is not true! | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 936 | return pos; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 937 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 938 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 939 | void CLRTextView::CopyToClipboardL(const TDesC& aBuf) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 940 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 941 | LtkUtils::CopyToClipboardL(aBuf, &iConsoleProvider.Fs()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 942 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 943 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 944 | HBufC* CLRTextView::GetFromClipboardL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 945 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 946 | return LtkUtils::GetFromClipboardL(&iConsoleProvider.Fs()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 947 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 948 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 949 | void CLRTextView::PasteL() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 950 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 951 | HBufC* text = GetFromClipboardL(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 952 | CleanupStack::PushL(text); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 953 | if (text->Length() == 0) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 954 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 955 | 		iConsoleProvider.InfoPrint(_L("Nothing to paste"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 956 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 957 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 958 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 959 | InsertTextL(*text); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 960 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 961 | CleanupStack::PopAndDestroy(text); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 962 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 963 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 964 | TPoint CLRTextView::WindowLocationForDocumentPosition(TInt aDocumentPosition) const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 965 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 966 | TPoint result(-1,-1); // We return this if doc pos is not on screen | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 967 | const TInt numScreenLines = iWindow.iHeight; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 968 | if (aDocumentPosition >= iLineData->DocumentPosition(0) && aDocumentPosition < iLineData->DocumentPosition(numScreenLines)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 969 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 970 | // pos is on screen | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 971 | for (TInt line = 0; line < numScreenLines; line++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 972 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 973 | if (aDocumentPosition < iLineData->DocumentPosition(line+1)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 974 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 975 | result.iY = line; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 976 | TInt docPos = iLineData->DocumentPosition(line); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 977 | TInt column = 0; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 978 | // Find the column screen position whose document position is what we want | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 979 | for (; docPos <= aDocumentPosition; column++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 980 | 					{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 981 | if (iLineData->IsScreenPositionValid(line, column)) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 982 | 						{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 983 | docPos++; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 984 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 985 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 986 | result.iX = column-1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 987 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 988 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 989 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 990 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 991 | return result; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 992 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 993 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 994 | void CLRTextView::SetMark() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 995 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 996 | iMarkFlasher->Cancel(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 997 | iMarkDocPos = DocumentPosition(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 998 | iMarkShown = EFalse; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 999 | const TInt KFlashInterval = 500000; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1000 | iMarkFlasher->Start(0, KFlashInterval, TCallBack(&FlashMark, this)); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1001 | UpdateStatus(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1002 | 	iConsoleProvider.InfoPrint(_L("Mark set. Move cursor then press ^X/^C to cut/copy"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1003 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1004 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1005 | void CLRTextView::CancelMark() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1006 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1007 | if (MarkActive()) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1008 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1009 | iMarkFlasher->Cancel(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1010 | if (WindowLocationForDocumentPosition(iMarkDocPos).iY != -1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1011 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1012 | // If the mark pos is on screen, redraw it to get rid of the '*' | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1013 | RedrawFromPositionToEndOfLine(iMarkDocPos, 0); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1014 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1015 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1016 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1017 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1018 | TInt CLRTextView::FlashMark(TAny* aSelf) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1019 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1020 | static_cast<CLRTextView*>(aSelf)->DoFlashMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1021 | return 1; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1022 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1023 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1024 | void CLRTextView::DoFlashMark() | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1025 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1026 | TPoint markPos = WindowLocationForDocumentPosition(iMarkDocPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1027 | if (markPos.iY != -1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1028 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1029 | TPoint cursor = iConsole.CursorPos(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1030 | iConsole.SetCursorPosAbs(markPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1031 | if (iMarkShown) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1032 | 			iConsole.Write(_L(" "));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1033 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1034 | 			iConsole.Write(_L("*"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1035 | iMarkShown = !iMarkShown; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1036 | iConsole.SetCursorPosAbs(cursor); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1037 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1038 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1039 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1040 | TBool CLRTextView::MarkActive() const | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1041 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1042 | return iMarkFlasher->IsActive(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1043 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1044 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1045 | void CLRTextView::CopyOrCutL(TBool aCut) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1046 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1047 | TInt docPos = DocumentPosition(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1048 | const TInt start = Min(docPos, iMarkDocPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1049 | const TInt len = Abs(docPos - iMarkDocPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1050 | CancelMark(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1051 | RBuf textCopy; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1052 | CleanupClosePushL(textCopy); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1053 | TInt dataPos = start; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1054 | while(ETrue) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1055 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1056 | TInt err = iBuffer.GetData(*this, dataPos); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1057 | if (err) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1058 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1059 | HandleDataLoadError(err); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1060 | CleanupStack::PopAndDestroy(&textCopy); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1061 | return; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1062 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1063 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1064 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1065 | TPtrC text = iDes.Left(len - textCopy.Length()); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1066 | if (textCopy.MaxLength() == 0 && len <= iRange.iLength) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1067 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1068 | // All fits in one buffer, no need to copy anything! | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1069 | CopyToClipboardL(text); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1070 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1071 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1072 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1073 | 				{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1074 | // Need to do some copying | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1075 | if (textCopy.MaxLength() == 0) textCopy.CreateL(len); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1076 | textCopy.Append(text); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1077 | dataPos += text.Length(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1078 | if (textCopy.Length() == len) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1079 | 					{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1080 | // Done | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1081 | CopyToClipboardL(textCopy); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1082 | break; | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1083 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1084 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1085 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1086 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1087 | CleanupStack::PopAndDestroy(&textCopy); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1088 | if (aCut) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1089 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1090 | TRange range(start, len); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1091 | iBuffer.DeleteTextL(range); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1092 | iCursor = WindowLocationForDocumentPosition(start); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1093 | if (iCursor.iY == -1) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1094 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1095 | // Start of the selection is offscreen - force a scroll | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1096 | CenterDocPosOnScreen(start); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1097 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1098 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1099 | 			{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1100 | iDrawPoint = iCursor + iWindow.Origin(); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1101 | RequestData(EFalse, start); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1102 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1103 | 		iConsoleProvider.InfoPrint(_L("Text cut to clipboard"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1104 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1105 | else | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1106 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1107 | 		iConsoleProvider.InfoPrint(_L("Text copied to clipboard"));
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1108 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1109 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1110 | |
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1111 | void CLRTextView::UpdateDocumentPositionsStartingAtLine(TInt aLine, TInt aDelta) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1112 | 	{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1113 | // This is important because even though we can optimise away the drawing, when a line has changed | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1114 | // length but not caused wrapping, we still need to make sure the document positions of all the | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1115 | // lines we didn't draw are correct to reflect the extra characters. | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1116 | for (TInt i = aLine; i < iWindow.iHeight+1; i++) | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1117 | 		{
 | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1118 | iLineData->SetDocumentPositionForLine(i, iLineData->DocumentPosition(i) + aDelta); | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1119 | } | 
| 
7f656887cf89
First submission to Symbian Foundation staging server.
 Tom Sutcliffe <thomas.sutcliffe@accenture.com> parents: diff
changeset | 1120 | } |