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 () |