summaryrefslogtreecommitdiffstats
path: root/ksayit/src/docbookgenerator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksayit/src/docbookgenerator.cpp')
-rw-r--r--ksayit/src/docbookgenerator.cpp483
1 files changed, 483 insertions, 0 deletions
diff --git a/ksayit/src/docbookgenerator.cpp b/ksayit/src/docbookgenerator.cpp
new file mode 100644
index 0000000..1d6db9c
--- /dev/null
+++ b/ksayit/src/docbookgenerator.cpp
@@ -0,0 +1,483 @@
+//
+// C++ Implementation: docbookgenerator
+//
+// Description:
+//
+//
+// Author: Robert Vogl <voglrobe@lapislazuli>, (C) 2005
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+
+// Qt includes
+#include <qstring.h>
+#include <qvariant.h>
+
+//KDE includes
+#include <kdebug.h>
+#include <kglobal.h>
+#include <klocale.h>
+
+// App specific includes
+#include "docbookgenerator.h"
+
+
+DocbookGenerator::DocbookGenerator()
+{
+}
+
+
+DocbookGenerator::~DocbookGenerator()
+{
+}
+
+
+void DocbookGenerator::writeBook(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeBook()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "RobDocument" )
+ return;
+
+ // add node to document
+ doc << "<Book>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "BookInfo" ){
+ writeBookInfo( doc, i );
+ } else if ( itemType == "Chapter" ) {
+ writeChapter( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+ doc << "</Book>" << endl;
+}
+
+
+void DocbookGenerator::writeBookInfo(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeBookInfo()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "BookInfo" )
+ return;
+
+ // add node to document
+ doc << "<BookInfo>" << endl;
+ writeTitleOfBook( doc, item );
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "KeywordSet" ){
+ writeKeywordSet( doc, i );
+ } else if ( itemType == "Abstract" ) {
+ writeAbstract( doc, i );
+ } else if ( itemType == "AuthorGroup" ) {
+ writeAuthorGroup( doc, i );
+ } else if ( itemType == "Date" ) {
+ writeDate( doc, i );
+ } else if ( itemType == "ReleaseInfo" ) {
+ writeReleaseInfo( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</BookInfo>" << endl;
+}
+
+
+void DocbookGenerator::writeTitleOfBook(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeTitle()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "BookInfo" )
+ return;
+
+ // Documents title is stored in root element (parent of BookInfo)
+ ListViewInterface *parent = static_cast<ListViewInterface*>(item->parent());
+ if ( parent ){
+ QString title = parent->text(0);
+
+ // add node to document
+ doc << "<Title>" << title << "</Title>" << endl;
+ }
+}
+
+
+void DocbookGenerator::writeAuthorGroup(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeAuthorGroup()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "AuthorGroup" )
+ return;
+
+ // add node to document
+ doc << "<AuthorGroup>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "Author" ){
+ writeAuthor( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</AuthorGroup>" << endl;
+}
+
+
+void DocbookGenerator::writeAuthor(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeAuthor()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Author" )
+ return;
+
+ QString author = QString::null;
+ author = ( item->getValue(KSayItGlobal::RAWDATA) ).toString();
+
+ // add node to document
+ doc << "<Author>" << endl;
+
+ // process childs
+ doc << "<Firstname>" << author.section(' ', 0, 0) << "</Firstname>" << endl;
+ doc << "<Surname>" << author.section(' ', 1, 1) << "</Surname>" << endl;
+
+ doc << "</Author>" << endl;
+}
+
+
+void DocbookGenerator::writeDate(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeDate()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Date" )
+ return;
+
+ QString date = item->text(1);
+
+ // add node to document
+ doc << "<Date>" << date << "</Date>" << endl;
+}
+
+
+void DocbookGenerator::writeReleaseInfo(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeReleaseInfo()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "ReleaseInfo" )
+ return;
+
+ QString releaseinfo = item->text(1);
+
+ // add node to document
+ doc << "<ReleaseInfo>" << releaseinfo << "</ReleaseInfo>" << endl;
+}
+
+
+void DocbookGenerator::writeKeywordSet(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeKeywordSet()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "KeywordSet" )
+ return;
+
+ // add node to document
+ doc << "<KeywordSet>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = ( i->getValue(KSayItGlobal::XMLCONTEXTNAME) ).toString();
+ if ( itemType == "Keyword" ){
+ writeKeyword( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</KeywordSet>" << endl;
+}
+
+
+void DocbookGenerator::writeKeyword(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeKeyword()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Keyword" )
+ return;
+
+ // QString keyword = item->text( 0 );
+ QString keyword = QString::null;
+ keyword = (item->getValue(3)).toString();
+
+ // add node to document
+ doc << "<Keyword>" << keyword << "</Keyword>" << endl;
+
+ // process childs
+ // no childs
+}
+
+
+void DocbookGenerator::writeAbstract(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeAbstract()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Abstract" )
+ return;
+
+ // add node to document
+ doc << "<Abstract>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "Para" ){
+ writePara( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</Abstract>" << endl;
+}
+
+
+void DocbookGenerator::writeChapter( QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeChapter()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Chapter" )
+ return;
+
+ QString title = item->text(0);
+
+ // add node to document
+ doc << "<Chapter>" << endl;
+ doc << "<Title>" << title << "</Title>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "Para" ){
+ writePara( doc, i );
+ } else if ( itemType == "Sect1" ) {
+ writeSect1( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</Chapter>" << endl;
+}
+
+
+void DocbookGenerator::writeSect1(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeSect1()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Sect1" )
+ return;
+
+ QString title = item->text(0);
+
+ // add node to document
+ doc << "<Sect1>" << endl;
+ doc << "<Title>" << title << "</Title>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "Para" ){
+ writePara( doc, i );
+ } else if ( itemType == "Sect2" ) {
+ writeSect2( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</Sect1>" << endl;
+}
+
+
+void DocbookGenerator::writeSect2(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeSect1()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Sect2" )
+ return;
+
+ QString title = item->text(0);
+
+ // add node to document
+ doc << "<Sect2>" << endl;
+ doc << "<Title>" << title << "</Title>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = ( i->getValue(KSayItGlobal::XMLCONTEXTNAME) ).toString();
+ if ( itemType == "Para" ){
+ writePara( doc, i );
+ } else if ( itemType == "Sect3" ) {
+ writeSect3( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</Sect2>" << endl;
+}
+
+
+void DocbookGenerator::writeSect3(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeSect3()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Sect3" )
+ return;
+
+ QString title = item->text(0);
+
+ // add node to document
+ doc << "<Sect3>" << endl;
+ doc << "<Title>" << title << "</Title>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "Para" ){
+ writePara( doc, i );
+ } else if ( itemType == "Sect4" ) {
+ writeSect4( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</Sect3>" << endl;
+}
+
+
+void DocbookGenerator::writeSect4(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeSect4()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Sect4" )
+ return;
+
+ QString title = item->text(0);
+
+ // add node to document
+ doc << "<Sect4>" << endl;
+ doc << "<Title>" << title << "</Title>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "Para" ){
+ writePara( doc, i );
+ } else if ( itemType == "Sect5" ) {
+ writeSect5( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</Sect4>" << endl;
+}
+
+
+void DocbookGenerator::writeSect5(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writeSect5()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Sect5" )
+ return;
+
+ QString title = item->text(0);
+
+ // add node to document
+ doc << "<Sect5>" << endl;
+ doc << "<Title>" << title << "</Title>" << endl;
+
+ // process childs
+ ListViewInterface *i = static_cast<ListViewInterface*>(item->firstChild());
+ QString itemType;
+ while( i ){
+ itemType = (i->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( itemType == "Para" ){
+ writePara( doc, i );
+ }
+ // next child
+ i = static_cast<ListViewInterface*>(i->nextSibling());
+ }
+
+ doc << "</Sect5>" << endl;
+}
+
+
+void DocbookGenerator::writePara(QTextStream &doc, ListViewInterface *item)
+{
+ kdDebug(100200) << "DocTreeViewImpl::writePara()" << endl;
+ // read item's content
+ QString whoAmI = (item->getValue(KSayItGlobal::XMLCONTEXTNAME)).toString();
+ if ( whoAmI != "Para" )
+ return;
+
+ QString data = ( item->getValue(KSayItGlobal::RAWDATA) ).toString();
+
+ // add node to document
+ doc << "<Para>" << endl;
+ doc << data << endl;
+ doc << "</Para>" << endl;
+
+ // process childs
+ // childs are embedded in data.
+}
+
+
+
+