Changed repo structure
[mdictionary] / src / plugins / google / GooglePlugin.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 GooglePlugin.h
23
24     \author Jakub Jaszczynski <j.j.jaszczynski@gmail.com>
25 */
26
27 #ifndef GOOGLEPLUGIN_H
28 #define GOOGLEPLUGIN_H
29
30
31 #include <QObject>
32 #include <QDialog>
33 #include <QtPlugin>
34 #include <QIcon>
35 #include <QtNetwork>
36
37 #include "../../common/CommonDictInterface.h"
38 #include "../../common/settings.h"
39 #include "../../common/DictDialog.h"
40 #include "TranslationGoogle.h"
41 #include "GoogleDictDialog.h"
42
43 class GoogleDictDialog;
44
45 class GooglePlugin : public CommonDictInterface
46 {
47     Q_OBJECT
48     Q_INTERFACES(CommonDictInterface)
49 public:
50     GooglePlugin(QObject *parent=0);
51     ~GooglePlugin();
52
53     //! returns source language code iso 639-2
54     QString langFrom() const;
55
56     //! returns destination language code iso 639-2
57     QString langTo() const;
58
59     //! returns dictionary name (like "old English" or so)
60     QString name() const;
61
62     //! returns dictionary type (xdxf, google translate, etc)
63     QString type() const;
64
65     //! returns information about dictionary in html (name, authors, etc)
66     QString infoNote() const;
67
68     void setLangTo(QString langTo);
69
70     void setLangFrom(QString langFrom);
71
72     /*! returns DictDialog object that creates dialogs
73         for adding new dictionaries and changing plugin things
74       */
75     DictDialog* dictDialog();
76
77     //! returns new, clean copy of plugin with setting set as in Settings*
78     CommonDictInterface* getNew(const Settings*) const;
79
80     //! returns whether plugin can start searching
81     bool isAvailable() const;
82
83     void setConnectionAccept(QString connectionAcepted);
84
85     bool isConnectionAccept() const;
86
87     //! returns a description of a word given by a QString
88     QString search(QString key);
89
90     //! returns a unique hash for a dictionary
91     uint hash() const;
92
93     //! sets unique value (unique for every dictionary not plugin)
94     void setHash(uint);
95
96     //! returns current plugin settings
97     Settings* settings();
98
99     //! Sets new settings
100     void setSettings(const Settings*);
101
102     //! returns plugin icon
103     QIcon* icon();
104
105     Translation* getTranslationFor(QString key);
106
107     static QMap<QString, QString> initLanguages();
108
109 public slots:
110     /*! performs search in dictionary
111       \param  word word to search in dictionary
112       \param limit limit on number of results
113
114       After finishing search it has to emit
115       \see CommonDictInterface:finalTranslation  finalTranslation
116     */
117     QList<Translation*> searchWordList(QString word, int limit=0);
118
119     //! stop current operation
120     void stop();
121
122     void done();
123
124     QString jsonParse(QString result);
125     void getDictionaryInfo();
126
127 private:
128     QMap<QString, QString> languages;
129     QString _name;
130     //! type of a dictionary
131     QString _type;
132     //! information about dictionary
133     QString _infoNote;
134     uint _hash;
135     QIcon _icon;
136     Settings *_settings;
137     bool stopped;
138     bool _connectionAccept;
139     volatile bool wait;
140     QHttp *http;
141     GoogleDictDialog *_dictDialog;
142 };
143
144 #endif // GOOGLEPLUGIN_H
145
146