*******************************************************************************/
-// Created by Bartosz Szatkowski
+/*! /file CommonDictInterface.h
+\brief Common interface for all dicts and plugins \see CommonDictInterface
-class CommonDictInterface : public QObject {
+\author Bartosz Szatkowski <bulislaw@linux.com>
+*/
+
+#ifndef COMMONDICTINTERFACE_H
+#define COMMONDICTINTERFACE_H
+
+#include <QString>
+#include <QDialog>
+#include <QObject>
+#include <QList>
+#include "translation.h"
+#include "Notify.h"
+#include "settings.h"
+#include "AccentsNormalizer.h"
+
+class DictDialog;
+
+
+//! Interface for dict engines plugins
+class CommonDictInterface : public QObject, public AccentsNormalizer {
+ Q_OBJECT
public:
- CommonDictInterface(const QObject *parent = 0) = 0;
- virtual QString langFrom() const = 0;
+ CommonDictInterface(QObject *parent = 0):QObject(parent) {}
+
+ virtual ~CommonDictInterface() {}
+
+ //! returns source language code iso 639-2
+ virtual QString langFrom() const = 0;
+
+ //! returns destination language code iso 639-2
virtual QString langTo() const = 0;
+
+ //! returns dictionary name (like "old english" or so
virtual QString name() const = 0;
- virtual QString type() const = 0;
- virtual QString infoNote() const = 0;
- virtual QDialog* loadDialog() = 0;
- virtual QDialog* settingsDialog() = 0;
+
+ //! returns dictionary type (xdxf, google translate, etc)
+ virtual QString type() const = 0;
+
+ //! returns information about dictionary in html (name, authors, etc)
+ virtual QString infoNote() const = 0;
+
+ /*! returns DictDialog object that creates dialogs
+ for adding new dictionary and change plugin settings*/
+ virtual DictDialog* dictDialog() = 0;
+
+
+ //! returns new, clean copy of plugin with setting set as in Settings*
virtual CommonDictInterface* getNew(const Settings*) const = 0;
+
+ //! returns whether plugin can start searching
virtual bool isAvailable() const = 0;
+ //! returns the actual translation of a word given in key
+ virtual QString search(QString key) = 0;
+
+ //! \returns unique value (unique for every dictionary not plugin
+ virtual uint hash() const = 0;
+
+ //! sets unique value (unique for every dictionary not plugin)
+ virtual void setHash(uint) = 0;
+
+ //! returns current plugin settings
+ virtual Settings* settings() = 0;
+
+ //! returns plugin icon
+ virtual QIcon* icon() = 0;
+
public Q_SLOTS:
- virtual void search(QString, int) = 0;
- virtual void stop() = 0;
+ /*! performs search in dictionary
+ \param word word to search in dictionary
+ \param limit limit on number of results,
+ if limit=0 all matching words are returned
+
+ After finishing search it have to emit
+ \see CommonDictInterface:finalTranslation finalTranslation
+ */
+ virtual QList<Translation*> searchWordList(QString word, int limit=0) = 0;
+
+ //! stops current operation
+ virtual void stop() = 0;
Q_SIGNALS:
- void finalTranslation(QList<Translation*>)
- void load(CommonDictInterface*)
-}
+
+ //! emited after dictionary is ready to use afer being loaded
+ void loaded(CommonDictInterface*);
+
+ //! emited after change dictionary settings
+ void settingsChanged();
+
+ /*! emmited to backbone when needed to inform user about something
+ \param Backbone::NotifyType gui my dacide to show different typet in
+ different ways
+ \param QString text of the notification
+ */
+ void notify(Notify::NotifyType, QString);
+
+protected:
+ QString removeAccents(QString string) {
+ if(settings()->value("strip_accents") == "true")
+ return AccentsNormalizer::removeAccents(string);
+ return string;
+ }
+
+ void initAccents() { AccentsNormalizer::initAccents(); }
+
+
+
+};
+
+Q_DECLARE_INTERFACE(CommonDictInterface, "CommonDictInterface/0.1");
+
+#endif