X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=trunk%2Fsrc%2Fbase%2Fbackbone%2FBookmarks.cpp;h=c39f8683036f2a03407d643eec1417bc09222ef9;hb=849177861d4fd39904e1121e55f5896a70b1d6f6;hp=dfee9c8b0f94833aa7b27f2d80f02d1de03f6c1c;hpb=c3803b8013456900e4e4c27fa23d9ae56f29f309;p=mdictionary diff --git a/trunk/src/base/backbone/Bookmarks.cpp b/trunk/src/base/backbone/Bookmarks.cpp index dfee9c8..c39f868 100644 --- a/trunk/src/base/backbone/Bookmarks.cpp +++ b/trunk/src/base/backbone/Bookmarks.cpp @@ -6,32 +6,43 @@ Bookmarks::Bookmarks() { this->dbName = QDir::homePath() + "/.mdictionary/" + "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); return db; } + + 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 ,translation text)"); + 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; @@ -39,13 +50,14 @@ void Bookmarks::clear() { } QSqlQuery cur(db); cur.exec("drop table bookmarks"); - cur.exec("create table bookmarks(key text ,translation text)"); + cur.exec("create table bookmarks(key text, normalized text,translation text)"); db.close(); } void Bookmarks::add(Translation* translation) { + checkAndCreateDb(); QSqlDatabase db = getDbCnx(dbName); if(!db.isOpen() && !db.open()) { qDebug() << "Database error: " << db.lastError().text() << endl; @@ -53,8 +65,9 @@ void Bookmarks::add(Translation* translation) { } translation->setBookmark(true); QSqlQuery cur(db); - cur.prepare("insert into bookmarks values (?,?)"); + cur.prepare("insert into bookmarks values (?,?,?)"); cur.addBindValue(translation->key()); + cur.addBindValue(removeAccents(translation->key())); cur.addBindValue(translation->toHtml()); cur.exec(); db.close(); @@ -62,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; @@ -77,6 +91,7 @@ void Bookmarks::remove(Translation* translation) { QList Bookmarks::list() { + checkAndCreateDb(); QList res; QSqlDatabase db = getDbCnx(dbName); if(!db.isOpen() && !db.open()) { @@ -86,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; } @@ -94,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("?", "_"); - word = removeAccents(word); QList tr; QSqlDatabase db = getDbCnx(dbName); @@ -108,7 +123,8 @@ QList Bookmarks::searchWordList(QString word) { return tr; } QSqlQuery cur(db); - cur.prepare("select key from bookmarks where key like ?"); + cur.prepare("select key from bookmarks where key like ? or normalized like ?"); + cur.addBindValue(word); cur.addBindValue(word); cur.exec(); QSet res; @@ -123,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()) { @@ -142,36 +159,17 @@ QStringList Bookmarks::search(QString word, QString dbName) { -QString Bookmarks::removeAccents(QString string) { - string = string.replace(QString::fromUtf8("ł"), "l", Qt::CaseInsensitive); - QString normalized = string.normalized(QString::NormalizationForm_D); - normalized = normalized; - for(int i=0; i