-#include "xdxfplugin.h"
-#include <QDebug>
-#include <QFile>
-#include <QXmlStreamReader>
-#include <QtPlugin>
-#include "TranslationXdxf.h"
-
-XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
- _langFrom(tr("")), _langTo(tr("")),_name(tr("")),
- _type(tr("xdxf")), _infoNote(tr("")) {
- path="dict.xdxf";
- stopped = false;
-}
-
-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";
-}
-
-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;
-}
-
-Q_EXPORT_PLUGIN2(xdxf, XdxfPlugin)