diff -r 000000000000 -r fa475d6462b2 bookmarksengine/browsercontentdll/src/browsercontentdll.cpp --- /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 +#include +#include +#include +#include +#include +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 BrowserContent::FetchAllBookmarks() + { + BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); + QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); + QList 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_indexgetTitle(); + 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 BrowserContent::FetchHistory() + { + BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent); + QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName); + QList 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; + } + } +}