--- /dev/null
+Developers:
+* Scott Wheeler <wheeler@kde.org>
+ Original author and current maintainer
--- /dev/null
+INCLUDES= $(all_includes)
+SUBDIRS = .
+
+lib_LTLIBRARIES = libkdeedu.la
+
+libkdeedu_la_SOURCES = kedudata.cpp
+
+libkdeedu_la_LDFLAGS = $(all_libraries) -no-undefined -version-info 1:0
+
+include_HEADERS = kedudata.h
+# noinst_HEADERS =
+
+libkdeedu_la_LIBADD = $(LIB_KDECORE)
+
+METASOURCES = AUTO
+
+# updatedir =
+# update_DATA =
+
+# messages:
+# $(XGETTEXT) *.cpp *.h -o $(podir)/libkdeedu.pot
--- /dev/null
+-- Email sent to kde-edu-devel@kde.org by Scott Wheeler (wheeler@kde.org)
+-- on May 30, 2002. Please see the "disclaimers" part of this before
+-- you make use of this lib.
+
+Per public and private discussion with Annma today, I've committed the first
+part of libkdeedu. With all of the hype around the use of Ewald's kvtml,
+Anma has been the first besides Ewald and myself to take the initiative to
+begin using it. Rather than having her copy and paste my poor implementation
+ it seemed to be a good time to start to Do Things The Right Way (tm).
+
+First, I made a lib based on my bad implementation of kvtml, but then my
+conscience got the better of me and I started tinkering with QDom. What you'll
+find in libkdeedu is a QDom based, very basic, parser for kvtml. Right now it
+just parses "e" (entry), "o" (original) and "t" (tranlation) tags, but it's done
+in such a way that it should be easy to extend (unlike my previous
+implementation). I've also made changes to FlashKard to do it's input using
+this.
+
+So now, if you include "kedudata.h", you'll have access to two classes and a
+typedef. They are as follows:
+
+KEduDataItem -- a class to store vocabulary items
+KEduDataItemList -- a "typedef QValueList<KEduDataItem>"
+KEduData -- a class that will later be used for kvtml documents but at the
+moment just has one static member "parse(const QString fileName)".
+
+The use is basically what I laid out in my earlier email:
+
+KEduDataItemList list = KEduData::parse("foo.kvtml");
+QString original = list[0].originalText();
+QString translated = list[0].translatedText();
+
+Also you'll need something like:
+
+#include "../../libkdeedu/kedudata.h"
+
+and in your Makefile.am:
+
+flashkard_LDADD = $(LIB_KFILE) ../../libkdeedu/libkdeedu.la
+
+So now some disclaimers:
+
+This is very basic. There isn't much there, but that will change. Right now
+this is to suit Annma's needs (and FlashKard while I'm at it). Many gaps need
+to be filled in.
+
+This is all *very* subject to change. In fact I guarantee it. If you're lucky,
+I'll only break your app a few times. Things will be moved, renamed, rewritten
+and the API will change.
+
+This also means that it's open for suggestions. For the name of the lib, I
+followed the libkdenetwork pattern, but that can change. I arbitrarily picked
+the prefix "KEdu" for all of the classes and decided on the name "KEduData" for
+the vocabulary data. Ewald had suggested some other things but mainly based on
+having several KDE-Edu libs, which of course begs the question, should there be
+several? Looking around at other KDE things it seems pretty common to pack a lot
+of logically connected material into one lib.
+
+Also propper documentation will follow, but I want to get a little better idea
+of what the API will be before I spend the time to document it.
+
+I'm really not trying to comandere this thing, I was just feeling productive, so
+I started coding.
+
+I may start looking into writing something to write kvtml, but that will probably
+ happen after a brainstorming session at LinuxTag.
+
+Cheers and good luck!
+
+-Scott
--- /dev/null
+/* This file is part of the KDE Edu Library
+ Copyright (C) 2002 Scott Wheeler <wheeler@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#include "kedudata.h"
+
+#include <qfile.h>
+
+#include <kdebug.h>
+
+////////////////////////////////////////////////////////////////////////////////
+// class KEduDataItem
+////////////////////////////////////////////////////////////////////////////////
+
+// public methods
+
+KEduDataItem::KEduDataItem()
+{
+
+}
+
+KEduDataItem::KEduDataItem(QDomElement &entry)
+{
+ domElement = entry;
+}
+
+KEduDataItem::~KEduDataItem()
+{
+
+}
+
+QString KEduDataItem::originalText()
+{
+ return getText("o");
+}
+
+QString KEduDataItem::translatedText()
+{
+ return getText("t");
+}
+
+// protected methods
+
+QString KEduDataItem::getText(const QString tagName)
+{
+ if(!domElement.isNull()) {
+
+ QDomNodeList list = domElement.elementsByTagName(tagName);
+
+ if(list.count() > 0) {
+
+ QDomElement element = list.item(0).toElement();
+
+ if(!element.isNull()) {
+ return element.text();
+ }
+ else
+ return QString::null;
+ }
+ else
+ return QString::null;
+ }
+ else
+ return QString::null;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// class KEduData
+////////////////////////////////////////////////////////////////////////////////
+
+// public static methods
+
+KEduDataItemList KEduData::parse(const QString fileName)
+{
+ KEduDataItemList list;
+
+ QDomDocument document;
+ QFile file(fileName);
+ document.setContent(&file);
+
+ QDomNodeList entries = document.elementsByTagName("e");
+
+ // loop through the "e" (entry) tags looking for data
+ for(uint i = 0 ; i < entries.count() ; i++) {
+
+ // get an entry to operate on
+ QDomElement entry = entries.item(i).toElement();
+
+ // if the "node" is in fact an element -- i.e. not null
+ if(!entry.isNull()) {
+ KEduDataItem item(entry);
+ list.append(item);
+ }
+ }
+
+ return list;
+}
--- /dev/null
+/* This file is part of the KDE Edu Library
+ Copyright (C) 2002 Scott Wheeler <wheeler@kde.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License version 2 as published by the Free Software Foundation.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#include <qdom.h>
+#include <qvaluelist.h>
+
+class KEduDataItem
+{
+public:
+ KEduDataItem();
+ KEduDataItem(QDomElement &entry);
+ virtual ~KEduDataItem();
+
+ QString originalText();
+ QString translatedText();
+
+protected:
+ QString getText(const QString tagName);
+
+private:
+ QDomElement domElement;
+};
+
+typedef QValueList<KEduDataItem> KEduDataItemList;
+
+class KEduData
+{
+public:
+ static KEduDataItemList parse(const QString fileName);
+};