browserutilities/recenturlstore/RecentUrlSrc/RecentUrlStore.cpp
branchRCL_3
changeset 84 800203832575
parent 37 cb62a4f66ebe
child 93 79859ed3eea9
--- a/browserutilities/recenturlstore/RecentUrlSrc/RecentUrlStore.cpp	Wed Jun 09 10:52:50 2010 +0300
+++ b/browserutilities/recenturlstore/RecentUrlSrc/RecentUrlStore.cpp	Mon Jun 21 16:54:17 2010 +0300
@@ -244,8 +244,21 @@
 				
 			HBufC* domain = aUrl.Mid(domainStart,domainLength).AllocLC();
 			domain->Des().LowerCase();
-			HBufC* title = aTitle.Left(titleLength).AllocLC();
-	
+			
+			HBufC* title;
+			TInt pos = aTitle.Find(_L("'"));
+			if(pos >= 0)
+                {
+                TBuf<KTitleSize> buf;
+                TChar ch = '\'';
+                TInt nwLen = InsertEscapeSequence(ch,(TUint16*)buf.Ptr(),aTitle);
+                title = HBufC::NewLC(nwLen);
+                TPtr myPtr = title->Des();
+                myPtr.Copy(buf.Ptr(),nwLen);
+                }
+			else
+			    title = aTitle.Left(titleLength).AllocLC();
+			
 			// delete and re-insert
 			iSQLStatement.Format(KSQLDelete, &aUrl);
 			dataBase.Execute(iSQLStatement);
@@ -256,7 +269,35 @@
 			}
 		}
 	}
-	
+
+//-----------------------------------------------------------------------------
+// CRecentUrlStore::InsertEscapeSequence
+// Insert the EscapeSequence.
+//-----------------------------------------------------------------------------
+TInt CRecentUrlStore::InsertEscapeSequence(TChar aChar,TUint16* aDestPtr,const TDesC& aString)
+    {
+    TUint16* src_ptr = (TUint16*)aString.Ptr();
+    
+    TInt src_iter = 0;
+    TInt dest_iter = 0;
+    TInt len = aString.Length();
+    
+    while((src_iter <= len) && (dest_iter <= KTitleSize))
+        {
+        *aDestPtr++ = *src_ptr++;
+        src_iter++;
+        dest_iter++;
+        if(*(src_ptr-1)==aChar && dest_iter<=KTitleSize)
+            {
+            *aDestPtr++ = aChar;
+            dest_iter++;
+            }
+        }
+    --src_iter;
+    return (--dest_iter);
+    
+    }
+
 //-----------------------------------------------------------------------------
 // CRecentUrlStore::ClearData
 // Clear the store.