refaktoring
[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 "../../include/CommonDictInterface.h"
38 #include "../../include/settings.h"
39 #include "../../include/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     //! sets the language to which the translation is done
69     void setLangTo(QString langTo);
70
71     //! sets the language from which the translation is done
72     void setLangFrom(QString langFrom);
73
74     /*! returns DictDialog object that creates dialogs
75         for adding new dictionaries and changing plugin things
76       */
77     DictDialog* dictDialog();
78
79     //! returns new, clean copy of plugin with settings set as in Settings*
80     CommonDictInterface* getNew(const Settings*) const;
81
82     //! returns whether plugin can start searching
83     bool isAvailable() const;
84
85     //! sets if connection with Internet is possible
86     void setConnectionAccept(QString connectionAcepted);
87
88     //! returns the value of "connection_accepted" from settings
89     bool isConnectionAccept() const;
90
91     //! returns a description of a word given by a QString
92     QString search(QString key);
93
94     //! returns current plugin settings
95     Settings* settings();
96
97     //! Sets new settings
98     void setSettings(const Settings*);
99
100     //! returns plugin icon
101     QIcon* icon();
102
103     //! returns empty translation object (to be fetched later) for given key
104     Translation* getTranslationFor(QString key);
105
106     //! initializes the list of available languages in Google translator
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     //! function called after the request from Google is returned
123     void done();
124
125     //! transforms Google format to String with translation
126     QString jsonParse(QString result);
127
128     //! sets information about dictionary
129     void getDictionaryInfo();
130
131     //! loads translations for each plugin only once
132     void retranslate();
133
134 private:
135     //! maps languages full names to two-letter acronyms
136     QMap<QString, QString> languages;
137
138     //! name of a dictionary
139     QString _name;
140     //! type of a dictionary
141     QString _type;
142     //! information about dictionary
143     QString _infoNote;
144     //! unique number of a dictionary assigned to it by backbone
145     uint _hash;
146     //! icon displayed during translations and when the dictionary is chosen
147     QIcon _icon;
148     Settings *_settings;
149     //! indicates if search is stopped
150     bool stopped;
151     bool _connectionAccept;
152     //! indicates if response from Google appeared
153     volatile bool wait;
154     QHttp *http;
155     GoogleDictDialog *_dictDialog;
156 };
157
158 #endif // GOOGLEPLUGIN_H
159
160