keduvocpaukerreader.cpp
keduvocvokabelnreader.cpp
keduvocwqlreader.cpp
+ keduvocxdxfreader.cpp
leitnerbox.cpp
leitnersystem.cpp
leitnersystemview.cpp
#include "keduvocwqlreader.h"
#include "keduvocpaukerreader.h"
#include "keduvocvokabelnreader.h"
+#include "keduvocxdxfreader.h"
#include "leitnersystem.h"
class KEduVocDocument::Private
if (c1 == '<' && c2 == '?' && c3 == 'x' && c4 == 'm' && c5 == 'l') {
if (line2.indexOf("pauker", 0) > 0)
return pauker;
+ else if (line2.indexOf("xdxf", 0) > 0)
+ return xdxf;
else
return kvtml;
}
}
break;
+ case xdxf:
+ {
+ KEduVocXdxfReader xdxfReader(f);
+ read = xdxfReader.readDoc(this);
+ if (!read)
+ errorMessage = xdxfReader.errorMessage();
+ }
+ break;
+
default:
{
KEduVocKvtmlReader kvtmlReader(f);
{ true, false, "*.wql", I18N_NOOP("KWordQuiz Document") },
{ true, false, "*.xml.qz *.pau.gz", I18N_NOOP("Pauker Lesson") },
{ true, false, "*.voc", I18N_NOOP("Vokabeltrainer") },
+ { true, false, "*.xdxf", I18N_NOOP("XML Dictionary Exchange Format") },
{ true, true, "*.csv", I18N_NOOP("Text") },
// last is marker for the end, do not remove it
{ false, false, 0, 0 }
wql,
pauker,
vokabeln,
+ xdxf,
csv };
/**
QDomElement domElementKvtml = domDoc.documentElement();
if (domElementKvtml.tagName() != KV_DOCTYPE)
{
- m_errorMessage = i18n("Tag <%1> was expected but tag <%2> was found.", QString(KV_DOCTYPE), domElementKvtml.tagName());
+ m_errorMessage = i18n("This is not a KDE Vocabulary document.");
return false;
}
--- /dev/null
+/***************************************************************************
+ create a KEduVocDocument from a XDXF file
+ -----------------------------------------------------------------------
+ copyright : (C) 2007 Peter Hedlund <peter.hedlund@kdemail.net>
+
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <QIODevice>
+
+#include <klocale.h>
+
+#include "keduvocxdxfreader.h"
+#include "keduvocexpression.h"
+#include "keduvocdocument.h"
+
+KEduVocXdxfReader::KEduVocXdxfReader(QIODevice * file)
+{
+ // the file must be already open
+ m_inputFile = file;
+ m_errorMessage = "";
+}
+
+
+bool KEduVocXdxfReader::readDoc(KEduVocDocument * doc)
+{
+ m_doc = doc;
+ QString front;
+ QString back;
+
+ QDomDocument domDoc("XDXF");
+ if (!domDoc.setContent(m_inputFile, &m_errorMessage))
+ return false;
+
+ if (domDoc.doctype().name() != "xdxf") {
+ m_errorMessage = i18n("This is not a XDXF document");
+ return false;
+ }
+
+ QDomElement description = domDoc.documentElement().firstChildElement("description");
+ if(!description.isNull())
+ m_doc->setDocumentRemark(description.text());
+
+ QDomElement title = domDoc.documentElement().firstChildElement("full_name");
+ if(!title.isNull())
+ m_doc->setTitle(title.text());
+
+ ///The language attributes are required and should be ISO 639-2 codes, but you never know...
+ QDomAttr id1 = domDoc.documentElement().attributeNode("lang_from");
+ if(!id1.isNull())
+ m_doc->appendIdentifier(id1.value().toLower());
+ else
+ m_doc->appendIdentifier(i18n("Original"));
+
+ QDomAttr id2 = domDoc.documentElement().attributeNode("lang_to");
+ if(!id2.isNull())
+ m_doc->appendIdentifier(id2.value().toLower());
+ else
+ m_doc->appendIdentifier(i18n("Translation"));
+
+ QDomNodeList entries = domDoc.elementsByTagName("ar");
+
+ if (entries.count() <= 0) {
+ m_errorMessage = i18n("Error while reading file");
+ return false;
+ }
+
+ m_doc->setAuthor("http://xdxf.sf.net");
+
+ for (int i = 0; i < entries.count(); i++) {
+ QDomNode entry = entries.at(i);
+ if(!entry.isNull()) {
+ QDomElement from = entry.firstChildElement("k");
+ if(!from.isNull())
+ front = from.text();
+ else
+ front = QString();
+
+ back = entry.toElement().lastChild().toText().data();
+ KEduVocExpression expr = KEduVocExpression(front);
+ expr.setTranslation(1, back);
+ m_doc->appendEntry(&expr);
+ }
+ }
+ return true;
+}
--- /dev/null
+/***************************************************************************
+ create a KEduVocDocument from a XDXF file
+ -----------------------------------------------------------------------
+ copyright : (C) 2007 Peter Hedlund <peter.hedlund@kdemail.net>
+
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KEDUVOCXDXFREADER_H
+#define KEDUVOCXDXFREADER_H
+
+#include <QtXml>
+
+class QIODevice;
+class KEduVocDocument;
+
+class KEduVocXdxfReader : public QObject
+{
+public:
+ KEduVocXdxfReader(QIODevice *file);
+
+ bool readDoc(KEduVocDocument *doc);
+
+ QString errorMessage() const {return m_errorMessage;};
+
+private:
+ QIODevice *m_inputFile;
+ KEduVocDocument *m_doc;
+ QString m_errorMessage;
+};
+
+#endif