X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=trunk%2Fsrc%2Fbase%2Fbackbone%2FBookmarks.cpp;h=c39f8683036f2a03407d643eec1417bc09222ef9;hb=849177861d4fd39904e1121e55f5896a70b1d6f6;hp=6468dd0cb73b0098d61622eaf1727d9ef6b14423;hpb=1f0d925a0aea4e0dd6b124322f16a4c961595350;p=mdictionary diff --git a/trunk/src/base/backbone/Bookmarks.cpp b/trunk/src/base/backbone/Bookmarks.cpp index 6468dd0..c39f868 100644 --- a/trunk/src/base/backbone/Bookmarks.cpp +++ b/trunk/src/base/backbone/Bookmarks.cpp @@ -7,10 +7,21 @@ Bookmarks::Bookmarks() { + "bookmarks.db"; checkAndCreateDb(); initAccents(); + + mdb = QSqlDatabase::addDatabase("QSQLITE", + QString("%2").arg((int)QThread::currentThreadId())); + mdb.setDatabaseName(dbName); +} + + +Bookmarks::~Bookmarks() { + mdb.close(); } QSqlDatabase Bookmarks::getDbCnx(QString dbName) { + QSqlDatabase::removeDatabase( + QString("%2").arg((int)QThread::currentThreadId())); QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE", QString("%2").arg((int)QThread::currentThreadId())); db.setDatabaseName(dbName); @@ -21,20 +32,17 @@ QSqlDatabase Bookmarks::getDbCnx(QString dbName) { bool Bookmarks::checkAndCreateDb() { QSqlDatabase db = getDbCnx(dbName); - if(!db.isOpen() && !db.open()) { - qDebug() << "Database error: " << db.lastError().text() << endl; - return false; - } + db.open(); QSqlQuery cur(db); cur.exec("create table bookmarks(key text, normalized text, translation text)"); db.close(); - return true; } void Bookmarks::clear() { + checkAndCreateDb(); QSqlDatabase db = getDbCnx(dbName); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; @@ -49,6 +57,7 @@ void Bookmarks::clear() { void Bookmarks::add(Translation* translation) { + checkAndCreateDb(); QSqlDatabase db = getDbCnx(dbName); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; @@ -66,6 +75,7 @@ void Bookmarks::add(Translation* translation) { void Bookmarks::remove(Translation* translation) { + checkAndCreateDb(); QSqlDatabase db = getDbCnx(dbName); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; @@ -81,6 +91,7 @@ void Bookmarks::remove(Translation* translation) { QList Bookmarks::list() { + checkAndCreateDb(); QList res; QSqlDatabase db = getDbCnx(dbName); if(!db.isOpen() && !db.open()) { @@ -90,7 +101,8 @@ QList Bookmarks::list() { QSqlQuery cur(db); cur.exec("select distinct key from bookmarks"); while(cur.next()) - res.append(new BookmarkTranslation(cur.value(0).toString(), this, dbName)); + res.append(new BookmarkTranslation(cur.value(0).toString(), + this, dbName)); db.close(); return res; } @@ -98,12 +110,11 @@ QList Bookmarks::list() { QList Bookmarks::searchWordList(QString word) { - + checkAndCreateDb(); if(word.indexOf("*")==-1 && word.indexOf("?")== -1) word+="%"; word = word.replace("*", "%"); word = word.replace("?", "_"); - qDebug() << word; QList tr; QSqlDatabase db = getDbCnx(dbName); @@ -128,6 +139,7 @@ QList Bookmarks::searchWordList(QString word) { QStringList Bookmarks::search(QString word, QString dbName) { + //checkAndCreateDb(); QStringList result; QSqlDatabase db = getDbCnx(dbName); if(!db.isOpen() && !db.open()) { @@ -149,17 +161,15 @@ QStringList Bookmarks::search(QString word, QString dbName) { bool Bookmarks::inBookmarks(QString word) { - QSqlDatabase db = getDbCnx(dbName); - if(!db.isOpen() && !db.open()) { - qDebug() << "Database error: " << db.lastError().text() << endl; + if(!mdb.isOpen() && !mdb.open()) { + qDebug() << "Database error: " << mdb.lastError().text() << endl; return false; } - QSqlQuery cur(db); + QSqlQuery cur(mdb); cur.prepare("select translation from bookmarks where key like ? limit 1"); cur.addBindValue(word); cur.exec(); if(cur.next()) return true; - db.close(); return false; }