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);
}
}
-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;
}
void Bookmarks::clear() {
checkAndCreateDb();
- QSqlDatabase db = getDbCnx(dbName);
+ QSqlDatabase db = getDbCnx();
if(!db.isOpen() && !db.open()) {
qDebug() << "Database error: " << db.lastError().text() << endl;
return ;
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 ;
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 ;
cur.prepare("delete from bookmarks where key=?");
cur.addBindValue(translation->key());
cur.exec();
- db.close();
}
QList<Translation*> Bookmarks::list() {
checkAndCreateDb();
QList<Translation*> res;
- QSqlDatabase db = getDbCnx(dbName);
+ QSqlDatabase db = getDbCnx();
if(!db.isOpen() && !db.open()) {
qDebug() << "Database error: " << db.lastError().text() << endl;
return res;
while(cur.next())
res.append(new BookmarkTranslation(cur.value(0).toString(),
this, dbName));
- db.close();
return res;
}
word = word.replace("?", "_");
QList<Translation*> tr;
- QSqlDatabase db = getDbCnx(dbName);
+ QSqlDatabase db = getDbCnx();
if(!db.isOpen() && !db.open()) {
qDebug() << "Database error: " << db.lastError().text() << endl;
return tr;
res.insert(cur.value(0).toString());
foreach(QString str, res.toList())
tr.append(new BookmarkTranslation(str, this, dbName));
- db.close();
return tr;
}
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;
while(cur.next())
result << cur.value(0).toString();
- db.close();
return result;
}