2 #include "BookmarkTranslations.h"
5 Bookmarks::Bookmarks() {
6 this->dbName = QDir::homePath() + "/.mdictionary/"
13 QSqlDatabase Bookmarks::getDbCnx(QString dbName) {
14 QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE",
15 QString("%2").arg((int)QThread::currentThreadId()));
16 db.setDatabaseName(dbName);
22 bool Bookmarks::checkAndCreateDb() {
23 QSqlDatabase db = getDbCnx(dbName);
24 if(!db.isOpen() && !db.open()) {
25 qDebug() << "Database error: " << db.lastError().text() << endl;
29 cur.exec("create table bookmarks(key text, normalized text, translation text)");
37 void Bookmarks::clear() {
38 QSqlDatabase db = getDbCnx(dbName);
39 if(!db.isOpen() && !db.open()) {
40 qDebug() << "Database error: " << db.lastError().text() << endl;
44 cur.exec("drop table bookmarks");
45 cur.exec("create table bookmarks(key text, normalized text,translation text)");
51 void Bookmarks::add(Translation* translation) {
52 QSqlDatabase db = getDbCnx(dbName);
53 if(!db.isOpen() && !db.open()) {
54 qDebug() << "Database error: " << db.lastError().text() << endl;
57 translation->setBookmark(true);
59 cur.prepare("insert into bookmarks values (?,?,?)");
60 cur.addBindValue(translation->key());
61 cur.addBindValue(removeAccents(translation->key()));
62 cur.addBindValue(translation->toHtml());
68 void Bookmarks::remove(Translation* translation) {
69 QSqlDatabase db = getDbCnx(dbName);
70 if(!db.isOpen() && !db.open()) {
71 qDebug() << "Database error: " << db.lastError().text() << endl;
75 cur.prepare("delete from bookmarks where key=?");
76 cur.addBindValue(translation->key());
83 QList<Translation*> Bookmarks::list() {
84 QList<Translation*> res;
85 QSqlDatabase db = getDbCnx(dbName);
86 if(!db.isOpen() && !db.open()) {
87 qDebug() << "Database error: " << db.lastError().text() << endl;
91 cur.exec("select distinct key from bookmarks");
93 res.append(new BookmarkTranslation(cur.value(0).toString(), this, dbName));
100 QList<Translation*> Bookmarks::searchWordList(QString word) {
102 if(word.indexOf("*")==-1 && word.indexOf("?")== -1)
104 word = word.replace("*", "%");
105 word = word.replace("?", "_");
106 word = removeAccents(word);
108 QList<Translation*> tr;
109 QSqlDatabase db = getDbCnx(dbName);
110 if(!db.isOpen() && !db.open()) {
111 qDebug() << "Database error: " << db.lastError().text() << endl;
115 cur.prepare("select key from bookmarks where key like ? or normalized like ?");
116 cur.addBindValue(word);
117 cur.addBindValue(word);
121 res.insert(cur.value(0).toString());
122 foreach(QString str, res.toList())
123 tr.append(new BookmarkTranslation(str, this, dbName));
130 QStringList Bookmarks::search(QString word, QString dbName) {
132 QSqlDatabase db = getDbCnx(dbName);
133 if(!db.isOpen() && !db.open()) {
134 qDebug() << "Database error: " << db.lastError().text() << endl;
138 cur.prepare("select translation from bookmarks where key=?");
139 cur.addBindValue(word);
142 result << cur.value(0).toString();
151 bool Bookmarks::inBookmarks(QString word) {
152 QSqlDatabase db = getDbCnx(dbName);
153 if(!db.isOpen() && !db.open()) {
154 qDebug() << "Database error: " << db.lastError().text() << endl;
158 cur.prepare("select translation from bookmarks where key like ? limit 1");
159 cur.addBindValue(word);