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(){
26 bool Bookmarks::checkAndCreateDb(QString dbName) {
27 QSqlDatabase db = QSqlDatabase::database();
29 db.setDatabaseName(dbName);
31 db.setDatabaseName(this->dbName);
34 cur.exec("create table bookmarks(key text, normalized text, translation text)");
39 void Bookmarks::clear() {
41 QSqlDatabase db = getDbCnx();
42 if(!db.isOpen() && !db.open()) {
43 qDebug() << "Database error: " << db.lastError().text() << endl;
47 cur.exec("drop table bookmarks");
48 cur.exec("create table bookmarks(key text, normalized text,translation text)");
52 void Bookmarks::add(Translation* translation) {
56 QSqlDatabase db = getDbCnx();
57 if(!db.isOpen() && !db.open()) {
58 qDebug() << "Database error: " << db.lastError().text() << endl;
61 translation->setBookmark(true);
63 cur.prepare("insert into bookmarks values (?,?,?)");
64 cur.addBindValue(translation->key());
65 cur.addBindValue(removeAccents(translation->key()));
66 cur.addBindValue(translation->toXml());
71 void Bookmarks::add(QString key,QString removeAccentKey,QString value){
73 QSqlDatabase db = getDbCnx();
74 if(!db.isOpen() && !db.open()) {
75 qDebug() << "Database error: " << db.lastError().text() << endl;
79 cur.prepare("insert into bookmarks values (?,?,?)");
80 cur.addBindValue(key);
81 cur.addBindValue(removeAccentKey);
82 cur.addBindValue(value);
87 void Bookmarks::remove(Translation* translation) {
91 QSqlDatabase db = getDbCnx();
92 if(!db.isOpen() && !db.open()) {
93 qDebug() << "Database error: " << db.lastError().text() << endl;
97 cur.prepare("delete from bookmarks where key=?");
98 cur.addBindValue(translation->key());
103 QList<Translation*> Bookmarks::list() {
105 QList<Translation*> res;
106 QSqlDatabase db = getDbCnx();
107 if(!db.isOpen() && !db.open()) {
108 qDebug() << "Database error: " << db.lastError().text() << endl;
112 cur.exec("select distinct key from bookmarks");
114 res.append(new BookmarkTranslation(cur.value(0).toString(),
120 QList<Translation*> Bookmarks::searchWordList(QString word) {
122 if(word.indexOf("*")==-1 && word.indexOf("?")== -1)
124 word = word.replace("*", "%");
125 word = word.replace("?", "_");
127 QList<Translation*> tr;
128 QSqlDatabase db = getDbCnx();
129 if(!db.isOpen() && !db.open()) {
130 qDebug() << "Database error: " << db.lastError().text() << endl;
134 cur.prepare("select key from bookmarks where key like ? or normalized like ?");
135 cur.addBindValue(word);
136 cur.addBindValue(word);
140 res.insert(cur.value(0).toString());
141 foreach(QString str, res.toList())
142 tr.append(new BookmarkTranslation(str, this, dbName));
147 QStringList Bookmarks::search(QString word, QString dbName) {
149 QSqlDatabase db = QSqlDatabase::database();
150 db.setDatabaseName(dbName);
151 if(!db.isOpen() && !db.open()) {
152 qDebug() << "Database error: " << db.lastError().text() << endl;
156 cur.prepare("select translation from bookmarks where key=?");
157 cur.addBindValue(word);
160 result << cur.value(0).toString();
166 bool Bookmarks::inBookmarks(QString word) {
167 if(!mdb.isOpen() && !mdb.open()) {
168 qDebug() << "Database error: " << mdb.lastError().text() << endl;
172 cur.prepare("select translation from bookmarks where key like ? limit 1");
173 cur.addBindValue(word);