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 CommonDictInterface.h
23 \brief Common interface for all dicts and plugins \see CommonDictInterface
25 \author Bartosz Szatkowski <bulislaw@linux.com>
28 #ifndef COMMONDICTINTERFACE_H
29 #define COMMONDICTINTERFACE_H
35 #include "translation.h"
38 #include "AccentsNormalizer.h"
43 //! Interface for dict engines plugins
44 class CommonDictInterface : public QObject, public AccentsNormalizer {
47 CommonDictInterface(QObject *parent = 0):QObject(parent) {}
48 virtual ~CommonDictInterface() {}
50 //! returns source language code iso 639-2
51 virtual QString langFrom() const = 0;
53 //! returns destination language code iso 639-2
54 virtual QString langTo() const = 0;
56 //! returns dictionary name (like "old English" or so)
57 virtual QString name() const = 0;
59 //! returns dictionary type (xdxf, google translate, etc)
60 virtual QString type() const = 0;
62 //! returns information about dictionary in html (name, authors, etc)
63 virtual QString infoNote() const = 0;
65 /*! returns DictDialog object that creates dialogs
66 for adding new dictionary and changing plugin settings*/
67 virtual DictDialog* dictDialog() = 0;
69 //! returns new, clean copy of plugin with settings set as in Settings*
70 virtual CommonDictInterface* getNew(const Settings*) const = 0;
72 //! returns whether plugin can start searching
73 virtual bool isAvailable() const = 0;
75 //! returns the actual translation of a word given in key
76 virtual QString search(QString key) = 0;
78 //! \returns unique value (unique for every dictionary, not plugin)
79 virtual uint hash() const {
83 //! sets unique value (unique for every dictionary, not plugin)
84 virtual void setHash(uint h) {
88 //! returns current plugin settings
89 virtual Settings* settings() = 0;
91 //! returns plugin icon
92 virtual QIcon* icon() = 0;
94 //! returns empty translation object (to be fetched later) for given key
95 virtual Translation* getTranslationFor(QString ) {return 0;}
97 /*! plugin should delete any files (eg. cache) that have been created and are ready
100 virtual void clean() {}
104 /*! performs search in a dictionary
105 \param word word to search for in a dictionary
106 \param limit limit on number of results,
107 if limit=0 all matching words are returned
109 After finishing search it has to emit
110 \see CommonDictInterface:finalTranslation finalTranslation
112 virtual QList<Translation*> searchWordList(QString word, int limit=0) = 0;
114 //! stops current operation
115 virtual void stop() = 0;
117 //! loads translations for each plugin only once
118 virtual void retranslate() {}
121 //! emitted after change in a dictionary settings
122 void settingsChanged();
124 /*! emitted to backbone when it's needed to inform user about something
125 \param Backbone::NotifyType GUI may decide to show different types in
127 \param QString text of the notification
129 void notify(Notify::NotifyType, QString);
133 //! removes accents from letters in a word searched for (e.g. ą -> a, ł -> l)
134 QString removeAccents(QString string) {
135 if(settings()->value("strip_accents") == "true")
136 return AccentsNormalizer::removeAccents(string);
144 Q_DECLARE_INTERFACE(CommonDictInterface, "CommonDictInterface/0.1");