Fixed bookmarks db issues
[mdictionary] / src / mdictionary / backbone / Bookmarks.h
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21
22 /*! \file Bookmarks.h
23 \brief Bookmarks functionality - marking words as favorite, managing marked
24     words, searching in marked words (with cached translations)
25
26
27 \author Bartosz Szatkowski <bulislaw@linux.com>
28 */
29
30 #ifndef BOOKMARKS_H
31 #define BOOKMARKS_H
32
33 #include <QtSql>
34 #include <QString>
35 #include <QVariant>
36 #include <QStringList>
37 #include <QList>
38 #include <QSqlQuery>
39 #include <QSqlDatabase>
40 #include <QSqlError>
41 #include <QDir>
42 #include <QDebug>
43 #include "../../include/settings.h"
44 #include "../../include/translation.h"
45 #include "../../include/AccentsNormalizer.h"
46 class BookmarkTranslation;
47
48
49 /*! Bookmarks are a way to store words that You think You will need to search
50   for often.
51
52   When You add a bookmark (by clicking on "star" in words list) You add it to
53   a special list with cached translations from all available dictionaries so
54   You can search for them quickly even when You delete corresponding dict.
55   */
56 class Bookmarks : public AccentsNormalizer {
57 public:
58     Bookmarks();
59     ~Bookmarks();
60
61     /*! Adds new word and translation to bookmarks
62       \param translation new translation to be saved and cached as a bookmark
63     */
64     void add(Translation* translation);
65
66     /*! Removes word and corresponding translation cache from bookmarks list
67         \param translation translation to be removed
68     */
69     void remove(Translation* translation);
70
71     /*! \return all bookmarks (word and translation as a translation object
72      as a list)
73      */
74     QList<Translation*> list();
75
76     /*! Searches in bookmarks for a given word (wildcards may apply '*' and '?')
77       \param word word to search for
78       \return list of matching Translation objects
79       */
80     QList<Translation*> searchWordList(QString word);
81
82     /*! Searches for final translation of a given word
83       \return word translation list in text format xml or html to be formatted
84         and displayed
85       \param word word to search for
86       */
87     QStringList search(QString word, QString dbname);
88
89
90     /*! Clears bookmarks database */
91     void clear();
92
93
94     /*! \return true if a given word is already in bookmarks
95       \param word word to check
96       */
97     bool inBookmarks(QString word);
98
99 private:
100     bool checkAndCreateDb(QString dbName = "");
101
102     
103     QString dbName;
104     QSqlDatabase getDbCnx();
105     QMap<QChar, QRegExp> letters;
106     QRegExp noLetter;
107     QSqlDatabase mdb;
108
109 };
110
111 #endif // BOOKMARKS_H