# HG changeset patch
# User insilmaril
# Date 1194535683 0
# Node ID c60984c46f9f5002203cd13a2d672655e3961ed7
# Parent  24bfecc949a00d27c465a6f3701f96990dc2e6c8
1.11.2 split up of xml helper functions. started to work on attributes

diff -r 24bfecc949a0 -r c60984c46f9f xlinkobj.h
--- a/xlinkobj.h	Thu Nov 08 15:28:03 2007 +0000
+++ b/xlinkobj.h	Thu Nov 08 15:28:03 2007 +0000
@@ -3,6 +3,8 @@
 
 #include "linkablemapobj.h"
 
+class BranchObj;
+
 enum XLinkState {undefinedXLink,initXLink,activeXLink,deleteXLink};
 
 /*! \brief xlinks are used to draw arbitrary connections between branches (BranchObj) in the map. */
diff -r 24bfecc949a0 -r c60984c46f9f xmlobj.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xmlobj.cpp	Thu Nov 08 15:28:03 2007 +0000
@@ -0,0 +1,94 @@
+#include "xmlobj.h"
+
+#include <QRegExp>
+
+
+// returns masked "<" ">" "&"
+QString quotemeta(const QString &s)
+{
+	QString r=s;
+    QRegExp  rx("&(?!amp;)");
+    r.replace ( rx,"&amp;");
+    rx.setPattern( ">");
+    r.replace ( rx,"&gt;");
+    rx.setPattern( "<");
+    r.replace ( rx,"&lt;");
+    rx.setPattern( "\"");
+    r.replace ( rx,"&quot;");
+    return r;
+}
+
+
+
+int XMLObj::actindent=0;		// make instance of actindent
+
+XMLObj::XMLObj()
+{
+    indentwidth=4;
+}
+
+
+// returns <s at />
+QString XMLObj::singleElement(QString s, QString at)
+{
+    return indent() + "<" + s +" " + at +" " + "/>\n";
+}
+
+// returns <s>
+QString XMLObj::beginElement(QString s)
+{
+    return indent() + "<" + s + ">\n";
+}
+
+// returns <s at>
+QString XMLObj::beginElement(QString s, QString at)
+{
+    return indent() + "<" + s + " " + at + ">\n";
+}
+
+// returns </s>
+QString XMLObj::endElement(QString s)
+{
+    return indent() + "</" + s + ">\n";
+}
+
+// returns  at="val"
+QString XMLObj::attribut(QString at, QString val)
+{
+    return " " + at + "=\"" + quotemeta (val) + "\""; 
+}
+
+// returns <s> val </s>
+QString XMLObj::valueElement(QString el, QString val)
+{
+    return indent() + "<" + el + ">" + quotemeta(val) + "</" +el + ">\n";
+}
+
+// returns <s at> val </s>
+QString XMLObj::valueElement(QString el, QString val, QString at)
+{
+    return indent() + "<" + el + " " + at + ">" + quotemeta(val) + "</" +el + ">\n";
+}
+
+void XMLObj::incIndent()
+{
+    actindent++;
+}	
+
+void XMLObj::decIndent()
+{
+    actindent--;
+    if (actindent<0) actindent=0;
+}	
+
+QString XMLObj::indent()
+{
+    QString s;
+    int i;
+    for (i=0; i<actindent*indentwidth; i++)
+    {
+		s= s + " ";
+    }
+    return s;
+}	
+
diff -r 24bfecc949a0 -r c60984c46f9f xmlobj.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xmlobj.h	Thu Nov 08 15:28:03 2007 +0000
@@ -0,0 +1,29 @@
+#ifndef XMLOBJ_H
+#define XMLOBJ_H
+
+#include <QString>
+
+QString quotemeta(const QString&);	
+
+/////////////////////////////////////////////////////////////////////////////
+class XMLObj
+{
+public:
+    XMLObj();
+    QString singleElement(QString,QString);			// name,attr
+    QString beginElement(QString,QString);			// name,attr
+    QString beginElement(QString);					// name
+    QString endElement  (QString);					// name
+    QString attribut    (QString,QString);			// name, val
+    QString valueElement(QString,QString);			// name, val
+    QString valueElement(QString,QString,QString);	// name, attr, val
+    void incIndent();
+    void decIndent();
+    static int actindent;
+
+protected:  
+    QString indent();
+    int indentwidth;
+};
+
+#endif