Merge branch 'master' into gui
authorMateusz Półrola <mateusz.polrola@comarch.pl>
Thu, 5 Aug 2010 13:27:29 +0000 (15:27 +0200)
committerMateusz Półrola <mateusz.polrola@comarch.pl>
Thu, 5 Aug 2010 13:27:29 +0000 (15:27 +0200)
Conflicts:
trunk/src/plugins/xdxf/src/XdxfPlugin.pro

1  2 
trunk/src/plugins/xdxf/src/XdxfPlugin.pro
trunk/src/plugins/xdxf/src/xdxfplugin.cpp
trunk/src/plugins/xdxf/src/xdxfplugin.h

index 0000000,7e811e3..c82bc62
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,23 +1,28 @@@
+ #-------------------------------------------------
+ #
+ # Project created by QtCreator 2010-08-03T09:33:52
+ #
+ #-------------------------------------------------
+ QT       += core xml gui
+ TARGET = XdxfPlugin
+ TEMPLATE = lib
+ SOURCES +=  \
+     xdxfplugin.cpp \
 -    TranslationXdxf.cpp
++    TranslationXdxf.cpp \
++    XdxfLoadDialog.cpp \
++    XdxfDictDialog.cpp
+ HEADERS += \
+     xdxfplugin.h \
++    TranslationXdxf.h \
++    XdxfLoadDialog.h \
++    ../../../includes/DictDialog.h \
++    XdxfDictDialog.h
+     ../../../includes/translation.h \
+     ../../../includes/settings.h \
+     ../../../includes/CommonDictInterface.h \
 -    TranslationXdxf.h
