--- /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;
+ }
+ }
+}