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) { |
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("'")); |
210 title.replace(QString("'"), QString("'")); |
211 if(title.contains("\"", Qt::CaseInsensitive)) |
211 if(title.contains("\"", Qt::CaseInsensitive)) |
212 title.replace(QString("\""), QString(""")); |
212 title.replace(QString("\""), QString(""")); |
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("'")); |
215 url.replace(QString("'"), QString("'")); |
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) { |
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(""")); |
401 title.replace(QString("\""), QString(""")); |
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; |
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("'")); |
|
597 if(title.contains("\"", Qt::CaseInsensitive)) |
|
598 title.replace(QString("\""), QString(""")); |
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("'")); |
|
602 if(url.contains("\"", Qt::CaseInsensitive)) |
|
603 url.replace(QString("\""), QString(""")); |
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(""")); |
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 |