2 #include "BookmarkTranslations.h"
5 Bookmarks::Bookmarks() {
6 this->dbName = QDir::homePath() + "/.mdictionary/"
8 mdb = QSqlDatabase::addDatabase("QSQLITE");
9 mdb.setDatabaseName(dbName);
10 checkAndCreateDb(dbName);
16 Bookmarks::~Bookmarks() {
21 QSqlDatabase Bookmarks::getDbCnx(){
27 bool Bookmarks::checkAndCreateDb(QString dbName) {
28 QSqlDatabase db = QSqlDatabase::database();
30 db.setDatabaseName(dbName);
32 db.setDatabaseName(this->dbName);
35 cur.exec("create table bookmarks(key text, normalized text, translation text)");
41 void Bookmarks::clear() {
43 QSqlDatabase db = getDbCnx();
44 if(!db.isOpen() && !db.open()) {
45 qDebug() << "Database error: " << db.lastError().text() << endl;
49 cur.exec("drop table bookmarks");
50 cur.exec("create table bookmarks(key text, normalized text,translation text)");
55 void Bookmarks::add(Translation* translation) {
59 QSqlDatabase db = getDbCnx();
60 if(!db.isOpen() && !db.open()) {
61 qDebug() << "Database error: " << db.lastError().text() << endl;
64 translation->setBookmark(true);
66 cur.prepare("insert into bookmarks values (?,?,?)");
67 cur.addBindValue(translation->key());
68 cur.addBindValue(removeAccents(translation->key()));
69 cur.addBindValue(translation->toHtml());
74 void Bookmarks::remove(Translation* translation) {
78 QSqlDatabase db = getDbCnx();
79 if(!db.isOpen() && !db.open()) {
80 qDebug() << "Database error: " << db.lastError().text() << endl;
84 cur.prepare("delete from bookmarks where key=?");
85 cur.addBindValue(translation->key());
91 QList<Translation*> Bookmarks::list() {
93 QList<Translation*> res;
94 QSqlDatabase db = getDbCnx();
95 if(!db.isOpen() && !db.open()) {
96 qDebug() << "Database error: " << db.lastError().text() << endl;
100 cur.exec("select distinct key from bookmarks");
102 res.append(new BookmarkTranslation(cur.value(0).toString(),
109 QList<Translation*> Bookmarks::searchWordList(QString word) {
111 if(word.indexOf("*")==-1 && word.indexOf("?")== -1)
113 word = word.replace("*", "%");
114 word = word.replace("?", "_");
116 QList<Translation*> tr;
117 QSqlDatabase db = getDbCnx();
118 if(!db.isOpen() && !db.open()) {
119 qDebug() << "Database error: " << db.lastError().text() << endl;
123 cur.prepare("select key from bookmarks where key like ? or normalized like ?");
124 cur.addBindValue(word);
125 cur.addBindValue(word);
129 res.insert(cur.value(0).toString());
130 foreach(QString str, res.toList())
131 tr.append(new BookmarkTranslation(str, this, dbName));
137 QStringList Bookmarks::search(QString word, QString dbName) {
139 QSqlDatabase db = QSqlDatabase::database();
140 db.setDatabaseName(dbName);
141 if(!db.isOpen() && !db.open()) {
142 qDebug() << "Database error: " << db.lastError().text() << endl;
146 cur.prepare("select translation from bookmarks where key=?");
147 cur.addBindValue(word);
150 result << cur.value(0).toString();
158 bool Bookmarks::inBookmarks(QString word) {
159 if(!mdb.isOpen() && !mdb.open()) {
160 qDebug() << "Database error: " << mdb.lastError().text() << endl;
164 cur.prepare("select translation from bookmarks where key like ? limit 1");
165 cur.addBindValue(word);