Revision: 201015
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 04 May 2010 12:39:38 +0300
changeset 0 fa475d6462b2
child 1 6dafe2c6b7e1
child 2 016bf4557e2f
Revision: 201015 Kit: 201018
50_layers.sysdef.xml
92_layers.sysdef.xml
bookmarksengine/Bookmarkstestui/BookMarkServerTestui.cpp
bookmarksengine/Bookmarkstestui/BookMarkServerTestui.h
bookmarksengine/Bookmarkstestui/Bookmarkstestui.pro
bookmarksengine/Bookmarkstestui/main.cpp
bookmarksengine/bookmarksclient/bookmarksclient.pro
bookmarksengine/bookmarksclient/inc/bookmarkclient.h
bookmarksengine/bookmarksclient/inc/bookmarkclientdefs.h
bookmarksengine/bookmarksclient/src/bookmarkclient.cpp
bookmarksengine/bookmarksengine.pro
bookmarksengine/bookmarksserver/BookmarksServer.pro
bookmarksengine/bookmarksserver/inc/bookmarkserver.h
bookmarksengine/bookmarksserver/src/bookmarkserver.cpp
bookmarksengine/bookmarksserver/src/servermain.cpp
bookmarksengine/browsercontentdll/browsercontentdll.pro
bookmarksengine/browsercontentdll/inc/browsercontentdll.h
bookmarksengine/browsercontentdll/inc/browsercontentdllclientdefs.h
bookmarksengine/browsercontentdll/src/browsercontentdll.cpp
bookmarksengine/commoninclude/bookmarkscommonengine.h
browser.pri
browser.pro
layers.sysdef.xml
sysdef_1_5_1.dtd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/50_layers.sysdef.xml	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
+  <!ENTITY layer_real_source_path "sf/mw/browser" >
+]>
+
+<SystemDefinition name="browser" schema="1.5.1">
+    <systemModel>
+        <layer name="mw_layer">
+            <module name="browser">
+                <unit unitID="browser" mrp="" bldFile="&layer_real_source_path;/" name="browser" proFile="browser.pro" qmakeArgs="" filter=""/>
+            </module>
+        </layer>
+    </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/92_layers.sysdef.xml	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
+  <!ENTITY layer_real_source_path "sf/mw/browser" >
+]>
+
+<SystemDefinition name="browser" schema="1.5.1">
+    <systemModel>
+        <layer name="mw_layer">
+            <module name="browser">
+                <unit unitID="browser" mrp="" bldFile="&layer_real_source_path;/" name="browser" proFile="browser.pro" qmakeArgs="" filter=""/>
+            </module>
+        </layer>
+    </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/Bookmarkstestui/BookMarkServerTestui.cpp	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,106 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include<BookMarkServerTestui.h>
+#include <bookmarkclient.h>
+//#include<bookmarks.h>
+BookMarkServerTestui::BookMarkServerTestui()
+    {
+    int sessionId=0;
+    obj=new BookmarksClientSide();
+    obj->connectToServer();
+    bool res=obj->getSessionId(sessionId);
+    }
+BookMarkServerTestui::~BookMarkServerTestui()
+    {
+    obj->closeServer();
+    delete(obj);
+    obj=NULL;
+    }
+void BookMarkServerTestui::buttonclicked()
+{
+ getop();
+
+}
+void BookMarkServerTestui::getop()
+    {
+    BookmarkLeaf* col=new BookmarkLeaf();
+  /*  col->setTitle("TestT1");
+    col->setUrl("http://www.google.com");
+    QDate x(2010,01,19);
+    col->setDate(x);
+    col->setTag("GOOGLY");*/
+    QDate x(2010,01,19);
+    col->setUrl("http://www.google.com");
+    col->setTitle("TestT1");
+    col->setDate(x);
+    col->setTag("GOOGLY");
+    obj->AddBookmark(col);
+
+
+    }
+void BookMarkServerTestui::delbutton()
+    {
+    
+    obj->DeleteBookmark("TestT1");
+    }
+void BookMarkServerTestui::fetchbutton()
+    {
+    
+    //BookmarkLeaf* fin=obj->FetchBookmark("first");
+    }
+void BookMarkServerTestui::closeAll()
+    {
+     //obj->closeServer();
+     
+    }
+void BookMarkServerTestui::yahooclicked()
+    {
+    /*BookmarkLeaf* BookmarkContent=new BookmarkLeaf();
+    BookmarkContent->setBookmarkTitle("second");
+    BookmarkContent->setBookmarkUrl("www.yahoo.com");
+    BookmarkContent->setLastUpdatedTime("11:10");
+    BookmarkContent->setBookmarkTag("HHHHHHO");*/
+    BookmarkLeaf* col=new BookmarkLeaf();
+    QDate x(2010,01,19);
+    col->setUrl("http://www.yahoo.com");
+    col->setTitle("TestT2");
+    col->setDate(x);
+    col->setTag("YAH");
+    obj->AddBookmark(col);
+    
+    }
+void BookMarkServerTestui::nokiaclicked()
+    {
+    BookmarkLeaf* col=new BookmarkLeaf();
+       QDate x(2010,01,19);
+       col->setUrl("http://www.NOKIA.com");
+       col->setTitle("TestT3");
+       col->setDate(x);
+       col->setTag("NOK");
+    obj->AddBookmark(col);
+    
+    }
+void BookMarkServerTestui::delyahoo()
+    {
+    obj->DeleteBookmark("TestT2");
+    }
+void BookMarkServerTestui::delnokia()
+    {
+    obj->DeleteBookmark("TestT3");
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/Bookmarkstestui/BookMarkServerTestui.h	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,42 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include<QtGui>
+class BookmarksClientSide;
+
+class BookMarkServerTestui: public QWidget
+{
+ Q_OBJECT
+public:
+    BookMarkServerTestui();
+    ~BookMarkServerTestui();
+    
+private:
+    BookmarksClientSide* obj;
+ public slots:
+    void buttonclicked();
+    void delbutton();
+    void delyahoo();
+    void delnokia();
+    void fetchbutton();
+    void closeAll();
+    void yahooclicked();
+    void nokiaclicked();
+ public: 
+     void getop();
+     
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/Bookmarkstestui/Bookmarkstestui.pro	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,94 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = app
+TARGET = Bookmarkstestui 
+DEFINES += BUILDING_BOOKMARKS_TESTUI
+# establish relative root dir
+ROOT_DIR = $$PWD/../..
+include($$ROOT_DIR/browser.pri)
+
+QT           += core gui network sql
+
+HEADERS += $$PWD/BookMarkServerTestui.h 
+SOURCES += $$PWD/BookMarkServerTestui.cpp \
+           $$PWD/main.cpp
+
+
+
+isEmpty(BEDROCK_OUTPUT_DIR): {
+    symbian {
+    	CONFIG(release,release|debug):BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../WrtBuild/Release
+    	CONFIG(debug,release|debug):BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../WrtBuild/Debug
+
+    else {
+    	CONFIG(release,release|debug):BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR=$$ROOT_DIR/WrtBuild/Release
+    	CONFIG(debug,release|debug):BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR=$$ROOT_DIR/WrtBuild/Debug
+    }    
+} else {
+    BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR=$$BEDROCK_OUTPUT_DIR
+}
+CONFIG(release, debug|release):BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../../../../WrtBuild/Release
+CONFIG(debug, debug|release):BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../../../../WrtBuild/Debug
+
+QMAKE_RPATHDIR += $$BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR/bin
+QMAKE_LIBDIR += $$BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR/bin
+
+
+
+INCLUDEPATH += $$PWD $$PWD/../bookmarksclient/inc $$PWD/../../browsercore/appfw/Api/Bookmarks $$PWD/../../browsercore/appfw/Api/Common $$PWD/../../browsercore/appfw/Api/Dialogs $$PWD/../../browsercore/appfw/Api/Controls $$PWD/../../browsercore/appfw/Api/Managers  $$PWD/../../browsercore/appfw/Api/Transitions $$PWD/../../browsercore/appfw/Api/Views $$PWD/../../browsercore/appfw/Common 
+
+LIBS += -lBookMarksClient
+
+# Use IPC components from import directory.
+include($$PWD/../../../../../import/import.pri)
+LIBS += -lwrtserviceipcclient
+LIBS += -lwrtserviceipcserver
+
+CONFIG(gcov)   {
+   LIBS +=   -lgcov
+   QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage
+   message( "building for coverage statics" )
+}
+
+     
+OBJECTS_DIR = $$BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServerTest/tmp
+DESTDIR = $$BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR/bin
+MOC_DIR = $$BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServerTest/tmp
+RCC_DIR = $$BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServerTest/tmp
+TEMPDIR = $$BOOKMARKTEST_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServerTest/build
+
+
+
+
+CONFIG (maemo) {
+    include(../../../../cwrt-maemo.pri)
+} 
+
+symbian: {
+    TARGET.UID3 = 0x102C2774
+    TARGET.VID = VID_DEFAULT
+    TARGET.EPOCALLOWDLLDATA = 1
+    TARGET.CAPABILITY = All -TCB -DRM -AllFiles
+    
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+   LIBS += -lefsrv -lcaf -lcafutils 
+
+}
+
+symbian: {
+    INCLUDEPATH +=  $$PWD $$MW_LAYER_SYSTEMINCLUDE $$APP_LAYER_SYSTEMINCLUDE
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/Bookmarkstestui/main.cpp	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <QCoreApplication>
+#include<BookMarkServerTestui.h>
+#include<QtGui>
+
+int main( int argc, char **argv )
+{
+    QApplication app(argc, argv);
+    BookMarkServerTestui obj;
+    //QWidget* win=new QWidget();
+    QWidget win;
+    win.setWindowTitle("BOOKMARKS SERVER TESTUI");
+    QPushButton* butadd=new QPushButton("Add Bookmark Google" );
+    QPushButton* butadd1=new QPushButton("Add Bookmark yahoo" );
+    QPushButton* butadd2=new QPushButton("Add Bookmark Nokia" );
+    
+    QPushButton* butdel=new QPushButton("del Bookmark Google" );
+    QPushButton* butdel1=new QPushButton("del Bookmark Yahoo" );
+    QPushButton* butdel2=new QPushButton("del Bookmark Nokia" );
+    
+    QPushButton* butfetch=new QPushButton("Fetch Bookmark" );
+    QPushButton* butexit=new QPushButton("Exit Server" );
+    QPushButton* Exitapp=new QPushButton("Exit UI" );
+    //Add 
+    QObject::connect(butadd,SIGNAL(clicked()),&obj,SLOT(buttonclicked()));
+    QObject::connect(butadd1,SIGNAL(clicked()),&obj,SLOT(yahooclicked()));
+    QObject::connect(butadd2,SIGNAL(clicked()),&obj,SLOT(nokiaclicked()));
+    
+    QObject::connect(butdel,SIGNAL(clicked()),&obj,SLOT(delbutton()));
+    QObject::connect(butdel1,SIGNAL(clicked()),&obj,SLOT(delyahoo()));
+    QObject::connect(butdel2,SIGNAL(clicked()),&obj,SLOT(delnokia()));
+    
+    
+    QObject::connect(butfetch,SIGNAL(clicked()),&obj,SLOT(fetchbutton()));
+    //QObject::connect(butexit,SIGNAL(clicked()),&obj,SLOT(closeAll()));
+    QObject::connect(Exitapp,SIGNAL(clicked()),&app,SLOT(quit()));
+    
+    
+    QVBoxLayout* lay=new QVBoxLayout();
+    lay->addWidget(butadd);
+    lay->addWidget(butadd1);
+    lay->addWidget(butadd2);
+    lay->addWidget(butdel);
+    lay->addWidget(butdel1);
+    lay->addWidget(butdel2);
+    lay->addWidget(butfetch);
+    //lay->addWidget(butexit);
+    lay->addWidget(Exitapp);
+
+    win.setLayout(lay);
+    //win->show();
+    win.showFullScreen();
+    
+/*    butadd->show();    
+    butdel->show();
+    butfetch->show();*/
+    return app.exec();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksclient/bookmarksclient.pro	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,104 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = lib
+TARGET = BookMarksClient 
+
+ROOT_DIR = $$PWD/../..
+include($$ROOT_DIR/browser.pri)
+
+DEFINES+= BUILDING_BOOKMARKS_CLIENT
+
+QT += core network xml sql
+HEADERS += $$PWD/inc/bookmarkclientdefs.h \
+           $$PWD/inc/bookmarkclient.h \
+           $$PWD/../commoninclude/bookmarkscommonengine.h
+SOURCES += $$PWD/src/bookmarkclient.cpp 
+
+isEmpty(BEDROCK_OUTPUT_DIR): {
+    symbian {
+        CONFIG(release, debug|release):BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR=$$PWD/../../WrtBuild/Release
+        CONFIG(debug, debug|release):BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR= $$PWD/../../WrtBuild/Debug
+    else {
+        CONFIG(release, debug|release):BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR=$$PWD/../../../../../WrtBuild/Release
+        CONFIG(debug, debug|release):BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR= $$PWD/../../../../../WrtBuild/Debug
+    }
+} else {
+    BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR = $$BEDROCK_OUTPUT_DIR
+}
+     
+OBJECTS_DIR = $$BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR/BookMarksClient/tmp
+DESTDIR = $$BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR/bin
+MOC_DIR = $$BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR/BookMarksClient/
+RCC_DIR = $$BOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR/BookMarksClient/
+TEMPDIR = $$BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR/BookMarksClient/build
+# QMAKE_LIBDIR = $$BOOKMARKSCLIENT_DATAMODEL_OUTPUT_DIR/bin
+
+INCLUDEPATH += $$PWD/inc $$PWD/../commoninclude $$PWD/../../ipc/serviceipc $$PWD/../../ipc/serviceipcserver
+ 
+
+# Use IPC components from import directory.
+include($$PWD/../../../../../import/import.pri)
+LIBS += -lwrtserviceipcclient
+
+
+#I believe the following line to be useless on all platforms. (carol.szabo@nokia.com)
+# !s40:LIBS += -Llib
+# CONFIG += \
+#    building-libs \
+#    depend_includepath \
+#    dll
+CONFIG += dll 
+
+# CONFIG(release, debug|release):!CONFIG(QTDIR_build){
+#    !unix : contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols
+#    unix : contains(QT_CONFIG, reduce_relocations): CONFIG += bsymbolic_functions
+# }
+
+CONFIG -= warn_on
+*-g++* : QMAKE_CXXFLAGS += -Wreturn-type -fno-strict-aliasing
+CONFIG(gcov)   {
+   LIBS +=   -lgcov
+   QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage
+   message( "building for coverage statics" )
+}
+
+
+
+
+isEmpty(TEMPDIR) {
+    CONFIG(release, debug|release):TEMPDIR=$$DESTDIR/Release/build
+    CONFIG(debug, debug|release):TEMPDIR=$$DESTDIR/Debug/build
+}
+
+CONFIG (maemo) {
+    include(../../../../cwrt-maemo.pri)
+} 
+
+symbian: {
+    TARGET.UID3 = 0x200267E6
+    TARGET.VID = VID_DEFAULT
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = All -TCB -DRM -AllFiles
+    LIBS += -lefsrv -lcaf -lcafutils
+    INCLUDEPATH+=$$MW_LAYER_PUBLIC_EXPORT_PATH(cwrt) $$MW_LAYER_PUBLIC_EXPORT_PATH()
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH+=/epoc32/include
+    BookMarksClientlibs.sources = BookMarksClient.dll
+    BookMarksClientlibs.path = /sys/bin
+    DEPLOYMENT += BookMarksClientlibs
+ 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksclient/inc/bookmarkclient.h	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef BOOKMARKCLIENT_H
+#define BOOKMARKCLIENT_H
+
+#include<QObject>
+#include<QString>
+#include<bookmarkclientdefs.h>
+#include<QtGui>
+//using namespace WRT;
+
+class BookmarksClientSidePrivate;
+
+class BOOKMARKSENGINECLIENT_EXPORT BookmarkLeaf
+{
+public:
+    QString getUrl(){return url;}
+    QString getTitle(){return title;}
+    QDate getDate(){return date;}
+    QTime getLastVisited(){return lastVisited;}
+    QString getDesc(){return desc;}
+    QIcon getFavIcon(){return favicon;}
+    QString getTag(){ return m_tag;}
+    int getIndex(){ return m_index;}
+
+    void setUrl(QString aurl){url=aurl;}
+    void setTitle(QString atitle){title=atitle;}
+    void setDate(QDate adate){date=adate;}
+    void setLastVisited(QTime atime){lastVisited=atime;}
+    void setDesc(QString adesc){desc=adesc;}
+    void setFavIcon(QIcon afavicon){favicon=afavicon;}
+    void setTag(QString atag){m_tag=atag;}
+    void setIndex(int index){m_index=index;}
+private:    
+    QString url;
+    QString title;
+
+    /*The last date on which URL is visited*/
+    QDate date;
+    /*The last time on which URL is visited*/
+    QTime lastVisited;
+
+    QString desc;
+    QIcon favicon;
+    bool expanded;
+    QString m_tag;
+    int m_index;
+    
+
+};
+
+class BOOKMARKSENGINECLIENT_EXPORT BookmarksClientSide : public QObject
+    {
+Q_OBJECT
+BOOKMARKSCLIENT_PRIVATE(BookmarksClientSide)
+public:
+
+    BookmarksClientSide();
+    ~BookmarksClientSide();
+    int connectToServer();
+    void closeServer();
+    int AddBookmark(BookmarkLeaf* BookmarkContent);
+    BookmarkLeaf* FetchBookmark(QString title);
+    int DeleteBookmark(QString title);
+    int getSessionId(int& BookmarkId);
+    QList<BookmarkLeaf*> FetchAllBookmarks();
+signals:
+    void BookmarkAdded(QString title);
+    void BookmarkDeleted(QString title);
+private slots:
+    void handleServerResponse();
+    };
+#endif //BOOKMARKCLIENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksclient/inc/bookmarkclientdefs.h	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef BOOKMARKSCLIENTDEFS_H
+#define BOOKMARKSCLIENTDEFS_H
+
+#define BOOKMARKSCLIENT_PRIVATE(Class) \
+                 private: \
+                 inline Class##Private* priv_func() { return reinterpret_cast<Class##Private*>(priv_ptr); } \
+                 inline const Class##Private* priv_func() const{ return static_cast<Class##Private*>(priv_ptr);} \
+                 friend class Class##Private; \
+                 void* priv_ptr;
+#define BOOKMARKSCLIENT_PUBLIC(Class) \
+        public: \
+                inline Class* pub_func() { return static_cast<Class *>(pub_ptr); } \
+                inline const Class* pub_func() const { return static_cast<const Class *>(pub_ptr); } \
+        private: \
+                friend class Class; \
+                void* pub_ptr;
+
+#define BOOKMARKSCLIENT_INITIALIZE(Class) \
+                 priv_ptr=new Class##Private(); \
+                 Class##Private* priv=priv_func();\
+                 priv->pub_ptr = this;
+#define BOOKMARKSCLIENT_PUBLICPTR(Class) Class * const pub = pub_func()
+#define BOOKMARKSCLIENT_PRIVATEPTR(Class) Class##Private* const priv=priv_func()
+
+#ifdef BUILDING_BOOKMARKS_CLIENT
+    #define BOOKMARKSENGINECLIENT_EXPORT Q_DECL_EXPORT
+#else
+    #define BOOKMARKSENGINECLIENT_EXPORT Q_DECL_IMPORT
+#endif 
+
+#endif //BOOKMARKSCLIENTDEFS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksclient/src/bookmarkclient.cpp	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,351 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include<QString>
+#include<bookmarkscommonengine.h>
+#include<bookmarkclient.h>
+#include <serviceipc.h>
+#include<serviceipcclient.h>
+#include<QDebug>
+
+class BookmarksClientSidePrivate
+    {
+BOOKMARKSCLIENT_PUBLIC(BookmarksClientSide)
+  
+public:
+    ~BookmarksClientSidePrivate();
+    QString m_clientName;
+    int m_clientuid;
+    bool m_isConnected;
+    int m_error;
+    WRT::ServiceFwIPC* m_IpcSession;
+    int dispatchServerMessagestoClient(int msgType, QString title);
+    };
+
+/**==============================================================
+ * Description: Constructor of BookmarksClientSidePrivate
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+BookmarksClientSidePrivate::~BookmarksClientSidePrivate()
+    {
+    if (m_IpcSession)
+        {
+        m_IpcSession->disconnect();
+        delete m_IpcSession;
+        m_IpcSession = NULL;
+        }
+
+    }
+
+/**==============================================================
+ * Description: Constructor of BookmarksClientSide
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+BookmarksClientSide::BookmarksClientSide()
+    {
+    BOOKMARKSCLIENT_INITIALIZE(BookmarksClientSide);
+
+    priv->m_IpcSession = new WRT::ServiceFwIPC(this);
+
+    }
+
+/**==============================================================
+ * Description: Connects to the bookmark server
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+int BookmarksClientSide::connectToServer()
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    bool connected = false;
+    if (priv->m_IpcSession)
+        {
+        int retry(5);
+        for (;;)
+            {
+            connected = priv->m_IpcSession->connect(BOOKMARKSENGINESERVER);
+            if (connected)
+                {
+                break;
+                }
+            else
+                {
+                if (!priv->m_IpcSession->startServer(BOOKMARKSENGINESERVER,
+                BOOKMARKSENGINESERVEREXE))
+                    { // start server failed
+                        qDebug() << "Failed to Start the BOOKMARK Server.";
+                        break;
+                        }
+
+                    }
+                if (0 == --retry)
+                    {
+                    break;
+                    }
+                }
+            }
+        if (connected)
+            {
+
+            connect(priv->m_IpcSession, SIGNAL(readyRead()), this,
+                    SLOT(handleServerResponse()));
+            return ErrNone;
+            }
+        else
+            {
+            return ErrGeneral;
+            }
+        }
+
+/**==============================================================
+* Description: Disconnects the client
+* Author: Chandrashekar.V
+* EmpId:  10289207
+================================================================*/
+void BookmarksClientSide::closeServer()
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    if (priv->m_IpcSession)
+        {
+        priv->m_IpcSession->disconnect();
+        }
+    }
+
+/**==============================================================
+ * Description: Destrcutor of the BookmarksClientSide
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+BookmarksClientSide::~BookmarksClientSide()
+    {
+    }
+
+/**==============================================================
+ * Description: Sends add bookmark request to the server
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+int BookmarksClientSide::AddBookmark(
+        BookmarkLeaf* BookmarkContent)
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    QString data;
+    bool result = false;
+    data.append(BookmarkContent->getTitle());
+    data.append(BOOKMARKSENGINESEPARATOR);
+    data.append(BookmarkContent->getUrl());
+    data.append(BOOKMARKSENGINESEPARATOR);
+    data.append(BookmarkContent->getDate().toString("dd.MM.yyyy"));
+    data.append(BOOKMARKSENGINESEPARATOR);
+    data.append(BookmarkContent->getTag());
+    QString requestType;
+    requestType.append(QString::number(EAddBookmark));
+    if (priv->m_IpcSession)
+        {
+        result = priv->m_IpcSession->sendSync(requestType, data.toAscii());
+        }
+
+    if (result == true)
+        {
+        return ErrNone;
+        }
+    else
+        {
+        return ErrGeneral;
+        }
+    }
+
+/**==============================================================
+ * Description: Sends add fetchbookmark request to the server
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+BookmarkLeaf* BookmarksClientSide::FetchBookmark(
+        QString title)
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    BookmarkLeaf *node = NULL;
+    QString data;
+    data.append(title);
+    QString requestType;
+    requestType.append(QString::number(EFetchBookmark));
+    if (priv->m_IpcSession)
+        {
+        priv->m_IpcSession->sendSync(requestType, data.toAscii());
+        QByteArray msg = priv->m_IpcSession->readAll();
+        QString serverMsg;
+        serverMsg = msg.data();
+        QStringList list = serverMsg.split(BOOKMARKSENGINESEPARATOR);
+
+        QString title = list[0];
+        QString url = list[1];
+        QString strdate = list[2];
+        QString tags = list[3];
+        QDate adate = QDate::fromString(strdate, "dd.MM.yyyy");
+
+        node = new BookmarkLeaf();
+        node->setTitle(title);
+        node->setUrl(url);
+        node->setDate(adate);
+        node->setTag(tags);
+        }
+    return node;
+    }
+
+/**==============================================================
+ * Description: Sends add deletebookmark request to the server
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+int BookmarksClientSide::DeleteBookmark(
+        QString title)
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    QString data;
+    bool result = false;
+    data.append(title);
+    QString requestType;
+    requestType.append(QString::number(EDeleteBookmark));
+    if (priv->m_IpcSession)
+        {
+        result = priv->m_IpcSession->sendSync(requestType, data.toAscii());
+        }
+    if (result == true)
+        {
+        return ErrNone;
+        }
+    else
+        {
+        return ErrGeneral;
+        }
+
+    }
+
+/**==============================================================
+ * Description: gets session Id of the client
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+int BookmarksClientSide::getSessionId(
+        int& BookmarkId)
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    bool result = false;
+    if (priv->m_IpcSession)
+        {
+        result = priv->m_IpcSession->getSessionId(BookmarkId);
+        }
+    if (result == true)
+        {
+        return ErrNone;
+        }
+    else
+        {
+        return ErrGeneral;
+        }
+    }
+
+/**==============================================================
+ * Description: Sends add fetchAllbookmark request to the server
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+QList<BookmarkLeaf*> BookmarksClientSide::FetchAllBookmarks()
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    QList<BookmarkLeaf*> nodeslist;
+    QString data;
+    data.append(NULL);
+    QString requestType;
+    requestType.append(QString::number(EFetchAllBookmark));
+
+    if (priv->m_IpcSession)
+        {
+        priv->m_IpcSession->sendSync(requestType, data.toAscii());
+        QByteArray msg = priv->m_IpcSession->readAll();
+        QString serverMsg;
+        serverMsg = msg.data();
+        QStringList list = serverMsg.split(BOOKMARKSENGINESEPARATOR);
+        int count = list.count() / 4;
+        int i = 0;
+        while (count--)
+            {
+            QString title = list[i++];
+            QString url = list[i++];
+            QString strdate = list[i++];
+            QDate adate = QDate::fromString(strdate, "dd.MM.yyyy");
+            QString tags = list[i++];
+            BookmarkLeaf* node = new BookmarkLeaf();
+            node->setTitle(title);
+            node->setUrl(url);
+            node->setDate(adate);
+            node->setTag(tags);
+
+            nodeslist.append(node);
+            }
+        }
+    return nodeslist;
+
+    }
+
+/**==============================================================
+ * Description: handles server responses
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookmarksClientSide::handleServerResponse()
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BookmarksClientSide);
+    qDebug() << " handling server response" << '\n';
+    QByteArray msg;
+    msg = priv->m_IpcSession->readAll();
+    QString serverMsg;
+    serverMsg = msg.data();
+    qDebug() << " Message is " << serverMsg << '\n';
+    QStringList list1 = serverMsg.split(BOOKMARKSENGINESEPARATOR);
+    int msgType = list1[0].toLocal8Bit().toInt();
+    QString title = list1[1];
+    int res=priv->dispatchServerMessagestoClient(msgType, title);
+
+    }
+
+/**==============================================================
+ * Description: Sends server response notifications to the UI
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+int BookmarksClientSidePrivate::dispatchServerMessagestoClient(int msgType,
+        QString title)
+    {
+    BOOKMARKSCLIENT_PUBLICPTR(BookmarksClientSide);
+    switch (msgType)
+        {
+        case EServerMsgBookmarkDeleted:
+            emit pub->BookmarkDeleted(title);
+            break;
+        case EServerMsgBookmarkAdded:
+            emit pub->BookmarkAdded(title);
+            break;
+        default:
+            break;
+        }
+    return ErrNone;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksengine.pro	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,21 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = subdirs
+CONFIG += ordered debug_and_release
+
+SUBDIRS = ./browsercontentdll/browsercontentdll.pro
+          
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksserver/BookmarksServer.pro	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,88 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = app
+TARGET = BookMarkServer 
+
+# establish relative root dir
+ROOT_DIR = $$PWD/../..
+
+include($$ROOT_DIR/browser.pri)
+
+QT += core network xml sql 
+QT -= gui
+
+HEADERS += $$PWD/inc/bookmarkserver.h \
+           $$PWD/../commoninclude/bookmarkscommonengine.h
+SOURCES += $$PWD/src/servermain.cpp \
+           $$PWD/src/bookmarkserver.cpp 
+
+
+isEmpty(BEDROCK_OUTPUT_DIR): {
+    symbian {
+    	CONFIG(release,release|debug):BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../WrtBuild/Release
+    	CONFIG(debug,release|debug):BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../WrtBuild/Debug
+
+    else {
+    	CONFIG(release,release|debug):BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../../../../WrtBuild/Release
+    	CONFIG(debug,release|debug):BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR=$$PWD/../../../../../WrtBuild/Debug
+    }    
+} else {
+    BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR=$$BEDROCK_OUTPUT_DIR
+}
+
+QMAKE_RPATHDIR += $$BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR/bin
+QMAKE_LIBDIR += $$BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR/bin
+
+
+INCLUDEPATH += $$PWD/inc $$PWD/../commoninclude $$PWD/../../ipc/serviceipc $$PWD/../../ipc/serviceipcserver
+
+# Use IPC components from import directory.
+include($$PWD/../../../../../import/import.pri)
+LIBS += -lwrtserviceipcserver
+
+CONFIG(gcov)   {
+   LIBS +=   -lgcov
+   QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage
+   message( "building for coverage statics" )
+}
+
+     
+OBJECTS_DIR = $$BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServer/tmp
+DESTDIR = $$BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR/bin
+MOC_DIR = $$BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServer/tmp
+RCC_DIR = $$BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServer/tmp
+TEMPDIR = $$BOOKMARK_DATAMODEL_SERVER_OUTPUT_DIR/BookMarkServer/build
+
+
+
+
+CONFIG (maemo) {
+    include(../../../../cwrt-maemo.pri)
+} 
+
+symbian: {
+    TARGET.EPOCHEAPSIZE = 0x20000 0x1000000 // Min 128kb, Max 16Mb
+    TARGET.UID3 = 0x200267E7
+    TARGET.VID = VID_DEFAULT
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = All -TCB -DRM -AllFiles
+    CONFIG +=no_icon
+}
+
+symbian: {
+    INCLUDEPATH +=  $$PWD $$MW_LAYER_SYSTEMINCLUDE $$APP_LAYER_SYSTEMINCLUDE
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksserver/inc/bookmarkserver.h	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,73 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef BOOKMARKSERVER_H
+#define BOOKMARKSERVER_H
+
+#include <QHash>
+#include <serviceipcobserver.h>
+#include <serviceipcserver.h>
+#define BOOKMARKDATAMODELSERVER "BookMarkServer"
+
+const QString dbLocation="BookMarkDatabase.db";
+
+
+
+//using namespace WRT;
+class BookMarkServer: public QObject, public WRT::MServiceIPCObserver
+    {
+    Q_OBJECT
+    public:
+        BookMarkServer();
+        virtual ~BookMarkServer();
+        enum BookmarkRequestTypes
+            {
+            EDeleteBookMark,
+            EAddBookMark,
+            EFetchBookmark,
+            EFetchAllBookmarks,
+            EUnknownrequest
+            };
+        enum BookmarkResponseTypes
+            {
+            EDeleteBookMarkDone,
+            EAddBookMarkDone,
+            EFetchBookmarkDone,
+            EFetchAllBookmarksDone,
+            EUnknownresponse
+            };
+
+
+    private:
+        bool handleRequest(WRT::ServiceIPCRequest *aRequest);
+        void handleCancelRequest(WRT::ServiceIPCRequest *aRequest);
+        void handleClientConnect(WRT::ClientInfo *aNewClient);
+        void handleClientDisconnect(WRT::ClientInfo *aClient);
+    private:
+        void fetchBookMarkData(WRT::ServiceIPCRequest *request);
+        int createDatabase();
+        void addBookMark(WRT::ServiceIPCRequest *request);
+        void deleteBookMark(WRT::ServiceIPCRequest *request);
+    private slots:
+    void closeServer();
+    private:
+        WRT::ServiceFwIPCServer* m_server;
+        QString m_connectionName;
+        QHash<int,QString>m_clients;
+        int m_sessionCount;
+    };
+#endif //BOOKMARKSERVER_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksserver/src/bookmarkserver.cpp	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,325 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include<bookmarkserver.h>
+#include<QSqlDatabase>
+#include<QSqlQuery>
+#include <QDir>
+#include <QFileInfo>
+#include <QList>
+#include<bookmarkscommonengine.h>
+#include<serviceipcrequest.h>
+#include<QSqlError>
+#include<QDebug>
+
+/**==============================================================
+ * Description: Constructor of BookMarkServer
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+BookMarkServer::BookMarkServer() :
+    m_sessionCount(0)
+    {
+
+    m_server = new WRT::ServiceFwIPCServer(this, this);
+    createDatabase();
+    bool ret = m_server->listen(BOOKMARKSENGINESERVER);
+    if (!ret)
+        {
+        qDebug() << " Failed to LISTEN" << '\n';
+        QTimer::singleShot(1, this, SLOT(closeServer()));
+        return;
+        }
+
+    m_server->configIpcServerLifetime(true);
+
+    }
+
+/**==============================================================
+ * Description:Destructor of BookMarkServer
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+BookMarkServer::~BookMarkServer()
+    {
+
+    if (m_server)
+        {
+        m_server->disconnect();
+        delete m_server;
+        m_server = NULL;
+        }
+    }
+
+/**==============================================================
+ * Description:closes the bookmark Server connection
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookMarkServer::closeServer()
+    {
+    // before shutting down, check if any active session exists
+
+    if (m_sessionCount <= 0)
+        QCoreApplication::quit();
+    }
+
+/**==============================================================
+ * Description:Handles the client request
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+bool BookMarkServer::handleRequest(WRT::ServiceIPCRequest *aRequest)
+    {
+
+    WRT::ClientInfo* clientInfo =
+            const_cast<WRT::ClientInfo*> (aRequest->clientInfo());
+    int sessionID = clientInfo->sessionId();
+    bool val(false);
+    bool result = true;
+    int command = aRequest->getOperation().toInt(&val);
+    QString msg = aRequest->getData();
+    QStringList list = msg.split(BOOKMARKSENGINESEPARATOR);
+    switch (command)
+        {
+        case (EDeleteBookMark):
+            deleteBookMark(aRequest);
+            break;
+        case (EAddBookMark):
+            addBookMark(aRequest);
+            break;
+        case (EFetchBookmark):
+            fetchBookMarkData(aRequest);
+            break;
+        case (EFetchAllBookmarks):
+            fetchBookMarkData(aRequest);
+            break;
+        default:
+            result=false;
+            break;
+        }
+    return result;
+    }
+
+/**==============================================================
+ * Description:Adds the bookmark to the database
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookMarkServer::addBookMark(WRT::ServiceIPCRequest *aRequest)
+    {
+
+    QString msg = aRequest->getData();
+    QStringList list = msg.split(BOOKMARKSENGINESEPARATOR);
+
+    QString title = list[0];
+    QString url = list[1];
+    QString adate = list[2];
+    QString tags = list[3];
+
+    QSqlDatabase db = QSqlDatabase::database(m_connectionName);
+
+    if (db.isOpen())
+        {
+
+        QSqlQuery query(db);
+        query.prepare("INSERT INTO BookMarkTable (title, url, adate, tags) "
+            "VALUES (:title, :url, :adate, :tags)");
+
+        query.bindValue(":title", QVariant(title));
+        query.bindValue(":url", QVariant(url));
+        query.bindValue(":adate", QVariant(adate));
+        query.bindValue(":tags", QVariant(tags));
+        query.exec();
+        QSqlError error = query.lastError();
+
+        }
+    QString strResponse;
+    WRT::ClientInfo* clientInfo =
+            const_cast<WRT::ClientInfo*> (aRequest->clientInfo());
+    strResponse.append(QString::number(EServerMsgBookmarkAdded));
+    strResponse.append(BOOKMARKSENGINESEPARATOR);
+    strResponse.append(title);
+    strResponse.append(BOOKMARKSENGINESEPARATOR);
+    aRequest->write(strResponse.toAscii());
+    aRequest->completeRequest();
+    m_server->broadcast(strResponse.toAscii());
+
+    }
+
+/**==============================================================
+ * Description:Deletes the bookmark from the database
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookMarkServer::deleteBookMark(WRT::ServiceIPCRequest *aRequest)
+    {
+
+    QString msg = aRequest->getData();
+    QStringList list = msg.split(";");
+    QString title = list[0];
+    QSqlDatabase db = QSqlDatabase::database(m_connectionName);
+    if (db.isOpen())
+        {
+        QSqlQuery query(db);
+        query.prepare("DELETE FROM BookMarkTable WHERE title=:title");
+        query.bindValue(":title", title);
+        query.exec();
+        QSqlError error = query.lastError();
+        }
+    QString strResponse;
+    strResponse.append(QString::number(EServerMsgBookmarkDeleted));
+    strResponse.append(BOOKMARKSENGINESEPARATOR);
+    strResponse.append(title);
+    strResponse.append(BOOKMARKSENGINESEPARATOR);
+    aRequest->write(strResponse.toAscii());
+    aRequest->completeRequest();
+    }
+
+/**==============================================================
+ * Description:Fetches the bookmark data from the database
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookMarkServer::fetchBookMarkData(WRT::ServiceIPCRequest *request)
+    {
+
+    QSqlDatabase db = QSqlDatabase::database(m_connectionName);
+
+    QString strResponse;
+
+    bool dbopen = db.isOpen();
+
+    if (dbopen)
+        {
+
+        QSqlQuery query(db);
+
+        query.prepare("SELECT title,url,adate,tags FROM BookMarkTable");
+        query.exec();
+        QSqlError error = query.lastError();
+
+        while (query.next())
+            {
+
+            QString title = query.value(0).toString();
+            QString url = query.value(1).toString();
+            QString date = query.value(2).toString();
+            QString tag = query.value(3).toString();
+
+            strResponse.append(title);
+            strResponse.append(BOOKMARKSENGINESEPARATOR);
+            strResponse.append(url);
+            strResponse.append(BOOKMARKSENGINESEPARATOR);
+            strResponse.append(tag);
+            strResponse.append(BOOKMARKSENGINESEPARATOR);
+            strResponse.append(date);
+            strResponse.append(BOOKMARKSENGINESEPARATOR);
+            }
+        }
+
+    WRT::ClientInfo* clientInfo =
+            const_cast<WRT::ClientInfo*> (request->clientInfo());
+    QByteArray res = strResponse.toAscii();
+
+    request->write(strResponse.toAscii());
+    request->completeRequest();
+
+    }
+
+/**==============================================================
+ * Description:Handles the client cancel request
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookMarkServer::handleCancelRequest(WRT::ServiceIPCRequest *aRequest)
+    {
+    qDebug() << " Not supported Right now";
+    }
+
+/**==============================================================
+ * Description:Handles the client connection requests
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookMarkServer::handleClientConnect(WRT::ClientInfo *aClient)
+    {
+
+    int sessionID = aClient->sessionId();
+    m_clients.insert(sessionID, aClient->name());
+    m_sessionCount++;
+
+    }
+
+/**==============================================================
+ * Description:Handles the client disconnect request
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+void BookMarkServer::handleClientDisconnect(WRT::ClientInfo *aClient)
+    {
+    int sessionID = aClient->sessionId();
+    QMutableHashIterator<int, QString> itr(m_clients);
+    while (itr.hasNext())
+        {
+        itr.next();
+        if (itr.key() == sessionID)
+            {
+            itr.remove();
+            break;
+            }
+        }
+
+    if (--m_sessionCount <= 0)
+        {
+        closeServer();
+        
+        }
+
+    }
+
+/**==============================================================
+ * Description:Handles the creation of bookmarks databse
+ * Author: Chandrashekar.V
+ * EmpId:  10289207
+ ================================================================*/
+int BookMarkServer::createDatabase()
+    {
+
+    m_connectionName = "bookmark_";
+
+    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", m_connectionName);
+    db.setHostName("Simulator");
+    db.setDatabaseName(dbLocation);
+
+    if (!db.open())
+        return -1;
+
+    QFileInfo dbFile(dbLocation);
+    if (dbFile.exists() && dbFile.size() == 0)
+        {
+        QSqlQuery query(db);
+        query.exec(
+                "CREATE TABLE BookMarkTable (title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),tags VARCHAR(40),CONSTRAINT pk_BookMarkTable PRIMARY KEY(title))");
+
+        }
+    
+  
+    return 0;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/bookmarksserver/src/servermain.cpp	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,30 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include <QCoreApplication>
+#include <bookmarkserver.h>
+#include<QDebug>
+
+int main( int argc, char **argv )
+{
+    QCoreApplication app(argc, argv);
+    qDebug()<<"FINALLY I AM IN"<<'\n';
+    BookMarkServer* BookMarkServerObj=new BookMarkServer();
+    return app.exec();
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/browsercontentdll/browsercontentdll.pro	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,100 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = lib
+TARGET = browsercontentdll 
+
+ROOT_DIR = $$PWD/../..
+include($$ROOT_DIR/browser.pri)
+
+DEFINES+= BUILDING_BOOKMARK_CONTENTDLL
+
+QT += core network xml sql
+HEADERS += $$PWD/inc/browsercontentdllclientdefs.h \
+           $$PWD/inc/browsercontentdll.h
+           
+SOURCES += $$PWD/src/browsercontentdll.cpp 
+
+isEmpty(BEDROCK_OUTPUT_DIR): {
+    symbian {
+        CONFIG(release, debug|release):BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR=$$PWD/../../WrtBuild/Release
+        CONFIG(debug, debug|release):BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR= $$PWD/../../WrtBuild/Debug
+    } else {
+        CONFIG(release, debug|release):BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR=$$PWD/../../../../../WrtBuild/Release
+        CONFIG(debug, debug|release):BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR= $$PWD/../../../../../WrtBuild/Debug
+    }     
+} else {
+    BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR = $$BEDROCK_OUTPUT_DIR
+}
+     
+OBJECTS_DIR = $$BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR/browsercontentdll/tmp
+DESTDIR = $$BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR/bin
+MOC_DIR = $$BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR/browsercontentdll/tmp
+RCC_DIR = $$BOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR/browsercontentdll/tmp
+TEMPDIR = $$BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR/browsercontentdll/build
+# QMAKE_LIBDIR = $$BOOKMARKSCLIENTDLL_DATAMODEL_OUTPUT_DIR/bin
+
+INCLUDEPATH += $$PWD/inc
+ 
+
+#I believe the following line to be useless on all platforms. (carol.szabo@nokia.com)
+# !s40:LIBS += -Llib
+# CONFIG += \
+#    building-libs \
+#    depend_includepath \
+#    dll
+
+CONFIG += dll 
+
+# CONFIG(release, debug|release):!CONFIG(QTDIR_build){
+#    !unix : contains(QT_CONFIG, reduce_exports): CONFIG += hide_symbols
+#    unix : contains(QT_CONFIG, reduce_relocations): CONFIG += bsymbolic_functions
+# }
+
+CONFIG -= warn_on
+*-g++* : QMAKE_CXXFLAGS += -Wreturn-type -fno-strict-aliasing
+CONFIG(gcov)   {
+   LIBS +=   -lgcov
+   QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage
+   message( "building for coverage statics" )
+}
+
+
+
+
+isEmpty(TEMPDIR) {
+    CONFIG(release, debug|release):TEMPDIR=$$DESTDIR/Release/build
+    CONFIG(debug, debug|release):TEMPDIR=$$DESTDIR/Debug/build
+}
+
+CONFIG (maemo) {
+    include(../../../../cwrt-maemo.pri)
+} 
+
+symbian: {
+    TARGET.UID3 = 0x200267E6
+    TARGET.VID = VID_DEFAULT
+    TARGET.EPOCALLOWDLLDATA=1
+    TARGET.CAPABILITY = All -TCB -DRM -AllFiles
+    LIBS += -lefsrv -lcaf -lcafutils
+    INCLUDEPATH+=$$MW_LAYER_PUBLIC_EXPORT_PATH(cwrt) $$MW_LAYER_PUBLIC_EXPORT_PATH()
+    INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+    INCLUDEPATH+=/epoc32/include
+    browsercontentdlllibs.sources = browsercontentdll.dll
+    browsercontentdlllibs.path = /sys/bin
+    DEPLOYMENT += browsercontentdlllibs
+ 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/browsercontentdll/inc/browsercontentdll.h	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef BROWSERCONTENT_H
+#define BROWSERCONTENT_H
+
+#include<QObject>
+#include<QString>
+#include<browsercontentdllclientdefs.h>
+#include<QtGui>
+
+
+class BrowserContentPrivate;
+
+class BOOKMARKSCONTENTDLL_EXPORT BookmarkLeaf
+{
+public:
+    QString getUrl(){return url;}
+    QString getTitle(){return title;}
+    QDate getDate(){return date;}
+    QTime getLastVisited(){return lastVisited;}
+    QString getDesc(){return desc;}
+    QIcon getFavIcon(){return favicon;}
+    QString getTag(){ return m_tag;}
+    int getIndex() {return m_index;}
+    
+    void setUrl(QString aurl){url=aurl;}
+    void setTitle(QString atitle){title=atitle;}
+    void setDate(QDate adate){date=adate;}
+    void setLastVisited(QTime atime){lastVisited=atime;}
+    void setDesc(QString adesc){desc=adesc;}
+    void setFavIcon(QIcon afavicon){favicon=afavicon;}
+    void setTag(QString atag){m_tag=atag;}
+    void setIndex(int aIndex){m_index=aIndex;}
+private:    
+    QString url;
+    QString title;
+
+    /*The last date on which URL is visited*/
+    QDate date;
+    /*The last time on which URL is visited*/
+    QTime lastVisited;
+
+    QString desc;
+    QIcon favicon;
+    bool expanded;
+    QString m_tag;
+    int m_index;
+    
+
+};
+
+class BOOKMARKSCONTENTDLL_EXPORT HistoryLeaf
+{
+public:
+    QString getUrl(){return url;}
+    QString getTitle(){return title;}
+    QDate getDate(){return date;}
+    QTime getLastVisited(){return lastVisited;}
+    QString getDesc(){return desc;}
+    QIcon getFavIcon(){return favicon;}
+    int getIndex() {return m_index;}
+    
+    void setUrl(QString aurl){url=aurl;}
+    void setTitle(QString atitle){title=atitle;}
+    void setDate(QDate adate){date=adate;}
+    void setLastVisited(QTime atime){lastVisited=atime;}
+    void setDesc(QString adesc){desc=adesc;}
+    void setFavIcon(QIcon afavicon){favicon=afavicon;}
+    void setIndex(int aIndex){m_index=aIndex;}
+private:    
+    QString url;
+    QString title;
+
+    /*The last date on which URL is visited*/
+    QDate date;
+    /*The last time on which URL is visited*/
+    QTime lastVisited;
+
+    QString desc;
+    QIcon favicon;
+    bool expanded;
+    int m_index;
+   
+};
+
+class BOOKMARKSCONTENTDLL_EXPORT BrowserContent:public QObject
+    {
+Q_OBJECT
+BOOKMARKSCLIENT_PRIVATE(BrowserContent)
+public:
+
+    BrowserContent(QString aClientName);
+    ~BrowserContent();
+    int AddBookmark(BookmarkLeaf* BookmarkContent);
+    int DeleteBookmark(QString title);
+    QList<BookmarkLeaf*> FetchAllBookmarks();
+    int reorderBokmarks(QString title,int new_index);
+
+	int AddHistory(HistoryLeaf* HistoryContent);
+	QList<HistoryLeaf*> FetchHistory();
+	int clearHistory();
+
+private:
+	int createDatabase();
+    };
+#endif //BROWSERCONTENT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/browsercontentdll/inc/browsercontentdllclientdefs.h	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef BOOKMARKSCLIENTDEFS_H
+#define BOOKMARKSCLIENTDEFS_H
+
+#define BOOKMARKSCLIENT_PRIVATE(Class) \
+                 private: \
+                 inline Class##Private* priv_func() { return reinterpret_cast<Class##Private*>(priv_ptr); } \
+                 inline const Class##Private* priv_func() const{ return static_cast<Class##Private*>(priv_ptr);} \
+                 friend class Class##Private; \
+                 void* priv_ptr;
+#define BOOKMARKSCLIENT_PUBLIC(Class) \
+        public: \
+                inline Class* pub_func() { return static_cast<Class *>(pub_ptr); } \
+                inline const Class* pub_func() const { return static_cast<const Class *>(pub_ptr); } \
+        private: \
+                friend class Class; \
+                void* pub_ptr;
+
+#define BOOKMARKSCLIENT_INITIALIZE(Class) \
+                 priv_ptr=new Class##Private(); \
+                 Class##Private* priv=priv_func();\
+                 priv->pub_ptr = this;
+#define BOOKMARKSCLIENT_PUBLICPTR(Class) Class * const pub = pub_func()
+#define BOOKMARKSCLIENT_PRIVATEPTR(Class) Class##Private* const priv=priv_func()
+// #define BOOKMARKSENGINECLIENT_EXPORT Q_DECL_EXPORT
+
+
+#ifdef BUILDING_BOOKMARK_CONTENTDLL
+    #define BOOKMARKSCONTENTDLL_EXPORT Q_DECL_EXPORT
+#else
+    #define BOOKMARKSCONTENTDLL_EXPORT Q_DECL_IMPORT
+#endif 
+
+enum EBrowserContentErrorTypes
+    {
+    ErrNone,
+    ErrGeneral = -2
+    };
+#endif //BOOKMARKSCLIENTDEFS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/browsercontentdll/src/browsercontentdll.cpp	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,411 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#include<QString>
+#include<browsercontentdll.h>
+#include<QSqlDatabase>
+#include<QSqlQuery>
+#include<QSqlError>
+#include<QDebug>
+const QString dbLocation="browserContent.db";
+
+class BrowserContentPrivate
+    {
+BOOKMARKSCLIENT_PUBLIC(BrowserContent)
+public:
+    ~BrowserContentPrivate();
+    QString m_connectionName;
+    };
+
+/**==============================================================
+ * Description: Constructor of BrowserContentPrivate
+ ================================================================*/
+BrowserContentPrivate::~BrowserContentPrivate()
+    {
+
+    }
+
+/**==============================================================
+ * Description: Constructor of BrowserContent
+ ================================================================*/
+BrowserContent::BrowserContent(QString aClientName)
+    {
+    BOOKMARKSCLIENT_INITIALIZE(BrowserContent);
+    
+    priv->m_connectionName=aClientName;
+    createDatabase();
+    }
+
+/**==============================================================
+ * Description: creates the database
+ ================================================================*/
+int BrowserContent::createDatabase()
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    
+    QSqlDatabase sqlDB = QSqlDatabase::addDatabase("QSQLITE", priv->m_connectionName);
+    sqlDB.setHostName("Simulator");
+    sqlDB.setDatabaseName(dbLocation);
+
+
+    if (!sqlDB.open())
+        return -1;
+    QSqlError error;
+	int  err = ErrGeneral;
+    
+	QFileInfo dbFile(dbLocation);
+    if (dbFile.exists() && dbFile.size() == 0)
+        {
+        QSqlQuery query(sqlDB);
+        query.exec(
+           "CREATE TABLE BookMarkTable (title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),tags VARCHAR(40),rowindex INTEGER,CONSTRAINT pk_BookMarkTable PRIMARY KEY(title))");
+           error=query.lastError();
+
+         if (error.type() == QSqlError::NoError) {
+          query.exec("CREATE TABLE HistoryTable (rowindex INTEGER  PRIMARY KEY, title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),atime VARCHAR(40))");
+          error=query.lastError();
+         }                        
+    }
+      
+    if (error.type() == QSqlError::NoError) {
+             return ErrNone;
+     }
+     else {
+            return ErrGeneral;
+     }
+ 
+ }
+ 
+
+/**==============================================================
+ * Description: Destrcutor of the BookmarksClientSide
+ ================================================================*/
+BrowserContent::~BrowserContent()
+    {
+    }
+
+/**==============================================================
+ * Description: adds the bookmark to the database
+ ================================================================*/
+int BrowserContent::AddBookmark(
+        BookmarkLeaf* BookmarkContent)
+    {
+    	
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    QSqlError error;
+    QString title =BookmarkContent->getTitle();
+    QString url = BookmarkContent->getUrl();
+    QString adate =BookmarkContent->getDate().toString("dd.MM.yyyy");
+    QString tags = BookmarkContent->getTag();
+    int aIndex=BookmarkContent->getIndex();
+    QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
+
+    if (db.isOpen())
+        {
+        QSqlQuery query(db);
+        query.prepare("UPDATE BookMarkTable SET rowindex=rowindex+1 WHERE rowindex>=:aIndex");
+        query.bindValue(":aIndex", aIndex);
+        query.exec();
+        error = query.lastError();
+		
+        query.prepare("INSERT INTO BookMarkTable (title, url, adate, tags, rowindex) "
+            "VALUES (:title, :url, :adate, :tags, :aIndex)");
+
+        query.bindValue(":title", QVariant(title));
+        query.bindValue(":url", QVariant(url));
+        query.bindValue(":adate", QVariant(adate));
+        query.bindValue(":tags", QVariant(tags));
+		query.bindValue(":rowindex", QVariant(aIndex));
+        
+        query.exec();
+        error = query.lastError();
+        }
+
+    if (error.type() == QSqlError::NoError)
+        {
+        return ErrNone;
+        }
+    else
+        {
+        return ErrGeneral;
+        }
+    }
+
+
+/**==============================================================
+ * Description: deletes the requested bookmark
+ ================================================================*/
+int BrowserContent::DeleteBookmark(
+        QString atitle)
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    QSqlError error;
+    QString title = atitle;
+    QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
+    bool ok;
+    if (db.isOpen())
+        {
+        QSqlQuery query(db);
+        query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable WHERE title=:title");
+        query.bindValue(":title", title);
+        query.exec();
+        error = query.lastError();
+        query.next();
+        int aIndex=query.value(4).toInt(&ok);
+
+        query.prepare("DELETE FROM BookMarkTable WHERE title=:title");
+        query.bindValue(":title", title);
+        query.exec();
+        error = query.lastError();
+        if (error.type() == QSqlError::NoError)
+            {
+            query.prepare("UPDATE BookMarkTable set rowindex=rowindex-1 WHERE rowindex>:aIndex");
+            query.bindValue(":aIndex", aIndex);
+            query.exec();
+            error = query.lastError();
+            }
+        }
+    if (error.type() == QSqlError::NoError)
+        {
+        return ErrNone;
+        }
+    else
+        {
+        return ErrGeneral;
+        }
+
+    }
+
+
+/**==============================================================
+ * Description: fetches Allbookmarks From database
+ ================================================================*/
+QList<BookmarkLeaf*> BrowserContent::FetchAllBookmarks()
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
+    QList<BookmarkLeaf*> nodeslist;
+    
+    bool dbopen = db.isOpen();
+    bool ok;
+
+    if (dbopen)
+        {
+
+        QSqlQuery query(db);
+
+        query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable ORDER BY rowindex");
+        query.exec();
+        QSqlError error = query.lastError();
+
+        while (query.next())
+            {
+
+            QString title = query.value(0).toString();
+            QString url = query.value(1).toString();
+            QString date = query.value(2).toString();
+            QString tag = query.value(3).toString();
+            int aIndex=query.value(4).toInt(&ok);
+            BookmarkLeaf* node = new BookmarkLeaf();
+            QDate adate = QDate::fromString(date, "dd.MM.yyyy");
+            node->setTitle(title);
+            node->setUrl(url);
+            node->setDate(adate);
+            node->setTag(tag);
+            node->setIndex(aIndex);
+            nodeslist.append(node);         
+            }
+        }
+       return nodeslist;
+
+    }
+
+/**==============================================================
+ * Description: Reoders the Bokmarks based on index
+ ================================================================*/
+int BrowserContent::reorderBokmarks(QString title,int new_index)
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
+      QSqlQuery query(db);
+      QSqlError error;
+      bool ok;      
+      query.prepare("SELECT title,url,adate,tags,rowindex FROM BookMarkTable WHERE title=:title");
+      query.bindValue(":title", title);
+      query.exec();
+      error = query.lastError();
+      query.next();
+      int old_index=query.value(4).toInt(&ok);
+      
+      if(old_index>new_index)
+          {
+          //Moving the item UP
+          query.prepare("UPDATE BookMarkTable set rowindex=rowindex+1 WHERE rowindex BETWEEN :new_index AND :old_index-1");
+                    }
+      else if(old_index<new_index)
+          {
+            //Moving items Down
+             query.prepare("UPDATE BookMarkTable set rowindex=rowindex-1 WHERE rowindex BETWEEN :old_index+1 AND :new_index");
+           }
+      query.bindValue(":old_index", old_index);
+      query.bindValue(":new_index", new_index);
+      //Moving items Down
+      query.exec();
+      error= query.lastError();
+
+      if (error.type() == QSqlError::NoError)
+          {
+           query.prepare("UPDATE BookMarkTable set rowindex=:new_index WHERE title=:title");
+           query.bindValue(":title", title);
+           query.bindValue(":new_index", new_index);
+           query.exec();
+           error = query.lastError();
+          }
+
+      if (error.type() == QSqlError::NoError)
+          {
+              return ErrNone;
+          }
+      else
+          {
+          return ErrGeneral;
+          }
+    }
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/**==============================================================
+ * Description: adds the bookmark to the database
+ ================================================================*/
+int BrowserContent::AddHistory(
+        HistoryLeaf* HistoryContent)
+    {
+    	
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    QSqlError error;
+    QString title =HistoryContent->getTitle();
+    QString url = HistoryContent->getUrl();
+    QString adate =HistoryContent->getDate().toString("dd.MM.yyyy");
+    QString atime = HistoryContent->getLastVisited().toString("h:mm ap");
+//    int aIndex=HistoryContent->getIndex();
+    QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
+
+    if (db.isOpen())
+        {
+        QSqlQuery query(db);
+       // query.prepare("UPDATE HistoryTable SET rowindex=rowindex+1 WHERE rowindex>=:aIndex");
+        //query.bindValue(":aIndex", aIndex);
+        //query.exec();
+        //error = query.lastError();
+		
+		//"CREATE TABLE HistoryTable (rowindex INTEGER  PRIMARY KEY, title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),atime VARCHAR(40))");
+
+        query.prepare("INSERT INTO HistoryTable (rowindex,title, url, adate, atime) "
+            "VALUES (NULL,:title, :url, :adate, :atime)");
+
+		//query.bindValue(":rowindex", QVariant(aIndex));
+        query.bindValue(":title", QVariant(title));
+        query.bindValue(":url", QVariant(url));
+        query.bindValue(":adate", QVariant(adate));
+        query.bindValue(":atime", QVariant(atime));
+        query.exec();
+        error = query.lastError();
+        }
+
+    if (error.type() == QSqlError::NoError)
+        {
+        return ErrNone;
+        }
+    else
+        {
+        return ErrGeneral;
+        }
+    }
+
+
+/**==============================================================
+ * Description: fetches History From database
+ ================================================================*/
+QList<HistoryLeaf*> BrowserContent::FetchHistory()
+    {
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
+    QList<HistoryLeaf*> nodeslist;
+    
+    bool dbopen = db.isOpen();
+    bool ok;
+
+    if (dbopen)
+        {
+
+        QSqlQuery query(db);
+
+        query.prepare("SELECT title,url,adate,atime,rowindex FROM HistoryTable ORDER BY rowindex");
+        query.exec();
+        QSqlError error = query.lastError();
+
+        while (query.next())
+            {
+
+            QString title = query.value(0).toString();
+            QString url = query.value(1).toString();
+            QString date = query.value(2).toString();
+            QString time = query.value(3).toString();
+            int aIndex=query.value(4).toInt(&ok);
+            HistoryLeaf* node = new HistoryLeaf();
+            QDate adate = QDate::fromString(date, "dd.MM.yyyy");
+			QTime atime = QTime::fromString(time, "h:mm ap");
+            node->setTitle(title);
+            node->setUrl(url);
+            node->setDate(adate);
+            node->setLastVisited(atime);
+//            node->setTag(tag);
+            node->setIndex(aIndex);
+            nodeslist.append(node);         
+            }
+        }
+       return nodeslist;
+
+    }
+
+/**==============================================================
+ * Description: Clear all rows  From History database
+ ================================================================*/
+int BrowserContent::clearHistory()
+{
+    BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
+    QSqlError error;
+    
+    QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
+    bool ok;
+    if (db.isOpen()){
+        QSqlQuery query(db);
+        query.prepare("DELETE  FROM  HistoryTable" );
+        
+		query.exec();
+        error = query.lastError();
+        
+		if (error.type() == QSqlError::NoError)	{
+			return ErrNone;
+		}
+		else{
+			return ErrGeneral;
+		}
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bookmarksengine/commoninclude/bookmarkscommonengine.h	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+#ifndef BOOKMARKSCOMMONENGINE_H
+#define BOOKMARKSCOMMONENGINE_H
+
+
+#define BOOKMARKSENGINESERVER "BookMarkServer"
+
+#ifdef Q_OS_LINUX 
+#define BOOKMARKSENGINESERVEREXE "./BookMarkServer"
+#else
+#define BOOKMARKSENGINESERVEREXE "BookMarkServer.exe"
+#endif
+
+#define BOOKMARKSENGINESEPARATOR  ";"
+
+    enum BookmarksRequestTypes
+        {
+        EDeleteBookmark,
+        EAddBookmark,
+        EFetchBookmark,
+        EFetchAllBookmark,
+        EUnknownrequest
+        };
+    enum EServerResponseTypes
+        {
+        EServerMsgBookmarkDeleted,
+        EServerMsgBookmarkAdded,
+        EServerMsgBookmarkFetched,
+        EServerMsgBookmarkAllFetched,
+        EServerMsgUnknown
+        };
+    enum EBookmarkErrorTypes
+        {
+        ErrNone,
+        ErrGeneral=-2
+        };
+#endif //BOOKMARKSCOMMONENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser.pri	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,66 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+isEmpty(_BROWSER_PRI_INCLUDED_): {
+    
+    _BROWSER_PRI_INCLUDED_=1
+
+    symbian {
+        CONFIG += debug_and_release
+        MMP_RULES += EXPORTUNFROZEN
+    }
+   
+    CONFIG(debug, debug|release) {
+        SUBDIRPART = Debug
+    } else {
+        SUBDIRPART = Release
+    }
+    
+    # Figure out the root of where stuff should go (this could be done via configure)
+symbian {
+    OUTPUT_DIR = $$PWD
+} else {
+    OUTPUT_DIR = $$PWD/../../..
+}
+    OBJECTS_DIR = $$OUTPUT_DIR/WrtBuild/$$SUBDIRPART/$$TARGET/tmp
+    MOC_DIR = $$OUTPUT_DIR/WrtBuild/$$SUBDIRPART/$$TARGET/tmp
+    RCC_DIR = $$OUTPUT_DIR/WrtBuild/$$SUBDIRPART/$$TARGET/tmp
+    UI_DIR = $$OUTPUT_DIR/WrtBuild/$$SUBDIRPART/$$TARGET/tmp
+    TEMPDIR= $$OUTPUT_DIR/WrtBuild/$$SUBDIRPART/$$TARGET/build
+    DESTDIR = $$OUTPUT_DIR/WrtBuild/$$SUBDIRPART/bin
+    QMAKE_RPATHDIR = $$DESTDIR $$QMAKE_RPATHDIR
+    QMAKE_LIBDIR = $$DESTDIR $$QMAKE_LIBDIR
+    
+    # Add the output dirs to the link path too
+    LIBS += -L$$DESTDIR
+    
+    DEPENDPATH += .
+    INCLUDEPATH += .
+
+    symbian {
+        BROWSER_INCLUDE = $$MW_LAYER_PUBLIC_EXPORT_PATH(browser)
+    } else {
+        BROWSER_INCLUDE = $$PWD/include/
+    }
+    
+    QMAKE_CXXFLAGS_DEBUG += -g
+    
+    CONFIG(gcov)   {
+       LIBS +=   -lgcov
+       QMAKE_CXXFLAGS += -fprofile-arcs -ftest-coverage
+    }
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browser.pro	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,20 @@
+#
+# Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+TEMPLATE = subdirs
+CONFIG += ordered
+
+SUBDIRS += bookmarksengine
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/layers.sysdef.xml	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition SYSTEM "sysdef_1_5_1.dtd" [
+  <!ENTITY layer_real_source_path "sf/mw/browser" >
+]>
+
+<SystemDefinition name="browser" schema="1.5.1">
+    <systemModel>
+        <layer name="mw_layer">
+            <module name="browser">
+                <unit unitID="browser" mrp="" bldFile="&layer_real_source_path;/" name="browser" proFile="browser.pro" qmakeArgs="&quot;what+=plat_101&quot;" filter=""/>
+            </module>
+        </layer>
+    </systemModel>
+</SystemDefinition>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysdef_1_5_1.dtd	Tue May 04 12:39:38 2010 +0300
@@ -0,0 +1,88 @@
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset name CDATA #REQUIRED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED
+  proFile CDATA #IMPLIED
+  qmakeArgs CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>