diff -r f345bda72bc4 -r 43e37759235e Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/mystringreverse_8cpp-source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/mystringreverse_8cpp-source.html Tue Mar 30 11:56:28 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,216 +0,0 @@ - -
-00001 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -00002 // All rights reserved. -00003 // This component and the accompanying materials are made available -00004 // under the terms of "Eclipse Public License v1.0" -00005 // which accompanies this distribution, and is available -00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html". -00007 // -00008 // Initial Contributors: -00009 // Nokia Corporation - initial contribution. -00010 // -00011 // Contributors: -00012 // -00013 // Description: -00014 // Contains definition of functions defined in the CMyStringReverse class. -00015 // -00016 // -00017 -00022 #include "mystringreverse.h" -00023 -00028 CMyStringReverse* CMyStringReverse::NewL(CConsoleBase* aConsole) -00029 { -00030 CMyStringReverse* self = new (ELeave)CMyStringReverse(aConsole); -00031 self->AddToScheduler(); -00032 return self; -00033 } -00034 -00038 void CMyStringReverse::AddToScheduler() -00039 { -00040 CActiveScheduler::Add(this); -00041 } -00042 -00047 CMyStringReverse::CMyStringReverse(CConsoleBase* aConsole): -00048 // Constructor of the base class. -00049 CActive(CActive::EPriorityUserInput), -00050 // Create the linked list. -00051 iString(_FOFF(TLetter,iDLink)), -00052 // Initialize iterators. -00053 iIteratorString(iString), -00054 iConsole(aConsole) -00055 { -00056 } -00057 -00067 void CMyStringReverse::RunL() -00068 { -00069 // Get the key code. -00070 TUint8 option = iConsole->KeyCode(); -00071 // Print the selected option. -00072 _LIT(KTextFormat,"%c\n"); -00073 iConsole->Printf(KTextFormat,option); -00074 -00075 // Check if a numeric key is pressed. -00076 TInt number = option - (TUint)'0'; -00077 if(number <10 && number > -1) -00078 { -00079 // Handle the numeric key press. -00080 switch(number) -00081 { -00082 case 1: -00083 { -00084 // The iString.AddFirst() function needs to be called. -00085 // Read the character to be added to the list. -00086 iTask = ETaskStringAddFirst; -00087 ReadChar(); -00088 } -00089 break; -00090 case 2: -00091 { -00092 // The iString.AddLast() function needs to be called. -00093 // Read the character to be added to the list. -00094 iTask = ETaskStringAddLast; -00095 ReadChar(); -00096 } -00097 break; -00098 default: -00099 // Stop the active scheduler. -00100 CActiveScheduler::Stop(); -00101 } -00102 } -00103 else -00104 { -00105 // An alphabetic key is pressed. -00106 // Check the action to be performed. -00107 switch(iTask) -00108 { -00109 case ETaskNone: -00110 _LIT(KInvalidOption,"Invalid Option!\n"); -00111 iConsole->Printf(KInvalidOption); -00112 break; -00113 // The iString.AddFirst() function needs to be called. -00114 case ETaskStringAddFirst: -00115 { -00116 // Create an object of the TLetter class. -00117 TLetter* letter = new (ELeave) TLetter(option); -00118 // Add the TLetter object into the list. -00119 iString.AddFirst(*letter); -00120 iTask = ETaskNone; -00121 // Print the data in iString and iReverseString. -00122 PrintStrings(); -00123 } -00124 break; -00125 case ETaskStringAddLast: -00126 { -00127 // Create an object of the TLetter class. -00128 TLetter* letter = new (ELeave) TLetter(option); -00129 // Add the TLetter object into the list. -00130 iString.AddLast(*letter); -00131 iTask = ETaskNone; -00132 // Print the data in iString and iReverseString. -00133 PrintStrings(); -00134 } -00135 break; -00136 default: -00137 iTask = ETaskNone; -00138 break; -00139 } -00140 // Generate an asynchronous read request. -00141 ReadOption(); -00142 } -00143 } -00144 -00148 void CMyStringReverse::ReadFunc() -00149 { -00150 // Wait for a key press event. -00151 iConsole->Read(iStatus); -00152 SetActive(); -00153 } -00154 -00158 void CMyStringReverse::ReadOption() -00159 { -00160 // Print the menu. -00161 _LIT(KTextMenu,"\nEnter\n1-> Add a character to the beginning of the string\n2-> Add a character to the end of the string\nAny other NUMBER to stop\n"); -00162 iConsole->Printf(KTextMenu); -00163 // Generate an asynchronous read request. -00164 ReadFunc(); -00165 } -00166 -00170 void CMyStringReverse::ReadChar() -00171 { -00172 _LIT(KTextReadChar,"\nEnter a character\n"); -00173 iConsole->Printf(KTextReadChar); -00174 // Generate an asynchronous read request. -00175 ReadFunc(); -00176 } -00177 -00181 void CMyStringReverse::PrintStrings() -00182 { -00183 _LIT(KTextSrcString,"Source String: "); -00184 iConsole->Printf(KTextSrcString); -00185 // Initialize the iterator. -00186 iIteratorString.SetToFirst(); -00187 -00188 // Iterate iString. -00189 while(iIteratorString != NULL) -00190 { -00191 // Get the TLetter object pointed to by the iterator. -00192 TLetter letter = *iIteratorString; -00193 // Print the character value of the TLetter object. -00194 _LIT(KTextChar,"%c"); -00195 iConsole->Printf(KTextChar,TUint(letter.iChar)); -00196 // Set the iterator to point to the next element. -00197 iIteratorString++; -00198 } -00199 -00200 _LIT(KTextRevString,"\nReverse of the String: "); -00201 iConsole->Printf(KTextRevString); -00202 // Initialize the iterator. -00203 iIteratorString.SetToLast(); -00204 -00205 // Iterate iReverseString. -00206 while(iIteratorString != NULL) -00207 { -00208 // Get the TLetter object pointed to by the iterator. -00209 TLetter letter = *iIteratorString; -00210 // Print the character value of the TLetter object. -00211 _LIT(KTextChar,"%c"); -00212 iConsole->Printf(KTextChar,TUint(letter.iChar)); -00213 // Set the iterator to point to the next element. -00214 iIteratorString--; -00215 } -00216 iConsole->Printf(KTextNewLine); -00217 } -00218 -00222 void CMyStringReverse::DoCancel() -00223 { -00224 if(IsActive()) -00225 { -00226 // Cancel any outstanding read requests. -00227 iConsole->ReadCancel(); -00228 } -00229 } -00230 -00236 CMyStringReverse::~CMyStringReverse() -00237 { -00238 // Delete the elements from the list. -00239 iIteratorString.SetToFirst(); -00240 // Iterate the list and delete all TLetter objects. -00241 TLetter* ptr = iIteratorString++; -00242 while (ptr != NULL) -00243 { -00244 delete ptr; -00245 ptr = iIteratorString++; -00246 } -00247 } -00248 -