change html to xml in funcions names
[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 bookmark (by clicking on "star" in words list) You add it to
53   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 bookmark 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 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 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 to check
96       */
97     bool inBookmarks(QString word);
98
99 private:
100     bool checkAndCreateDb();
101
102     
103     QString dbName;
104     QSqlDatabase getDbCnx(QString dbName);
105     QMap<QChar, QRegExp> letters;
106     QRegExp noLetter;
107     QSqlDatabase mdb;
108
109 };
110
111 #endif // BOOKMARKS_H