Add a Bookmark
Article Metadata
Adding a Bookmark in S60 2nd edition
In order to add a bookmark CFavouritesDb is used.
#include <FavouritesDb.h>
_LIT( KBookmarkDbPath, "c:\\system\\data\\" );
_LIT( KBookmarkDbFile, "Bookmarks1.db" );
CAddFavouritesDb* CAddFavouritesDb::NewL()
{
CAddFavouritesDb* favdb = new (ELeave) CAddFavouritesDb();
CleanupStack::PushL( favdb );
favdb->ConstructL( KBookmarkDbPath, KBookmarkDbFile );
CleanupStack::Pop();
return favdb;
}
CAddFavouritesDb * addBookmrk = CAddFavouritesDb::NewL();
CleanupStack::PushL( addBookmrk );
User::LeaveIfError(addBookmrk->OpenL());
CFavouritesItem* bookmrkItem = CFavouritesItem::NewLC();
bookmrkItem->SetType( CFavouritesItem::EItem );
bookmrkItem->SetParentFolder(KFavouritesRootUid);//this should be added else will leave with -6 error code when add
bookmrkItem->SetNameL( _L("AddBookmark") );
bookmrkItem->SetUrlL( _L("http://www.developer.nokia.com/") );
addBookmrk->AddL(*bookmrkItem , ETrue);
addBookmrk->Close();
CleanupStack::PopAndDestroy( bookmrkItem );
CleanupStack::PopAndDestroy( addBookmrk );
Need to link with favouritesengine.lib in .mmp file.
LIBRARY favouritesengine.lib
Adding a Bookmark in S60 3rd Edition
In S60 3rd edition, CAddFavouritesDb has been replaced by the R-class, RFavouritesDb. To make matters more complex, in S60 3.0 there was a divide between bookmarks displayed in the OSS Browser ("Web" application) and the Services browser. The OSS browser would only display bookmarks where the name and URL was prefixed with the string "oss". This has been rectified in S60 3.1.
To add a bookmark to the Services and OSS browser in S60 3.1:
#include <favouritessession.h>
#include <favouritesdb.h>
#include <favouritesitem.h>
// Link against: favouritesengine.lib
RFavouritesSession iSession;
User::LeaveIfError(iSession.Connect());
CleanupClosePushL(iSession);
RFavouritesDb db;
// KBrowserBookmarks is picked up from the header
User::LeaveIfError(db.Open(iSession, KBrowserBookmarks));
CleanupClosePushL(db);
CFavouritesItem* item = CFavouritesItem::NewLC();
item->SetNameL(_L("Google UK"));
item->SetParentFolder(KFavouritesRootUid);
item->SetType(CFavouritesItem::EItem);
item->SetUrlL(_L("http://www.google.co.uk/"));
User::LeaveIfError(db.Add(*item, ETrue));
CleanupStack::PopAndDestroy(3, &session); // db, item
The equivalent to add the same bookmark to the OSS browser in S60 3rd edition would be:
CFavouritesItem* item = CFavouritesItem::NewLC();
item->SetNameL(_L("ossGoogle UK"));
item->SetParentFolder(KFavouritesRootUid);
item->SetType(CFavouritesItem::EItem);
item->SetUrlL(_L("osshttp://www.google.co.uk/"));


06 Sep
2009
This article describes on how to add a bookmark to the browser in both 2nd and 3rd edition. It has clearly listed down the differences between 2nd and 3rd edition. More specifically it has clearly mentioned how to make it work with both OSS and Services Browser.