2 #include "BookmarkTranslations.h"
5 Bookmarks::Bookmarks() {
6 this->dbName = QDir::homePath() + "/.mdictionary/"
11 mdb = QSqlDatabase::addDatabase("QSQLITE",
12 QString("%2").arg((int)QThread::currentThreadId()));
13 mdb.setDatabaseName(dbName);
17 Bookmarks::~Bookmarks() {
22 QSqlDatabase Bookmarks::getDbCnx(QString dbName) {
23 QSqlDatabase::removeDatabase(
24 QString("%2").arg((int)QThread::currentThreadId()));
25 QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE",
26 QString("%2").arg((int)QThread::currentThreadId()));
27 db.setDatabaseName(dbName);
33 bool Bookmarks::checkAndCreateDb() {
34 QSqlDatabase db = getDbCnx(dbName);
37 cur.exec("create table bookmarks(key text, normalized text, translation text)");
44 void Bookmarks::clear() {
46 QSqlDatabase db = getDbCnx(dbName);
47 if(!db.isOpen() && !db.open()) {
48 qDebug() << "Database error: " << db.lastError().text() << endl;
52 cur.exec("drop table bookmarks");
53 cur.exec("create table bookmarks(key text, normalized text,translation text)");
59 void Bookmarks::add(Translation* translation) {
61 QSqlDatabase db = getDbCnx(dbName);
62 if(!db.isOpen() && !db.open()) {
63 qDebug() << "Database error: " << db.lastError().text() << endl;
66 translation->setBookmark(true);
68 cur.prepare("insert into bookmarks values (?,?,?)");
69 cur.addBindValue(translation->key());
70 cur.addBindValue(removeAccents(translation->key()));
71 cur.addBindValue(translation->toXml());
77 void Bookmarks::remove(Translation* translation) {
79 QSqlDatabase db = getDbCnx(dbName);
80 if(!db.isOpen() && !db.open()) {
81 qDebug() << "Database error: " << db.lastError().text() << endl;
85 cur.prepare("delete from bookmarks where key=?");
86 cur.addBindValue(translation->key());
93 QList<Translation*> Bookmarks::list() {
95 QList<Translation*> res;
96 QSqlDatabase db = getDbCnx(dbName);
97 if(!db.isOpen() && !db.open()) {
98 qDebug() << "Database error: " << db.lastError().text() << endl;
102 cur.exec("select distinct key from bookmarks");
104 res.append(new BookmarkTranslation(cur.value(0).toString(),
112 QList<Translation*> Bookmarks::searchWordList(QString word) {
114 if(word.indexOf("*")==-1 && word.indexOf("?")== -1)
116 word = word.replace("*", "%");
117 word = word.replace("?", "_");
119 QList<Translation*> tr;
120 QSqlDatabase db = getDbCnx(dbName);
121 if(!db.isOpen() && !db.open()) {
122 qDebug() << "Database error: " << db.lastError().text() << endl;
126 cur.prepare("select key from bookmarks where key like ? or normalized like ?");
127 cur.addBindValue(word);
128 cur.addBindValue(word);
132 res.insert(cur.value(0).toString());
133 foreach(QString str, res.toList())
134 tr.append(new BookmarkTranslation(str, this, dbName));
141 QStringList Bookmarks::search(QString word, QString dbName) {
143 QSqlDatabase db = getDbCnx(dbName);
144 if(!db.isOpen() && !db.open()) {
145 qDebug() << "Database error: " << db.lastError().text() << endl;
149 cur.prepare("select translation from bookmarks where key=?");
150 cur.addBindValue(word);
153 result << cur.value(0).toString();
162 bool Bookmarks::inBookmarks(QString word) {
163 if(!mdb.isOpen() && !mdb.open()) {
164 qDebug() << "Database error: " << mdb.lastError().text() << endl;
168 cur.prepare("select translation from bookmarks where key like ? limit 1");
169 cur.addBindValue(word);