browserutilities/recenturlstore/RecentUrlSrc/RecentUrlStore.cpp
branchRCL_3
changeset 93 79859ed3eea9
parent 84 800203832575
child 94 919f36ff910f
equal deleted inserted replaced
92:e1bea15f9a39 93:79859ed3eea9
    15 *      Implementation of RecentUrlStore
    15 *      Implementation of RecentUrlStore
    16 *
    16 *
    17 *
    17 *
    18 */
    18 */
    19 
    19 
       
    20 
       
    21 
    20 // INCLUDE FILES
    22 // INCLUDE FILES
    21 #include <recenturlstore.h>
    23 #include "RecentUrlStore.h"
    22 
    24 
    23 // EXTERNAL DATA STRUCTURES
    25 // EXTERNAL DATA STRUCTURES
    24 
    26 
    25 // EXTERNAL FUNCTION PROTOTYPES
    27 // EXTERNAL FUNCTION PROTOTYPES
    26 
    28 
   242 			domainLength = (domainLength > KDomainSize) ? KDomainSize : domainLength;
   244 			domainLength = (domainLength > KDomainSize) ? KDomainSize : domainLength;
   243 			TInt titleLength = (aTitle.Length() > KTitleSize) ? KTitleSize : aTitle.Length();
   245 			TInt titleLength = (aTitle.Length() > KTitleSize) ? KTitleSize : aTitle.Length();
   244 				
   246 				
   245 			HBufC* domain = aUrl.Mid(domainStart,domainLength).AllocLC();
   247 			HBufC* domain = aUrl.Mid(domainStart,domainLength).AllocLC();
   246 			domain->Des().LowerCase();
   248 			domain->Des().LowerCase();
   247 			
   249 			HBufC* title = aTitle.Left(titleLength).AllocLC();
   248 			HBufC* title;
   250 	
   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 			
       
   262 			// delete and re-insert
   251 			// delete and re-insert
   263 			iSQLStatement.Format(KSQLDelete, &aUrl);
   252 			iSQLStatement.Format(KSQLDelete, &aUrl);
   264 			dataBase.Execute(iSQLStatement);
   253 			dataBase.Execute(iSQLStatement);
   265 			iSQLStatement.Format(KSQLInsert, domain, &aUrl, title);
   254 			iSQLStatement.Format(KSQLInsert, domain, &aUrl, title);
   266 			dataBase.Execute(iSQLStatement);
   255 			dataBase.Execute(iSQLStatement);
   267 			
   256 			
   268 			CleanupStack::PopAndDestroy(3, &dataBase );
   257 			CleanupStack::PopAndDestroy(3, &dataBase );
   269 			}
   258 			}
   270 		}
   259 		}
   271 	}
   260 	}
   272 
   261 	
   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 
       
   301 //-----------------------------------------------------------------------------
   262 //-----------------------------------------------------------------------------
   302 // CRecentUrlStore::ClearData
   263 // CRecentUrlStore::ClearData
   303 // Clear the store.
   264 // Clear the store.
   304 //-----------------------------------------------------------------------------
   265 //-----------------------------------------------------------------------------
   305 EXPORT_C void CRecentUrlStore::ClearData ()
   266 EXPORT_C void CRecentUrlStore::ClearData ()