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);
26 cur.exec("create table bookmarks(key text, normalized text, translation text)");
33 void Bookmarks::clear() {
35 QSqlDatabase db = getDbCnx(dbName);
36 if(!db.isOpen() && !db.open()) {
37 qDebug() << "Database error: " << db.lastError().text() << endl;
41 cur.exec("drop table bookmarks");
42 cur.exec("create table bookmarks(key text, normalized text,translation text)");
48 void Bookmarks::add(Translation* translation) {
50 QSqlDatabase db = getDbCnx(dbName);
51 if(!db.isOpen() && !db.open()) {
52 qDebug() << "Database error: " << db.lastError().text() << endl;
55 translation->setBookmark(true);
57 cur.prepare("insert into bookmarks values (?,?,?)");
58 cur.addBindValue(translation->key());
59 cur.addBindValue(removeAccents(translation->key()));
60 cur.addBindValue(translation->toHtml());
66 void Bookmarks::remove(Translation* translation) {
68 QSqlDatabase db = getDbCnx(dbName);
69 if(!db.isOpen() && !db.open()) {
70 qDebug() << "Database error: " << db.lastError().text() << endl;
74 cur.prepare("delete from bookmarks where key=?");
75 cur.addBindValue(translation->key());
82 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("?", "_");
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) {
133 QSqlDatabase db = getDbCnx(dbName);
134 if(!db.isOpen() && !db.open()) {
135 qDebug() << "Database error: " << db.lastError().text() << endl;
139 cur.prepare("select translation from bookmarks where key=?");
140 cur.addBindValue(word);
143 result << cur.value(0).toString();
152 bool Bookmarks::inBookmarks(QString word) {
154 QSqlDatabase db = getDbCnx(dbName);
155 if(!db.isOpen() && !db.open()) {
156 qDebug() << "Database error: " << db.lastError().text() << endl;
160 cur.prepare("select translation from bookmarks where key like ? limit 1");
161 cur.addBindValue(word);