d2f8a4ba0b93116e753e2b428067301ef32a728c
[mdictionary] / trunk / src / plugins / xdxf / src / XdxfPlugin / xdxfplugin.cpp
1 #include "xdxfplugin.h"
2 #include <QDebug>
3 #include <QFile>
4 #include <QXmlStreamReader>
5
6 XdxfPlugin::XdxfPlugin(QObject *parent) : CommonDictInterface(parent),
7                     _langFrom(tr("")), _langTo(tr("")),_name(tr("")),
8                     _type(tr("xdxf")), _infoNote(tr("")) {
9 }
10
11 QString XdxfPlugin::langFrom() const {
12     return  _langFrom;
13 }
14
15 QString XdxfPlugin::langTo() const {
16     return  _langTo;
17 }
18
19 QString XdxfPlugin::name() const {
20     return  _name;
21 }
22
23 QString XdxfPlugin::type() const {
24     return _type;
25 }
26
27 QString XdxfPlugin::infoNote() const {
28     return  _infoNote;
29 }
30
31 void XdxfPlugin::searchWordList(QString word, int limit) {
32     QRegExp regWord(word);
33     QList<Translation*> translations;
34     regWord.setPatternSyntax(QRegExp::Wildcard);
35     QFile dictionaryFile(path);
36     if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
37         return; //blad otwarcia pliku
38     }
39     QXmlStreamReader dictionaryReader(&dictionaryFile);
40     dictionaryReader.readNextStartElement();
41     if(dictionaryReader.name()=="xdxf") {
42       if(dictionaryReader.attributes().hasAttribute("lang_from"))
43         _langFrom = dictionaryReader.attributes().value("lang_from").toString();
44       if(dictionaryReader.attributes().hasAttribute("lang_to"))
45         _langTo = dictionaryReader.attributes().value("lang_to").toString();
46     }
47     dictionaryReader.readNextStartElement();
48     if(dictionaryReader.name()=="full_name")
49         _name=dictionaryReader.readElementText();
50     dictionaryReader.readNextStartElement();
51     if(dictionaryReader.name()=="description")
52         _infoNote=dictionaryReader.readElementText();
53     QString a;
54     int i=0;
55     while(!dictionaryReader.atEnd() && !stopped){
56         dictionaryReader.readNextStartElement();
57         if(dictionaryReader.name()=="ar"){
58             while(dictionaryReader.name()!="k" && !dictionaryReader.atEnd())
59                 dictionaryReader.readNextStartElement();
60             a = dictionaryReader.readElementText();
61             if(regWord.exactMatch(a) && i<limit) {
62                 translations.append(new TranslationXdxf(a,_infoNote,this));
63                 i++;
64                 if(i>=limit)
65                     break;
66             }
67         }
68     }
69     stopped=false;
70     emit finalTranslation(translations);
71     dictionaryFile.close();
72 }
73
74 QString XdxfPlugin::search(QString key) {
75     QFile dictionaryFile(path);
76     if(!dictionaryFile.open(QFile::ReadOnly | QFile::Text)) {
77         return ""; //blad otwarcia pliku
78     }
79     QXmlStreamReader dictionaryReader(&dictionaryFile);
80
81     QString a;
82     bool match =false;
83     while (!dictionaryReader.atEnd()) {
84         dictionaryReader.readNext();
85         if(dictionaryReader.tokenType() == QXmlStreamReader::StartElement) {
86             if(dictionaryReader.name()=="k") {
87                 a = dictionaryReader.readElementText();
88                 if(a==key)
89                     match = true;
90             }
91         }
92         else if(dictionaryReader.tokenType() == QXmlStreamReader::Characters)
93             if(match) {
94                 dictionaryFile.close();
95                 return dictionaryReader.text().toString().replace("\n","");
96
97             }
98     }
99     return "";
100 }
101
102 void XdxfPlugin::stop() {
103     stopped=true;
104 }
105
106 QDialog* XdxfPlugin::loadDialog() {
107      path="dict.xdxf";
108 }
109
110 QDialog* XdxfPlugin::settingsDialog() {
111     ;
112 }
113
114 CommonDictInterface* XdxfPlugin::getNew(const Settings*) const {
115     ;
116 }
117
118 bool XdxfPlugin::isAvailable() const {
119     return true;
120 }
121