From: Bartosz Szatkowski Date: Wed, 15 Sep 2010 08:16:16 +0000 (+0200) Subject: Fixed bookmarks db issues X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=ed9bcf65129ef51dd0ec89df8e70bbb66c89c5c5;p=mdictionary Fixed bookmarks db issues --- diff --git a/src/mdictionary/backbone/Bookmarks.cpp b/src/mdictionary/backbone/Bookmarks.cpp index a3a0fca..5583368 100644 --- a/src/mdictionary/backbone/Bookmarks.cpp +++ b/src/mdictionary/backbone/Bookmarks.cpp @@ -5,12 +5,11 @@ Bookmarks::Bookmarks() { this->dbName = QDir::homePath() + "/.mdictionary/" + "bookmarks.db"; - checkAndCreateDb(); + mdb = QSqlDatabase::addDatabase("QSQLITE"); + mdb.setDatabaseName(dbName); + checkAndCreateDb(dbName); initAccents(); - mdb = QSqlDatabase::addDatabase("QSQLITE", - QString("%2").arg((int)QThread::currentThreadId())); - mdb.setDatabaseName(dbName); } @@ -19,23 +18,21 @@ Bookmarks::~Bookmarks() { } -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); - return db; +QSqlDatabase Bookmarks::getDbCnx(){ + return mdb; } -bool Bookmarks::checkAndCreateDb() { - QSqlDatabase db = getDbCnx(dbName); +bool Bookmarks::checkAndCreateDb(QString dbName) { + QSqlDatabase db = QSqlDatabase::database(); + if(dbName.size()) + db.setDatabaseName(dbName); + else + db.setDatabaseName(this->dbName); db.open(); QSqlQuery cur(db); cur.exec("create table bookmarks(key text, normalized text, translation text)"); - db.close(); return true; } @@ -43,7 +40,7 @@ bool Bookmarks::checkAndCreateDb() { void Bookmarks::clear() { checkAndCreateDb(); - QSqlDatabase db = getDbCnx(dbName); + QSqlDatabase db = getDbCnx(); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; return ; @@ -51,14 +48,15 @@ void Bookmarks::clear() { QSqlQuery cur(db); cur.exec("drop table bookmarks"); cur.exec("create table bookmarks(key text, normalized text,translation text)"); - db.close(); } void Bookmarks::add(Translation* translation) { + if (!translation) + return ; checkAndCreateDb(); - QSqlDatabase db = getDbCnx(dbName); + QSqlDatabase db = getDbCnx(); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; return ; @@ -70,13 +68,14 @@ void Bookmarks::add(Translation* translation) { cur.addBindValue(removeAccents(translation->key())); cur.addBindValue(translation->toHtml()); cur.exec(); - db.close(); } void Bookmarks::remove(Translation* translation) { + if (!translation) + return ; checkAndCreateDb(); - QSqlDatabase db = getDbCnx(dbName); + QSqlDatabase db = getDbCnx(); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; return ; @@ -85,7 +84,6 @@ void Bookmarks::remove(Translation* translation) { cur.prepare("delete from bookmarks where key=?"); cur.addBindValue(translation->key()); cur.exec(); - db.close(); } @@ -93,7 +91,7 @@ void Bookmarks::remove(Translation* translation) { QList Bookmarks::list() { checkAndCreateDb(); QList res; - QSqlDatabase db = getDbCnx(dbName); + QSqlDatabase db = getDbCnx(); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; return res; @@ -103,7 +101,6 @@ QList Bookmarks::list() { while(cur.next()) res.append(new BookmarkTranslation(cur.value(0).toString(), this, dbName)); - db.close(); return res; } @@ -117,7 +114,7 @@ QList Bookmarks::searchWordList(QString word) { word = word.replace("?", "_"); QList tr; - QSqlDatabase db = getDbCnx(dbName); + QSqlDatabase db = getDbCnx(); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; return tr; @@ -132,7 +129,6 @@ QList Bookmarks::searchWordList(QString word) { res.insert(cur.value(0).toString()); foreach(QString str, res.toList()) tr.append(new BookmarkTranslation(str, this, dbName)); - db.close(); return tr; } @@ -140,7 +136,8 @@ QList Bookmarks::searchWordList(QString word) { QStringList Bookmarks::search(QString word, QString dbName) { QStringList result; - QSqlDatabase db = getDbCnx(dbName); + QSqlDatabase db = QSqlDatabase::database(); + db.setDatabaseName(dbName); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; return result; @@ -152,7 +149,6 @@ QStringList Bookmarks::search(QString word, QString dbName) { while(cur.next()) result << cur.value(0).toString(); - db.close(); return result; } diff --git a/src/mdictionary/backbone/Bookmarks.h b/src/mdictionary/backbone/Bookmarks.h index eb3585b..370f42f 100644 --- a/src/mdictionary/backbone/Bookmarks.h +++ b/src/mdictionary/backbone/Bookmarks.h @@ -97,11 +97,11 @@ public: bool inBookmarks(QString word); private: - bool checkAndCreateDb(); + bool checkAndCreateDb(QString dbName = ""); QString dbName; - QSqlDatabase getDbCnx(QString dbName); + QSqlDatabase getDbCnx(); QMap letters; QRegExp noLetter; QSqlDatabase mdb;