Modified google plugin dialog
[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 void initLanguages();
108
109     static QMap<QString, QString> languages;
110
111 public slots:
112     /*! performs search in dictionary
113       \param  word word to search in dictionary
114       \param limit limit on number of results
115
116       After finishing search it has to emit
117       \see CommonDictInterface:finalTranslation  finalTranslation
118     */
119     QList<Translation*> searchWordList(QString word, int limit=0);
120
121     //! stop current operation
122     void stop();
123
124     //! function called after the request from Google is returned
125     void done();
126
127     //! transforms Google format to String with translation
128     QString jsonParse(QString result);
129
130     //! sets information about dictionary
131     void getDictionaryInfo();
132
133     //! loads translations for each plugin only once
134     void retranslate();
135
136 private:
137     //! name of a dictionary
138     QString _name;
139     //! type of a dictionary
140     QString _type;
141     //! information about dictionary
142     QString _infoNote;
143     //! unique number of a dictionary assigned to it by backbone
144     uint _hash;
145     //! icon displayed during translations and when the dictionary is chosen
146     QIcon _icon;
147     Settings *_settings;
148     //! indicates if search is stopped
149     bool stopped;
150     bool _connectionAccept;
151     //! indicates if response from Google appeared
152     volatile bool wait;
153     QHttp *http;
154     GoogleDictDialog *_dictDialog;
155 };
156
157 #endif // GOOGLEPLUGIN_H
158
159