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->toXml());
73 void Bookmarks::add(QString key,QString removeAccentKey,QString value){
75 QSqlDatabase db = getDbCnx();
76 if(!db.isOpen() && !db.open()) {
77 qDebug() << "Database error: " << db.lastError().text() << endl;
81 cur.prepare("insert into bookmarks values (?,?,?)");
82 cur.addBindValue(key);
83 cur.addBindValue(removeAccentKey);
84 cur.addBindValue(value);
89 void Bookmarks::remove(Translation* translation) {
93 QSqlDatabase db = getDbCnx();
94 if(!db.isOpen() && !db.open()) {
95 qDebug() << "Database error: " << db.lastError().text() << endl;
99 cur.prepare("delete from bookmarks where key=?");
100 cur.addBindValue(translation->key());
106 QList<Translation*> Bookmarks::list() {
108 QList<Translation*> res;
109 QSqlDatabase db = getDbCnx();
110 if(!db.isOpen() && !db.open()) {
111 qDebug() << "Database error: " << db.lastError().text() << endl;
115 cur.exec("select distinct key from bookmarks");
117 res.append(new BookmarkTranslation(cur.value(0).toString(),
124 QList<Translation*> Bookmarks::searchWordList(QString word) {
126 if(word.indexOf("*")==-1 && word.indexOf("?")== -1)
128 word = word.replace("*", "%");
129 word = word.replace("?", "_");
131 QList<Translation*> tr;
132 QSqlDatabase db = getDbCnx();
133 if(!db.isOpen() && !db.open()) {
134 qDebug() << "Database error: " << db.lastError().text() << endl;
138 cur.prepare("select key from bookmarks where key like ? or normalized like ?");
139 cur.addBindValue(word);
140 cur.addBindValue(word);
144 res.insert(cur.value(0).toString());
145 foreach(QString str, res.toList())
146 tr.append(new BookmarkTranslation(str, this, dbName));
152 QStringList Bookmarks::search(QString word, QString dbName) {
154 QSqlDatabase db = QSqlDatabase::database();
155 db.setDatabaseName(dbName);
156 if(!db.isOpen() && !db.open()) {
157 qDebug() << "Database error: " << db.lastError().text() << endl;
161 cur.prepare("select translation from bookmarks where key=?");
162 cur.addBindValue(word);
165 result << cur.value(0).toString();
173 bool Bookmarks::inBookmarks(QString word) {
174 if(!mdb.isOpen() && !mdb.open()) {
175 qDebug() << "Database error: " << mdb.lastError().text() << endl;
179 cur.prepare("select translation from bookmarks where key like ? limit 1");
180 cur.addBindValue(word);