2 #include "BookmarkTranslations.h"
5 Bookmarks::Bookmarks() {
6 this->dbName = QDir::homePath() + "/.mdictionary/"
11 mdb = QSqlDatabase::addDatabase("QSQLITE",
12 QString("%2").arg((int)QThread::currentThreadId()));
13 mdb.setDatabaseName(dbName);
17 Bookmarks::~Bookmarks() {
22 QSqlDatabase Bookmarks::getDbCnx(QString dbName) {
23 QSqlDatabase::removeDatabase(
24 QString("%2").arg((int)QThread::currentThreadId()));
25 QSqlDatabase db =QSqlDatabase::addDatabase("QSQLITE",
26 QString("%2").arg((int)QThread::currentThreadId()));
27 db.setDatabaseName(dbName);
33 bool Bookmarks::checkAndCreateDb() {
34 QSqlDatabase db = getDbCnx(dbName);
37 cur.exec("create table bookmarks(key text, normalized text, translation text)");
44 void Bookmarks::clear() {
46 qDebug()<<"dename1"<<dbName;
47 QSqlDatabase db = getDbCnx(dbName);
48 if(!db.isOpen() && !db.open()) {
49 qDebug() << "Database error1: " << db.lastError().text() << endl;
53 cur.exec("drop table bookmarks");
54 cur.exec("create table bookmarks(key text, normalized text,translation text)");
60 void Bookmarks::add(Translation* translation) {
62 qDebug()<<"dename2"<<dbName;
63 QSqlDatabase db = getDbCnx(dbName);
64 if(!db.isOpen() && !db.open()) {
65 qDebug() << "Database error2: " << db.lastError().text() << endl;
68 translation->setBookmark(true);
70 cur.prepare("insert into bookmarks values (?,?,?)");
71 cur.addBindValue(translation->key());
72 cur.addBindValue(removeAccents(translation->key()));
73 cur.addBindValue(translation->toHtml());
79 void Bookmarks::remove(Translation* translation) {
80 qDebug()<<"dename3"<<dbName;
82 QSqlDatabase db = getDbCnx(dbName);
83 if(!db.isOpen() && !db.open()) {
84 qDebug() << "Database error3: " << db.lastError().text() << endl;
88 cur.prepare("delete from bookmarks where key=?");
89 cur.addBindValue(translation->key());
96 QList<Translation*> Bookmarks::list() {
97 qDebug()<<"dename4"<<dbName;
99 QList<Translation*> res;
100 QSqlDatabase db = getDbCnx(dbName);
101 if(!db.isOpen() && !db.open()) {
102 qDebug() << "Database error4: " << db.lastError().text() << endl;
106 cur.exec("select distinct key from bookmarks");
108 res.append(new BookmarkTranslation(cur.value(0).toString(),
116 QList<Translation*> Bookmarks::searchWordList(QString word) {
117 qDebug()<<"dename5"<<dbName;
119 if(word.indexOf("*")==-1 && word.indexOf("?")== -1)
121 word = word.replace("*", "%");
122 word = word.replace("?", "_");
124 QList<Translation*> tr;
125 QSqlDatabase db = getDbCnx(dbName);
126 if(!db.isOpen() && !db.open()) {
127 qDebug() << "Database error5: " << db.lastError().text() << endl;
131 cur.prepare("select key from bookmarks where key like ? or normalized like ?");
132 cur.addBindValue(word);
133 cur.addBindValue(word);
137 res.insert(cur.value(0).toString());
138 foreach(QString str, res.toList())
139 tr.append(new BookmarkTranslation(str, this, dbName));
146 QStringList Bookmarks::search(QString word, QString dbName) {
148 qDebug()<<"dename6"<<dbName;
150 QSqlDatabase db = getDbCnx(dbName);
151 if(!db.isOpen() && !db.open()) {
152 qDebug() << "Database error6: " << db.lastError().text() << endl;
156 cur.prepare("select translation from bookmarks where key=?");
157 cur.addBindValue(word);
160 result << cur.value(0).toString();
169 bool Bookmarks::inBookmarks(QString word) {
170 qDebug()<<"dename7"<<dbName;
171 if(!mdb.isOpen() && !mdb.open()) {
172 qDebug() << "Database error7: " << mdb.lastError().text() << endl;
176 cur.prepare("select translation from bookmarks where key like ? limit 1");
177 cur.addBindValue(word);