removeAccents refactorized out to the AccentsNormalizer class
[mdictionary] / trunk / src / includes / CommonDictInterface.h
index 6a3e165..f3fde62 100644 (file)
 
 *******************************************************************************/
 
-// 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(QObject *parent = 0) = 0;
-    virtual QString langFrom() = 0; 
-    virtual QString langTo() = 0;
-    virtual QString name() = 0;
-    virtual QString type() = 0;        
-    virtual QString infoNote() = 0; 
-    virtual QDialog* loadDialog() = 0;  
-    virtual QDialog* settingsDialog() = 0;
-    virtual CommonDictInterface* getNew(Settings*) = 0;
-    virtual bool isAvailable();
+    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;
+
+    //! 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