browserutilities/recenturlstore/RecentUrlSrc/RecentUrlStore.cpp
branchRCL_3
changeset 94 919f36ff910f
parent 93 79859ed3eea9
equal deleted inserted replaced
93:79859ed3eea9 94:919f36ff910f
    15 *      Implementation of RecentUrlStore
    15 *      Implementation of RecentUrlStore
    16 *
    16 *
    17 *
    17 *
    18 */
    18 */
    19 
    19 
    20 
       
    21 
       
    22 // INCLUDE FILES
    20 // INCLUDE FILES
    23 #include "RecentUrlStore.h"
    21 #include <recenturlstore.h>
    24 
    22 
    25 // EXTERNAL DATA STRUCTURES
    23 // EXTERNAL DATA STRUCTURES
    26 
    24 
    27 // EXTERNAL FUNCTION PROTOTYPES
    25 // EXTERNAL FUNCTION PROTOTYPES
    28 
    26 
   244 			domainLength = (domainLength > KDomainSize) ? KDomainSize : domainLength;
   242 			domainLength = (domainLength > KDomainSize) ? KDomainSize : domainLength;
   245 			TInt titleLength = (aTitle.Length() > KTitleSize) ? KTitleSize : aTitle.Length();
   243 			TInt titleLength = (aTitle.Length() > KTitleSize) ? KTitleSize : aTitle.Length();
   246 				
   244 				
   247 			HBufC* domain = aUrl.Mid(domainStart,domainLength).AllocLC();
   245 			HBufC* domain = aUrl.Mid(domainStart,domainLength).AllocLC();
   248 			domain->Des().LowerCase();
   246 			domain->Des().LowerCase();
   249 			HBufC* title = aTitle.Left(titleLength).AllocLC();
   247 			
   250 	
   248 			HBufC* title;
       
   249 			TInt pos = aTitle.Find(_L("'"));
       
   250 			if(pos >= 0)
       
   251                 {
       
   252                 TBuf<KTitleSize> buf;
       
   253                 TChar ch = '\'';
       
   254                 TInt nwLen = InsertEscapeSequence(ch,(TUint16*)buf.Ptr(),aTitle);
       
   255                 title = HBufC::NewLC(nwLen);
       
   256                 TPtr myPtr = title->Des();
       
   257                 myPtr.Copy(buf.Ptr(),nwLen);
       
   258                 }
       
   259 			else
       
   260 			    title = aTitle.Left(titleLength).AllocLC();
       
   261 			
   251 			// delete and re-insert
   262 			// delete and re-insert
   252 			iSQLStatement.Format(KSQLDelete, &aUrl);
   263 			iSQLStatement.Format(KSQLDelete, &aUrl);
   253 			dataBase.Execute(iSQLStatement);
   264 			dataBase.Execute(iSQLStatement);
   254 			iSQLStatement.Format(KSQLInsert, domain, &aUrl, title);
   265 			iSQLStatement.Format(KSQLInsert, domain, &aUrl, title);
   255 			dataBase.Execute(iSQLStatement);
   266 			dataBase.Execute(iSQLStatement);
   256 			
   267 			
   257 			CleanupStack::PopAndDestroy(3, &dataBase );
   268 			CleanupStack::PopAndDestroy(3, &dataBase );
   258 			}
   269 			}
   259 		}
   270 		}
   260 	}
   271 	}
   261 	
   272 
       
   273 //-----------------------------------------------------------------------------
       
   274 // CRecentUrlStore::InsertEscapeSequence
       
   275 // Insert the EscapeSequence.
       
   276 //-----------------------------------------------------------------------------
       
   277 TInt CRecentUrlStore::InsertEscapeSequence(TChar aChar,TUint16* aDestPtr,const TDesC& aString)
       
   278     {
       
   279     TUint16* src_ptr = (TUint16*)aString.Ptr();
       
   280     
       
   281     TInt src_iter = 0;
       
   282     TInt dest_iter = 0;
       
   283     TInt len = aString.Length();
       
   284     
       
   285     while((src_iter <= len) && (dest_iter <= KTitleSize))
       
   286         {
       
   287         *aDestPtr++ = *src_ptr++;
       
   288         src_iter++;
       
   289         dest_iter++;
       
   290         if(*(src_ptr-1)==aChar && dest_iter<=KTitleSize)
       
   291             {
       
   292             *aDestPtr++ = aChar;
       
   293             dest_iter++;
       
   294             }
       
   295         }
       
   296     --src_iter;
       
   297     return (--dest_iter);
       
   298     
       
   299     }
       
   300 
   262 //-----------------------------------------------------------------------------
   301 //-----------------------------------------------------------------------------
   263 // CRecentUrlStore::ClearData
   302 // CRecentUrlStore::ClearData
   264 // Clear the store.
   303 // Clear the store.
   265 //-----------------------------------------------------------------------------
   304 //-----------------------------------------------------------------------------
   266 EXPORT_C void CRecentUrlStore::ClearData ()
   305 EXPORT_C void CRecentUrlStore::ClearData ()