1 /*******************************************************************************
3 This file is part of mDictionary.
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.
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.
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/>.
18 Copyright 2010 Comarch S.A.
20 *******************************************************************************/
22 \file StarDictPlugin.h
23 \brief Implementation of stardict plugin's main class.
25 \author Jakub Jaszczynski
28 #ifndef STARDICTPLUGIN_H
29 #define STARDICTPLUGIN_H
37 //#include <QXmlStreamReader>
43 #include "../../include/CommonDictInterface.h"
44 #include "../../include/settings.h"
45 #include "StarDictDialog.h"
46 #include "TranslationStarDict.h"
48 class TranslationXdxf;
50 class StarDictPlugin : public CommonDictInterface
53 Q_INTERFACES(CommonDictInterface)
55 StarDictPlugin(QObject *parent=0);
59 //! \returns source language code iso 639-2
60 QString langFrom() const;
62 //! \returns destination language code iso 639-2
63 QString langTo() const;
65 //! \returns dictionary name (like "old English" or so)
68 //! \returns dictionary type (xdxf, google,starDict translate, etc)
71 //! returns information about dictionary in xml (name, authors, etc)
72 QString infoNote() const;
74 /*! \returns DictDialog object that creates dialogs
75 for adding a new dictionary and changing plugin settings
77 DictDialog* dictDialog();
79 //! \returns new, clean copy of plugin with settings set as in Settings*
80 CommonDictInterface* getNew(const Settings*) const;
82 //! \returns whether plugin can start searching
83 bool isAvailable() const;
85 //! \returns a description of a word given by a QString
86 QString search(QString key) {
87 return search(key, 0, 0);
91 \return a description of a word given by a QString
92 \param offset offset of translation to be cut out
93 \param len lenght of translation to be cut out
95 QString search(QString key, qint64 offset, qint32 len);
97 //! \returns current plugin settings
100 //! Sets new settings
101 bool setSettings(const Settings*);
103 //! \returns plugin icon
106 //! \returns plugin icon's resource path
110 plugin should delete any files (eg. cache) that have been created and are ready
119 performs search in a dictionary
120 \param word word to search for in a dictionary
121 \param limit limit on number of results
123 After finishing search it has to emit
124 \see CommonDictInterface:finalTranslation finalTranslation
126 QList<Translation*> searchWordList(QString word, int limit=0);
128 //! stops current operation
131 //! loads translations for each plugin only once
138 searches for a list of words similar to a word in file
139 \param word key compared with keys in a file
140 \param limit limits the number of translations in returned list,
142 \returns list of translations
144 QList<Translation*> searchWordListCache(QString word, int limit=0);
147 searches for a list of words similar to a word in a starDict file
148 \param word key compared with keys in a starDict file
149 \param limit limits the number of translations in returned list,
151 \returns list of translations
153 QList<Translation*> searchWordListFile(QString word, int limit=0);
156 searches for a translation of a word which is exactly like a key
159 QString searchFile(QString key);
161 //! scans dictionary file to get information about it
162 bool getDictionaryInfo();
165 Reads and process (converting to qstring) data from StarDict dictionary
167 \return converted translation
168 \param QByteArray raw data to process
169 \param mode StarDict parametr "sametypesequence"
171 QString format(QByteArray, QString mode,QString key);
174 Reads bytes bytes of data or reads until \0
175 \param it iterator to given data
176 \param end end of data
178 \return readed data chunk
180 QByteArray read(QByteArray::iterator it, QByteArray::iterator end,
184 Interpret data basis on mode (StarDict dict data type)
185 \param it iterator on given data set
186 \param end iterator pointing to the data end
187 \param mode stardict dict data type
188 \param last used to interpret sametypesequence field last letter (see
189 StarDict format description)
190 \return QSting containing interpreted data chunk
192 QString interpret(QByteArray::iterator it, QByteArray::iterator end,
193 QChar mode,QString key, bool last = false);
202 volatile bool stopped;
204 StarDictDialog* _dictDialog;
205 Settings* _ifoFileSettings;
207 friend class StarDictTests;
210 #endif // XDXFPLUGIN_H