index 0000000,466b7a6..b06bca5
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,142 +1,146 @@@
+ #include "xdxfplugin.h"
+ #include <QDebug>
+ #include <QFile>
+ #include <QXmlStreamReader>
+ #include <QtPlugin>
+ #include "TranslationXdxf.h"
++#include "../../../../includes/settings.h"
+ XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
+                     _langFrom(tr("")), _langTo(tr("")),_name(tr("")),
+                     _type(tr("xdxf")), _infoNote(tr("")) {
+     path="dict.xdxf";
+     stopped = false;
++    _settings = new Settings();
++    _dictDialog = new XdxfDictDialog(this);
+ }
+ QString XdxfPlugin::langFrom() const {
+     return  _langFrom;
+ }
+ QString XdxfPlugin::langTo() const {
+     return  _langTo;
+ }
+ QString XdxfPlugin::name() const {
+     return  _name;
+ }
+ QString XdxfPlugin::type() const {
+     return _type;
+ }
+ QString XdxfPlugin::infoNote() const {
+     return  _infoNote;
+ }
+ QList<Translation*> XdxfPlugin::searchWordList(QString word, int limit) {
+     stopped = false;
+     QRegExp regWord(word);
+     regWord.setCaseSensitivity(Qt::CaseInsensitive);
+     regWord.setPatternSyntax(QRegExp::Wildcard);
+     QList<Translation*> translations;
+     QFile dictionaryFile(path);
+     if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
+         qDebug()<<"Error: could not open file";
+         return translations;
+     }
+     QXmlStreamReader dictionaryReader(&dictionaryFile);
+     dictionaryReader.readNextStartElement();
+     if(dictionaryReader.name()=="xdxf") {
+       if(dictionaryReader.attributes().hasAttribute("lang_from"))
+         _langFrom = dictionaryReader.attributes().value("lang_from").toString();
+       if(dictionaryReader.attributes().hasAttribute("lang_to"))
+         _langTo = dictionaryReader.attributes().value("lang_to").toString();
+     }
+     dictionaryReader.readNextStartElement();
+     if(dictionaryReader.name()=="full_name")
+         _name=dictionaryReader.readElementText();
+     dictionaryReader.readNextStartElement();
+     if(dictionaryReader.name()=="description")
+         _infoNote=dictionaryReader.readElementText();
+     QString a;
+     int i=0;
+     while(!dictionaryReader.atEnd() && !stopped){
+         dictionaryReader.readNextStartElement();
+         if(dictionaryReader.name()=="ar"){
+             while(dictionaryReader.name()!="k" && !dictionaryReader.atEnd())
+                 dictionaryReader.readNextStartElement();
+           a = dictionaryReader.readElementText();
+           if(regWord.exactMatch(a) && i<limit) {
+                 translations.append(new TranslationXdxf(a,_infoNote,this));
+                 i++;
+                 if(i>=limit)
+                     break;
+             }
+         }
+     }
+     stopped=false;
+     dictionaryFile.close();
+     return translations;
+ }
+ QString XdxfPlugin::search(QString key) {
+     QFile dictionaryFile(path);
+     if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
+         qDebug()<<"Error: could not open file";
+         return "";
+     }
+     QXmlStreamReader dictionaryReader(&dictionaryFile);
+     QString a;
+     bool match =false;
+     while (!dictionaryReader.atEnd()) {
+         dictionaryReader.readNext();
+         if(dictionaryReader.tokenType() == QXmlStreamReader::StartElement) {
+             if(dictionaryReader.name()=="k") {
+                 a = dictionaryReader.readElementText();
+                 if(a==key)
+                     match = true;
+             }
+         }
+         else if(dictionaryReader.tokenType() == QXmlStreamReader::Characters)  {
+             if(match) {
+               QString temp(dictionaryReader.text().toString().replace("\n",""));
+               dictionaryFile.close();
+               return temp;
+             }
+         }
+     }
+     return "";
+ }
+ void XdxfPlugin::stop() {
+     stopped=true;
+ }
 -QDialog* XdxfPlugin::loadDialog() {
 -     path="dict.xdxf";
++DictDialog* XdxfPlugin::dictDialog() {
++     return _dictDialog;
+ }
 -QDialog* XdxfPlugin::settingsDialog() {
 -    path="dict.xdxf";
 -}
+ CommonDictInterface* XdxfPlugin::getNew(const Settings*) const {
+   return new XdxfPlugin();
+ }
+ bool XdxfPlugin::isAvailable() const {
+     return true;
+ }
+ void XdxfPlugin::setHash(uint _hash)
+ {
+     this->_hash=_hash;
+ }
+ uint XdxfPlugin::hash() const
+ {
+    return _hash;
+ }
++Settings* XdxfPlugin::settings() {
++    return _settings;
++}
++
+ Q_EXPORT_PLUGIN2(xdxf, XdxfPlugin)
index 0000000,88f045a..f1f1e1a
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,85 +1,90 @@@
+ #ifndef XDXFPLUGIN_H
+ #define XDXFPLUGIN_H
+ #include "../../../includes/CommonDictInterface.h"
+ #include <QObject>
+ #include <QDialog>
+ #include <QRegExp>
+ #include <QTime>
++#include "XdxfDictDialog.h"
+ class TranslationXdxf;
+ class XdxfPlugin : public CommonDictInterface
+ {
+     Q_OBJECT
+     Q_INTERFACES(CommonDictInterface)
+ public:
+     XdxfPlugin(QObject *parent=0);
+     //! returns source language code iso 639-2
+     QString langFrom() const;
+     //! returns destination language code iso 639-2
+     QString langTo() const;
+     //! returns dictionary name (like "old english" or so)
+     QString name() const;
+     //! returns dictionary type (xdxf, google translate, etc)
+     QString type() const;
+     //! returns information about dictionary in html (name, authors, etc)
+     QString infoNote() const;
 -    //! returns dialog that creates new dictionary and fills necessary options
 -    //! QDialog should return Setting* object after being shown
 -    QDialog* loadDialog();
++    /*! returns DictDialog object that creates dialogs
++        for adding new dictionary and change plugin settings
++      */
++    DictDialog* dictDialog();
 -    //! returns dialog with dictionary settings
 -    QDialog* settingsDialog();
+     //! returns new, clean copy of plugin with setting set as in Settings*
+     CommonDictInterface* getNew(const Settings*) const;
+     //! returns whether plugin can start searching
+     bool isAvailable() const;
+     //! returns a description of a word given by a QString
+     QString search(QString key);
+     //! returns a unique hash for a dictionary
+     uint hash() const;
+     //! set unique value (unique for every dictionary not plugin)
+     void setHash(uint);
++    //! returns current plugin settings
++    Settings* settings();
++
+ public Q_SLOTS:
+     /*! performs search in dictionary
+       \param  word word to search in dictionary
+       \param limit limit on number of results
+       After finishing search it has to emit
+       \see CommonDictInterface:finalTranslation  finalTranslation
+     */
+     QList<Translation*> searchWordList(QString word, int limit);
+     //! stop current operation
+     void stop();
+ private:
+     bool isCached();
+     QString _langFrom;
+     QString _langTo;
+     QString _name;
+     QString _type;
+     QString _infoNote;
+     QDialog *_loadDialog;
+     QDialog *_settingsDialog;
+     QString path;
+     uint _hash;
+     bool stopped;   /*volatile*/
++    Settings *_settings;
++    XdxfDictDialog* _dictDialog;
+ };
+ #endif // XDXFPLUGIN_H