bookmarksengine/browsercontentdll/src/browsercontentdll.cpp
changeset 4 6637b4599484
parent 2 016bf4557e2f
child 6 aecf83d556aa
equal deleted inserted replaced
2:016bf4557e2f 4:6637b4599484
    73     //Check if the table exists, create table only when it's empty 
    73     //Check if the table exists, create table only when it's empty 
    74     QStringList tablelist = sqlDB.tables(QSql::Tables);
    74     QStringList tablelist = sqlDB.tables(QSql::Tables);
    75     if (tablelist.count() == 0) {
    75     if (tablelist.count() == 0) {
    76         QSqlQuery query(sqlDB);
    76         QSqlQuery query(sqlDB);
    77         query.exec(
    77         query.exec(
    78            "CREATE TABLE BookMarkTable (title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),tags VARCHAR(40),rowindex INTEGER, domain VARCHAR(100),CONSTRAINT pk_BookMarkTable PRIMARY KEY(title))");
    78            "CREATE TABLE BookMarkTable (title VARCHAR NOT NULL,url VARCHAR,adate VARCHAR,tags VARCHAR,rowindex INTEGER, domain VARCHAR,CONSTRAINT pk_BookMarkTable PRIMARY KEY(title))");
    79            error=query.lastError();
    79            error=query.lastError();
    80 
    80 
    81         if (error.type() == QSqlError::NoError) {
    81         if (error.type() == QSqlError::NoError) {
    82           query.exec("CREATE TABLE HistoryTable (rowindex INTEGER  PRIMARY KEY, title VARCHAR(40) NOT NULL,url VARCHAR(100),adate VARCHAR(40),atime VARCHAR(40), domain VARCHAR(100))");
    82             query.exec("CREATE TABLE HistoryTable (rowindex INTEGER  PRIMARY KEY, pageTitle VARCHAR NOT NULL,url VARCHAR,domain VARCHAR, timestamp int)");
    83           error=query.lastError();
    83           error=query.lastError();
    84         }                        
    84         }                        
    85     }
    85     }
    86       
    86       
    87     if (error.type() == QSqlError::NoError) {
    87     if (error.type() == QSqlError::NoError) {
   100     }
   100     }
   101 
   101 
   102 /**==============================================================
   102 /**==============================================================
   103  * Description: adds the bookmark to the database
   103  * Description: adds the bookmark to the database
   104  ================================================================*/
   104  ================================================================*/
   105 int BrowserContent::AddBookmark(
   105 int BrowserContent::addBookmark(
   106         BookmarkLeaf* BookmarkContent)
   106         BookmarkLeaf* BookmarkContent)
   107 {
   107 {
   108     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   108     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   109     QSqlError error;
   109     QSqlError error;
   110     QString title =BookmarkContent->getTitle();
   110     QString title =BookmarkContent->getTitle();
   143 }
   143 }
   144 
   144 
   145 /**==============================================================
   145 /**==============================================================
   146  * Description: deletes the requested bookmark
   146  * Description: deletes the requested bookmark
   147  ================================================================*/
   147  ================================================================*/
   148 int BrowserContent::DeleteBookmark(QString atitle)
   148 int BrowserContent::deleteBookmark(QString atitle)
   149 {
   149 {
   150     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   150     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   151     QSqlError error;
   151     QSqlError error;
   152     QString title = atitle;
   152     QString title = atitle;
   153     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   153     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   187 
   187 
   188 
   188 
   189 /**==============================================================
   189 /**==============================================================
   190  * Description: fetches Allbookmarks From database
   190  * Description: fetches Allbookmarks From database
   191  ================================================================*/
   191  ================================================================*/
   192 QList<BookmarkLeaf*> BrowserContent::FetchAllBookmarks()
   192 QList<BookmarkLeaf*> BrowserContent::fetchAllBookmarks()
   193 {
   193 {
   194     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   194     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   195     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   195     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   196     QList<BookmarkLeaf*> nodeslist;
   196     QList<BookmarkLeaf*> nodeslist;
   197     
   197     
   206 
   206 
   207         while (query.next()) {
   207         while (query.next()) {
   208             QString title = query.value(0).toString();
   208             QString title = query.value(0).toString();
   209             if(title.contains("'", Qt::CaseInsensitive))
   209             if(title.contains("'", Qt::CaseInsensitive))
   210                 title.replace(QString("'"), QString("&#39"));
   210                 title.replace(QString("'"), QString("&#39"));
   211       if(title.contains("\"", Qt::CaseInsensitive))
   211             if(title.contains("\"", Qt::CaseInsensitive))
   212                 title.replace(QString("\""), QString("&#34"));
   212                 title.replace(QString("\""), QString("&#34"));
   213             QString url = query.value(1).toString();
   213             QString url = query.value(1).toString();
   214             if(url.contains("'", Qt::CaseInsensitive))
   214             if(url.contains("'", Qt::CaseInsensitive))
   215                 url.replace(QString("'"), QString("&#39"));
   215                 url.replace(QString("'"), QString("&#39"));
   216             if(url.contains("\"", Qt::CaseInsensitive))
   216             if(url.contains("\"", Qt::CaseInsensitive))
   340 
   340 
   341 
   341 
   342 /**==============================================================
   342 /**==============================================================
   343  * Description: adds the bookmark to the database
   343  * Description: adds the bookmark to the database
   344  ================================================================*/
   344  ================================================================*/
   345 int BrowserContent::AddHistory(
   345 int BrowserContent::addHistory(
   346         HistoryLeaf* HistoryContent)
   346         HistoryLeaf* HistoryContent)
   347 {
   347 {
   348     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   348     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   349     QSqlError error;
   349     QSqlError error;
   350     QString title =HistoryContent->getTitle();
   350     QString title =HistoryContent->getTitle();
   351     QString url = HistoryContent->getUrl();
   351     QString url = HistoryContent->getUrl();
   352     QString adate =HistoryContent->getDate().toString("dd.MM.yyyy");
   352     QDateTime dt  = QDateTime::currentDateTime();
   353     QString atime = HistoryContent->getLastVisited().toString("h:mm ap");
   353     int timestamp = dt.toTime_t();
   354 
   354 
   355     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   355     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   356 
   356 
   357     if (db.isOpen()) {
   357     if (db.isOpen()) {
   358         QSqlQuery query(db);
   358         QSqlQuery query(db);
   359         query.prepare("INSERT INTO HistoryTable (rowindex,title, url, adate, atime, domain) "
   359 
   360             "VALUES (NULL,:title, :url, :adate, :atime, :domain)");
   360 		query.prepare("INSERT INTO HistoryTable (rowindex,pageTitle, url, domain, timestamp) "
       
   361                        "VALUES (NULL,:title, :url, :domain, :timestamp)");
   361 
   362 
   362         query.bindValue(":title",  QVariant(title));
   363         query.bindValue(":title",  QVariant(title));
   363         query.bindValue(":url",    QVariant(url));
   364         query.bindValue(":url",    QVariant(url));
   364         query.bindValue(":adate",  QVariant(adate));
       
   365         query.bindValue(":atime",  QVariant(atime));
       
   366         query.bindValue(":domain", QVariant(filterUrl(url)));
   365         query.bindValue(":domain", QVariant(filterUrl(url)));
       
   366 		query.bindValue(":timestamp",  QVariant(timestamp));
   367         query.exec();
   367         query.exec();
   368         error = query.lastError();
   368         error = query.lastError();
   369     }
   369     }
   370 
   370 
   371     if (error.type() == QSqlError::NoError) {
   371     if (error.type() == QSqlError::NoError) {
   377 
   377 
   378 
   378 
   379 /**==============================================================
   379 /**==============================================================
   380  * Description: fetches History From database
   380  * Description: fetches History From database
   381  ================================================================*/
   381  ================================================================*/
   382 QList<HistoryLeaf*> BrowserContent::FetchHistory()
   382 QList<HistoryLeaf*> BrowserContent::fetchHistory()
   383 {
   383 {
   384     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   384     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   385     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   385     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   386     QList<HistoryLeaf*> nodeslist;
   386     QList<HistoryLeaf*> nodeslist;
   387     
   387     
   389     bool ok;
   389     bool ok;
   390 
   390 
   391     if (dbopen) {
   391     if (dbopen) {
   392         QSqlQuery query(db);
   392         QSqlQuery query(db);
   393 
   393 
   394         query.prepare("SELECT title,url,adate,atime,rowindex FROM HistoryTable ORDER BY rowindex");
   394 		query.prepare("SELECT pagetitle,url,rowindex,timestamp FROM HistoryTable ORDER BY timestamp ASC");
   395         query.exec();
   395         query.exec();
   396         QSqlError error = query.lastError();
   396         QSqlError error = query.lastError();
   397 
   397 
   398         while (query.next()) {
   398         while (query.next()) {
   399             QString title = query.value(0).toString();
   399             QString title = query.value(0).toString();
   400             if(title.contains("\"", Qt::CaseInsensitive))
   400             if(title.contains("\"", Qt::CaseInsensitive))
   401                 title.replace(QString("\""), QString("&#34"));
   401                 title.replace(QString("\""), QString("&#34"));
   402             QString url = query.value(1).toString();
   402             QString url = query.value(1).toString();
   403             QString date = query.value(2).toString();
   403 			int aIndex=query.value(2).toInt(&ok);
   404             QString time = query.value(3).toString();
   404             uint timest = query.value(3).toUInt();
   405             int aIndex=query.value(4).toInt(&ok);
   405             QDateTime dtime=QDateTime::fromTime_t ( timest );
   406             HistoryLeaf* node = new HistoryLeaf();
   406             QDate adate=dtime.date();
   407             QDate adate = QDate::fromString(date, "dd.MM.yyyy");
   407             QTime atime =dtime.time(); 
   408             QTime atime = QTime::fromString(time, "h:mm ap");
   408             
       
   409 			HistoryLeaf* node = new HistoryLeaf();
   409             node->setTitle(title);
   410             node->setTitle(title);
   410             node->setUrl(url);
   411             node->setUrl(url);
   411             node->setDate(adate);
   412             node->setDate(adate);
   412             node->setLastVisited(atime);
   413             node->setLastVisited(atime);
   413 //            node->setTag(tag);
       
   414             node->setIndex(aIndex);
   414             node->setIndex(aIndex);
   415             nodeslist.append(node);         
   415             nodeslist.append(node);         
   416         }
   416         }
   417     }
   417     }
   418     return nodeslist;
   418     return nodeslist;
   569   return atitle;
   569   return atitle;
   570 }
   570 }
   571 /**==============================================================
   571 /**==============================================================
   572  * Description: Retrieves the bookmarks and sends it in serialized fashion
   572  * Description: Retrieves the bookmarks and sends it in serialized fashion
   573  ================================================================*/
   573  ================================================================*/
   574 QString BrowserContent::FetchSerializedBookmarks()
   574 QString BrowserContent::fetchSerializedBookmarks()
   575     {
   575     {
   576     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   576     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   577     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   577     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   578 
   578 
   579     bool dbopen = db.isOpen();
   579     bool dbopen = db.isOpen();
   590 
   590 
   591     while (query.next())
   591     while (query.next())
   592         {
   592         {
   593 
   593 
   594     QString title = query.value(0).toString();
   594     QString title = query.value(0).toString();
       
   595 	if(title.contains("'", Qt::CaseInsensitive))
       
   596         title.replace(QString("'"), QString("&#39"));
       
   597     if(title.contains("\"", Qt::CaseInsensitive))
       
   598         title.replace(QString("\""), QString("&#34"));
   595     QString url = query.value(1).toString();
   599     QString url = query.value(1).toString();
       
   600 	if(url.contains("'", Qt::CaseInsensitive))
       
   601         url.replace(QString("'"), QString("&#39"));
       
   602     if(url.contains("\"", Qt::CaseInsensitive))
       
   603         url.replace(QString("\""), QString("&#34"));
   596     QString date = query.value(2).toString();
   604     QString date = query.value(2).toString();
   597     QString tag = query.value(3).toString();
   605     QString tag = query.value(3).toString();
   598     int aIndex=query.value(4).toInt(&ok);
   606     int aIndex=query.value(4).toInt(&ok);
   599     bookmakrData.append("{");
   607     bookmakrData.append("{");
   600     bookmakrData.append("\"title\": \"");
   608     bookmakrData.append("\"title\": \"");
   611         }
   619         }
   612     return bookmakrData;
   620     return bookmakrData;
   613     }
   621     }
   614 
   622 
   615 
   623 
       
   624 
   616 /**==============================================================
   625 /**==============================================================
   617  * Description: Retrieves the History and sends it in serialized fashion
   626  * Description: Retrieves the History and sends it in serialized fashion
   618  ================================================================*/
   627  ================================================================*/
   619 void BrowserContent::FetchSerializedHistory(QVector<QString> &folderVector,QMap<QString,QString> &mymap)
   628 void BrowserContent::fetchSerializedHistory(QVector<QString> &folders,QMap<QString,QString> &historyData)
   620     {
   629 {
   621 
       
   622     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   630     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   623     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   631     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   624     QList<HistoryLeaf*> nodeslist;
   632     QList<HistoryLeaf*> nodeslist;
   625     int i=0;
   633     int i=0;
   626     bool dbopen = db.isOpen();
   634     bool dbopen = db.isOpen();
   627     bool ok;
   635     bool ok;
   628     QString history = "";
   636     QString history = "";
   629 
   637 
   630     if (dbopen)
   638     if (!dbopen) {
   631         {
   639 		return;
       
   640 	}
   632 
   641 
   633     QSqlQuery query(db);
   642     QSqlQuery query(db);
   634 
   643 
   635     query.prepare("SELECT title,url,adate,atime,rowindex FROM HistoryTable ORDER BY rowindex");
   644 	query.prepare("SELECT pagetitle,url,rowindex,timestamp FROM HistoryTable ORDER BY timestamp ASC");
   636     query.exec();
   645     query.exec();
   637     QSqlError error = query.lastError();
   646     QSqlError error = query.lastError();
   638     QString prevtitle="";
       
   639     int len=query.numRowsAffected();
   647     int len=query.numRowsAffected();
   640     static int count=1;
   648     
   641     while (query.next())
   649 	while (query.next()) {
   642         {
   650         QString title = query.value(0).toString();
   643 
   651 	    
   644     QString title = query.value(0).toString();
   652 		if(title.contains("\"", Qt::CaseInsensitive))
   645     QString url = query.value(1).toString();
   653           title.replace(QString("\""), QString("&#34"));
   646     QString date = query.value(2).toString();
   654         
   647     QString time = query.value(3).toString();
   655 		QString url = query.value(1).toString();
   648     int aIndex=query.value(4).toInt(&ok);
   656         uint timest = query.value(3).toUInt();
   649     HistoryLeaf* node = new HistoryLeaf();
   657         QDateTime dtime=QDateTime::fromTime_t ( timest );
   650     QDate adate = QDate::fromString(date, "dd.MM.yyyy");
   658         QDate adate=dtime.date();
   651     QTime atime = QTime::fromString(time, "h:mm ap");
   659         QTime atime =dtime.time();
   652 
   660         int aIndex=query.value(4).toInt(&ok);
   653     QString foldertitle=findFolderForDate(adate);
   661        
   654 
   662 		QDate currentDate = QDateTime::currentDateTime().date();
   655 
   663         int daysToCurrentDate = adate.daysTo(currentDate);
   656     if(folderVector.contains(foldertitle))
   664 
   657         {
   665         if(daysToCurrentDate < 0) {
   658     mymap[prevtitle].append("\"},");
   666 		     continue;
   659         }
   667 		}
   660     else
   668 		
   661         {
   669         QString foldertitle = findFolderForDate(adate);
   662     folderVector.append(foldertitle);
   670  
   663     if(count>1)
   671         if(folders.contains(foldertitle)) {
   664         {
   672     		 historyData[foldertitle].append(",");
   665     mymap[prevtitle].append("\"}");
   673         } else  {
   666     mymap[prevtitle].append ("]");
   674             folders.append(foldertitle);
   667     mymap[foldertitle].append("[");
   675                historyData[foldertitle].append("[");
   668         }
   676         }
   669     else
   677         historyData[foldertitle].append("{");
   670         {
   678         historyData[foldertitle].append("\"titleVal\": \"");
   671     mymap[foldertitle].append("[");
   679         historyData[foldertitle].append(title);
   672         }
   680         historyData[foldertitle].append("\", \"dateVal\": \"");
   673     count++;
   681         historyData[foldertitle].append(adate.toString("dd.MM.yyyy"));
   674 
   682         historyData[foldertitle].append("\", \"urlVal\": \"");
   675 
   683         historyData[foldertitle].append(url);
   676         }
   684         historyData[foldertitle].append("\", \"timeVal\": \"");
   677 
   685         historyData[foldertitle].append(atime.toString("h:mm ap"));
   678     prevtitle=foldertitle;
   686 	    historyData[foldertitle].append("\"}");
   679 
   687     }
   680     mymap[foldertitle].append("{");
   688 	for (int i = 0; i < folders.size(); ++i) {
   681     mymap[foldertitle].append("\"titleVal\": \"");
   689 	  historyData[folders[i]].append("]");
   682     mymap[foldertitle].append(title);
   690 	}
   683     mymap[foldertitle].append("\", \"dateVal\": \"");
   691 }
   684     mymap[foldertitle].append(adate.toString("dd.MM.yyyy"));
       
   685     mymap[foldertitle].append("\", \"urlVal\": \"");
       
   686     mymap[foldertitle].append(url);
       
   687     mymap[foldertitle].append("\", \"timeVal\": \"");
       
   688     mymap[foldertitle].append(atime.toString("h:mm ap"));
       
   689         }
       
   690     mymap[prevtitle].append("\"}");
       
   691     mymap[prevtitle].append ("]");
       
   692         }
       
   693 
       
   694     }
       
   695 /**==============================================================
   692 /**==============================================================
   696  * Description: Retrieves the bookmark titles and sends it in serialized fashion
   693  * Description: Retrieves the bookmark titles and sends it in serialized fashion
   697  ================================================================*/
   694  ================================================================*/
   698 void BrowserContent::FetchAllBookmarkTitles(QVector<QString> &title)
   695 void BrowserContent::fetchAllBookmarkTitles(QVector<QString> &title)
   699     {
   696     {
   700     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   697     BOOKMARKSCLIENT_PRIVATEPTR(BrowserContent);
   701     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   698     QSqlDatabase db = QSqlDatabase::database(priv->m_connectionName);
   702 
   699 
   703     bool dbopen = db.isOpen();
   700     bool dbopen = db.isOpen();
   704     bool ok;
       
   705     int i=0;
   701     int i=0;
   706 
   702 
   707     if(dbopen)
   703     if(dbopen)
   708         {
   704         {
   709 
   705 
   744         return folder;
   740         return folder;
   745     }
   741     }
   746 
   742 
   747     //Check if date to belongs to current week folder
   743     //Check if date to belongs to current week folder
   748     //Should disply the day for the current week
   744     //Should disply the day for the current week
   749     if(daysToCurrentDate < 7  &&  currentDayOfWeek > nodeDayOfWeek ){
   745     if(daysToCurrentDate > 1 && daysToCurrentDate < 7  &&  currentDayOfWeek > nodeDayOfWeek ){
   750         
   746         
   751         QString folder = qtTrId("txt_browser_history_this_week");
   747         QString folder = qtTrId("txt_browser_history_this_week");
   752         return folder;
   748         return folder;
   753     }
   749     } 
   754 
   750 
   755     if(dateInThisMonth(nodeDate)){
   751     if(daysToCurrentDate > 1 && dateInThisMonth(nodeDate)){
   756         QString folder = qtTrId("txt_browser_history_this_month");
   752         QString folder = qtTrId("txt_browser_history_this_month");
   757         return folder;
   753         return folder;
   758     }
   754     }
   759 
   755 
   760    QString folder = nodeDate.toString("dd.MM.yyyy");
   756    QString folder = nodeDate.toString("dd.MM.yyyy");