src/tools/uic/ui4.cpp
changeset 0 1918ee327afb
child 4 3b1da2848fc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tools/uic/ui4.cpp	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,11132 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the tools applications of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "ui4.h"
+
+#ifdef QUILOADER_QDOM_READ
+#include <QtXml/QDomElement>
+#endif
+
+QT_BEGIN_NAMESPACE
+#ifdef QFORMINTERNAL_NAMESPACE
+using namespace QFormInternal;
+#endif
+
+/*******************************************************************************
+** Implementations
+*/
+
+void DomUI::clear(bool clear_all)
+{
+    delete m_widget;
+    delete m_layoutDefault;
+    delete m_layoutFunction;
+    delete m_customWidgets;
+    delete m_tabStops;
+    delete m_images;
+    delete m_includes;
+    delete m_resources;
+    delete m_connections;
+    delete m_designerdata;
+    delete m_slots;
+    delete m_buttonGroups;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_version = false;
+    m_has_attr_language = false;
+    m_has_attr_displayname = false;
+    m_has_attr_stdsetdef = false;
+    m_attr_stdsetdef = 0;
+    m_has_attr_stdSetDef = false;
+    m_attr_stdSetDef = 0;
+    }
+
+    m_children = 0;
+    m_widget = 0;
+    m_layoutDefault = 0;
+    m_layoutFunction = 0;
+    m_customWidgets = 0;
+    m_tabStops = 0;
+    m_images = 0;
+    m_includes = 0;
+    m_resources = 0;
+    m_connections = 0;
+    m_designerdata = 0;
+    m_slots = 0;
+    m_buttonGroups = 0;
+}
+
+DomUI::DomUI()
+{
+    m_children = 0;
+    m_has_attr_version = false;
+    m_has_attr_language = false;
+    m_has_attr_displayname = false;
+    m_has_attr_stdsetdef = false;
+    m_attr_stdsetdef = 0;
+    m_has_attr_stdSetDef = false;
+    m_attr_stdSetDef = 0;
+    m_widget = 0;
+    m_layoutDefault = 0;
+    m_layoutFunction = 0;
+    m_customWidgets = 0;
+    m_tabStops = 0;
+    m_images = 0;
+    m_includes = 0;
+    m_resources = 0;
+    m_connections = 0;
+    m_designerdata = 0;
+    m_slots = 0;
+    m_buttonGroups = 0;
+}
+
+DomUI::~DomUI()
+{
+    delete m_widget;
+    delete m_layoutDefault;
+    delete m_layoutFunction;
+    delete m_customWidgets;
+    delete m_tabStops;
+    delete m_images;
+    delete m_includes;
+    delete m_resources;
+    delete m_connections;
+    delete m_designerdata;
+    delete m_slots;
+    delete m_buttonGroups;
+}
+
+void DomUI::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("version")) {
+            setAttributeVersion(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("language")) {
+            setAttributeLanguage(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("displayname")) {
+            setAttributeDisplayname(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("stdsetdef")) {
+            setAttributeStdsetdef(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QLatin1String("stdSetDef")) {
+            setAttributeStdSetDef(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("author")) {
+                setElementAuthor(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("comment")) {
+                setElementComment(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("exportmacro")) {
+                setElementExportMacro(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("class")) {
+                setElementClass(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(reader);
+                setElementWidget(v);
+                continue;
+            }
+            if (tag == QLatin1String("layoutdefault")) {
+                DomLayoutDefault *v = new DomLayoutDefault();
+                v->read(reader);
+                setElementLayoutDefault(v);
+                continue;
+            }
+            if (tag == QLatin1String("layoutfunction")) {
+                DomLayoutFunction *v = new DomLayoutFunction();
+                v->read(reader);
+                setElementLayoutFunction(v);
+                continue;
+            }
+            if (tag == QLatin1String("pixmapfunction")) {
+                setElementPixmapFunction(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("customwidgets")) {
+                DomCustomWidgets *v = new DomCustomWidgets();
+                v->read(reader);
+                setElementCustomWidgets(v);
+                continue;
+            }
+            if (tag == QLatin1String("tabstops")) {
+                DomTabStops *v = new DomTabStops();
+                v->read(reader);
+                setElementTabStops(v);
+                continue;
+            }
+            if (tag == QLatin1String("images")) {
+                DomImages *v = new DomImages();
+                v->read(reader);
+                setElementImages(v);
+                continue;
+            }
+            if (tag == QLatin1String("includes")) {
+                DomIncludes *v = new DomIncludes();
+                v->read(reader);
+                setElementIncludes(v);
+                continue;
+            }
+            if (tag == QLatin1String("resources")) {
+                DomResources *v = new DomResources();
+                v->read(reader);
+                setElementResources(v);
+                continue;
+            }
+            if (tag == QLatin1String("connections")) {
+                DomConnections *v = new DomConnections();
+                v->read(reader);
+                setElementConnections(v);
+                continue;
+            }
+            if (tag == QLatin1String("designerdata")) {
+                DomDesignerData *v = new DomDesignerData();
+                v->read(reader);
+                setElementDesignerdata(v);
+                continue;
+            }
+            if (tag == QLatin1String("slots")) {
+                DomSlots *v = new DomSlots();
+                v->read(reader);
+                setElementSlots(v);
+                continue;
+            }
+            if (tag == QLatin1String("buttongroups")) {
+                DomButtonGroups *v = new DomButtonGroups();
+                v->read(reader);
+                setElementButtonGroups(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomUI::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("version")))
+        setAttributeVersion(node.attribute(QLatin1String("version")));
+    if (node.hasAttribute(QLatin1String("language")))
+        setAttributeLanguage(node.attribute(QLatin1String("language")));
+    if (node.hasAttribute(QLatin1String("displayname")))
+        setAttributeDisplayname(node.attribute(QLatin1String("displayname")));
+    if (node.hasAttribute(QLatin1String("stdsetdef")))
+        setAttributeStdsetdef(node.attribute(QLatin1String("stdsetdef")).toInt());
+    if (node.hasAttribute(QLatin1String("stdSetDef")))
+        setAttributeStdSetDef(node.attribute(QLatin1String("stdSetDef")).toInt());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("author")) {
+                setElementAuthor(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("comment")) {
+                setElementComment(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("exportmacro")) {
+                setElementExportMacro(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("class")) {
+                setElementClass(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(e);
+                setElementWidget(v);
+                continue;
+            }
+            if (tag == QLatin1String("layoutdefault")) {
+                DomLayoutDefault *v = new DomLayoutDefault();
+                v->read(e);
+                setElementLayoutDefault(v);
+                continue;
+            }
+            if (tag == QLatin1String("layoutfunction")) {
+                DomLayoutFunction *v = new DomLayoutFunction();
+                v->read(e);
+                setElementLayoutFunction(v);
+                continue;
+            }
+            if (tag == QLatin1String("pixmapfunction")) {
+                setElementPixmapFunction(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("customwidgets")) {
+                DomCustomWidgets *v = new DomCustomWidgets();
+                v->read(e);
+                setElementCustomWidgets(v);
+                continue;
+            }
+            if (tag == QLatin1String("tabstops")) {
+                DomTabStops *v = new DomTabStops();
+                v->read(e);
+                setElementTabStops(v);
+                continue;
+            }
+            if (tag == QLatin1String("images")) {
+                DomImages *v = new DomImages();
+                v->read(e);
+                setElementImages(v);
+                continue;
+            }
+            if (tag == QLatin1String("includes")) {
+                DomIncludes *v = new DomIncludes();
+                v->read(e);
+                setElementIncludes(v);
+                continue;
+            }
+            if (tag == QLatin1String("resources")) {
+                DomResources *v = new DomResources();
+                v->read(e);
+                setElementResources(v);
+                continue;
+            }
+            if (tag == QLatin1String("connections")) {
+                DomConnections *v = new DomConnections();
+                v->read(e);
+                setElementConnections(v);
+                continue;
+            }
+            if (tag == QLatin1String("designerdata")) {
+                DomDesignerData *v = new DomDesignerData();
+                v->read(e);
+                setElementDesignerdata(v);
+                continue;
+            }
+            if (tag == QLatin1String("slots")) {
+                DomSlots *v = new DomSlots();
+                v->read(e);
+                setElementSlots(v);
+                continue;
+            }
+            if (tag == QLatin1String("buttongroups")) {
+                DomButtonGroups *v = new DomButtonGroups();
+                v->read(e);
+                setElementButtonGroups(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomUI::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("ui") : tagName.toLower());
+
+    if (hasAttributeVersion())
+        writer.writeAttribute(QLatin1String("version"), attributeVersion());
+
+    if (hasAttributeLanguage())
+        writer.writeAttribute(QLatin1String("language"), attributeLanguage());
+
+    if (hasAttributeDisplayname())
+        writer.writeAttribute(QLatin1String("displayname"), attributeDisplayname());
+
+    if (hasAttributeStdsetdef())
+        writer.writeAttribute(QLatin1String("stdsetdef"), QString::number(attributeStdsetdef()));
+
+    if (hasAttributeStdSetDef())
+        writer.writeAttribute(QLatin1String("stdsetdef"), QString::number(attributeStdSetDef()));
+
+    if (m_children & Author) {
+        writer.writeTextElement(QLatin1String("author"), m_author);
+    }
+
+    if (m_children & Comment) {
+        writer.writeTextElement(QLatin1String("comment"), m_comment);
+    }
+
+    if (m_children & ExportMacro) {
+        writer.writeTextElement(QLatin1String("exportmacro"), m_exportMacro);
+    }
+
+    if (m_children & Class) {
+        writer.writeTextElement(QLatin1String("class"), m_class);
+    }
+
+    if (m_children & Widget) {
+        m_widget->write(writer, QLatin1String("widget"));
+    }
+
+    if (m_children & LayoutDefault) {
+        m_layoutDefault->write(writer, QLatin1String("layoutdefault"));
+    }
+
+    if (m_children & LayoutFunction) {
+        m_layoutFunction->write(writer, QLatin1String("layoutfunction"));
+    }
+
+    if (m_children & PixmapFunction) {
+        writer.writeTextElement(QLatin1String("pixmapfunction"), m_pixmapFunction);
+    }
+
+    if (m_children & CustomWidgets) {
+        m_customWidgets->write(writer, QLatin1String("customwidgets"));
+    }
+
+    if (m_children & TabStops) {
+        m_tabStops->write(writer, QLatin1String("tabstops"));
+    }
+
+    if (m_children & Images) {
+        m_images->write(writer, QLatin1String("images"));
+    }
+
+    if (m_children & Includes) {
+        m_includes->write(writer, QLatin1String("includes"));
+    }
+
+    if (m_children & Resources) {
+        m_resources->write(writer, QLatin1String("resources"));
+    }
+
+    if (m_children & Connections) {
+        m_connections->write(writer, QLatin1String("connections"));
+    }
+
+    if (m_children & Designerdata) {
+        m_designerdata->write(writer, QLatin1String("designerdata"));
+    }
+
+    if (m_children & Slots) {
+        m_slots->write(writer, QLatin1String("slots"));
+    }
+
+    if (m_children & ButtonGroups) {
+        m_buttonGroups->write(writer, QLatin1String("buttongroups"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomUI::setElementAuthor(const QString& a)
+{
+    m_children |= Author;
+    m_author = a;
+}
+
+void DomUI::setElementComment(const QString& a)
+{
+    m_children |= Comment;
+    m_comment = a;
+}
+
+void DomUI::setElementExportMacro(const QString& a)
+{
+    m_children |= ExportMacro;
+    m_exportMacro = a;
+}
+
+void DomUI::setElementClass(const QString& a)
+{
+    m_children |= Class;
+    m_class = a;
+}
+
+DomWidget* DomUI::takeElementWidget() 
+{
+    DomWidget* a = m_widget;
+    m_widget = 0;
+    m_children ^= Widget;
+    return a;
+}
+
+void DomUI::setElementWidget(DomWidget* a)
+{
+    delete m_widget;
+    m_children |= Widget;
+    m_widget = a;
+}
+
+DomLayoutDefault* DomUI::takeElementLayoutDefault() 
+{
+    DomLayoutDefault* a = m_layoutDefault;
+    m_layoutDefault = 0;
+    m_children ^= LayoutDefault;
+    return a;
+}
+
+void DomUI::setElementLayoutDefault(DomLayoutDefault* a)
+{
+    delete m_layoutDefault;
+    m_children |= LayoutDefault;
+    m_layoutDefault = a;
+}
+
+DomLayoutFunction* DomUI::takeElementLayoutFunction() 
+{
+    DomLayoutFunction* a = m_layoutFunction;
+    m_layoutFunction = 0;
+    m_children ^= LayoutFunction;
+    return a;
+}
+
+void DomUI::setElementLayoutFunction(DomLayoutFunction* a)
+{
+    delete m_layoutFunction;
+    m_children |= LayoutFunction;
+    m_layoutFunction = a;
+}
+
+void DomUI::setElementPixmapFunction(const QString& a)
+{
+    m_children |= PixmapFunction;
+    m_pixmapFunction = a;
+}
+
+DomCustomWidgets* DomUI::takeElementCustomWidgets() 
+{
+    DomCustomWidgets* a = m_customWidgets;
+    m_customWidgets = 0;
+    m_children ^= CustomWidgets;
+    return a;
+}
+
+void DomUI::setElementCustomWidgets(DomCustomWidgets* a)
+{
+    delete m_customWidgets;
+    m_children |= CustomWidgets;
+    m_customWidgets = a;
+}
+
+DomTabStops* DomUI::takeElementTabStops() 
+{
+    DomTabStops* a = m_tabStops;
+    m_tabStops = 0;
+    m_children ^= TabStops;
+    return a;
+}
+
+void DomUI::setElementTabStops(DomTabStops* a)
+{
+    delete m_tabStops;
+    m_children |= TabStops;
+    m_tabStops = a;
+}
+
+DomImages* DomUI::takeElementImages() 
+{
+    DomImages* a = m_images;
+    m_images = 0;
+    m_children ^= Images;
+    return a;
+}
+
+void DomUI::setElementImages(DomImages* a)
+{
+    delete m_images;
+    m_children |= Images;
+    m_images = a;
+}
+
+DomIncludes* DomUI::takeElementIncludes() 
+{
+    DomIncludes* a = m_includes;
+    m_includes = 0;
+    m_children ^= Includes;
+    return a;
+}
+
+void DomUI::setElementIncludes(DomIncludes* a)
+{
+    delete m_includes;
+    m_children |= Includes;
+    m_includes = a;
+}
+
+DomResources* DomUI::takeElementResources() 
+{
+    DomResources* a = m_resources;
+    m_resources = 0;
+    m_children ^= Resources;
+    return a;
+}
+
+void DomUI::setElementResources(DomResources* a)
+{
+    delete m_resources;
+    m_children |= Resources;
+    m_resources = a;
+}
+
+DomConnections* DomUI::takeElementConnections() 
+{
+    DomConnections* a = m_connections;
+    m_connections = 0;
+    m_children ^= Connections;
+    return a;
+}
+
+void DomUI::setElementConnections(DomConnections* a)
+{
+    delete m_connections;
+    m_children |= Connections;
+    m_connections = a;
+}
+
+DomDesignerData* DomUI::takeElementDesignerdata() 
+{
+    DomDesignerData* a = m_designerdata;
+    m_designerdata = 0;
+    m_children ^= Designerdata;
+    return a;
+}
+
+void DomUI::setElementDesignerdata(DomDesignerData* a)
+{
+    delete m_designerdata;
+    m_children |= Designerdata;
+    m_designerdata = a;
+}
+
+DomSlots* DomUI::takeElementSlots() 
+{
+    DomSlots* a = m_slots;
+    m_slots = 0;
+    m_children ^= Slots;
+    return a;
+}
+
+void DomUI::setElementSlots(DomSlots* a)
+{
+    delete m_slots;
+    m_children |= Slots;
+    m_slots = a;
+}
+
+DomButtonGroups* DomUI::takeElementButtonGroups() 
+{
+    DomButtonGroups* a = m_buttonGroups;
+    m_buttonGroups = 0;
+    m_children ^= ButtonGroups;
+    return a;
+}
+
+void DomUI::setElementButtonGroups(DomButtonGroups* a)
+{
+    delete m_buttonGroups;
+    m_children |= ButtonGroups;
+    m_buttonGroups = a;
+}
+
+void DomUI::clearElementAuthor()
+{
+    m_children &= ~Author;
+}
+
+void DomUI::clearElementComment()
+{
+    m_children &= ~Comment;
+}
+
+void DomUI::clearElementExportMacro()
+{
+    m_children &= ~ExportMacro;
+}
+
+void DomUI::clearElementClass()
+{
+    m_children &= ~Class;
+}
+
+void DomUI::clearElementWidget()
+{
+    delete m_widget;
+    m_widget = 0;
+    m_children &= ~Widget;
+}
+
+void DomUI::clearElementLayoutDefault()
+{
+    delete m_layoutDefault;
+    m_layoutDefault = 0;
+    m_children &= ~LayoutDefault;
+}
+
+void DomUI::clearElementLayoutFunction()
+{
+    delete m_layoutFunction;
+    m_layoutFunction = 0;
+    m_children &= ~LayoutFunction;
+}
+
+void DomUI::clearElementPixmapFunction()
+{
+    m_children &= ~PixmapFunction;
+}
+
+void DomUI::clearElementCustomWidgets()
+{
+    delete m_customWidgets;
+    m_customWidgets = 0;
+    m_children &= ~CustomWidgets;
+}
+
+void DomUI::clearElementTabStops()
+{
+    delete m_tabStops;
+    m_tabStops = 0;
+    m_children &= ~TabStops;
+}
+
+void DomUI::clearElementImages()
+{
+    delete m_images;
+    m_images = 0;
+    m_children &= ~Images;
+}
+
+void DomUI::clearElementIncludes()
+{
+    delete m_includes;
+    m_includes = 0;
+    m_children &= ~Includes;
+}
+
+void DomUI::clearElementResources()
+{
+    delete m_resources;
+    m_resources = 0;
+    m_children &= ~Resources;
+}
+
+void DomUI::clearElementConnections()
+{
+    delete m_connections;
+    m_connections = 0;
+    m_children &= ~Connections;
+}
+
+void DomUI::clearElementDesignerdata()
+{
+    delete m_designerdata;
+    m_designerdata = 0;
+    m_children &= ~Designerdata;
+}
+
+void DomUI::clearElementSlots()
+{
+    delete m_slots;
+    m_slots = 0;
+    m_children &= ~Slots;
+}
+
+void DomUI::clearElementButtonGroups()
+{
+    delete m_buttonGroups;
+    m_buttonGroups = 0;
+    m_children &= ~ButtonGroups;
+}
+
+void DomIncludes::clear(bool clear_all)
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomIncludes::DomIncludes()
+{
+    m_children = 0;
+}
+
+DomIncludes::~DomIncludes()
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+}
+
+void DomIncludes::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("include")) {
+                DomInclude *v = new DomInclude();
+                v->read(reader);
+                m_include.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomIncludes::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("include")) {
+                DomInclude *v = new DomInclude();
+                v->read(e);
+                m_include.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomIncludes::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("includes") : tagName.toLower());
+
+    for (int i = 0; i < m_include.size(); ++i) {
+        DomInclude* v = m_include[i];
+        v->write(writer, QLatin1String("include"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomIncludes::setElementInclude(const QList<DomInclude*>& a)
+{
+    m_children |= Include;
+    m_include = a;
+}
+
+void DomInclude::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text = QLatin1String("");
+    m_has_attr_location = false;
+    m_has_attr_impldecl = false;
+    }
+
+    m_children = 0;
+}
+
+DomInclude::DomInclude()
+{
+    m_children = 0;
+    m_has_attr_location = false;
+    m_has_attr_impldecl = false;
+    m_text = QLatin1String("");
+}
+
+DomInclude::~DomInclude()
+{
+}
+
+void DomInclude::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("location")) {
+            setAttributeLocation(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("impldecl")) {
+            setAttributeImpldecl(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomInclude::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("location")))
+        setAttributeLocation(node.attribute(QLatin1String("location")));
+    if (node.hasAttribute(QLatin1String("impldecl")))
+        setAttributeImpldecl(node.attribute(QLatin1String("impldecl")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text = QLatin1String("");
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomInclude::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("include") : tagName.toLower());
+
+    if (hasAttributeLocation())
+        writer.writeAttribute(QLatin1String("location"), attributeLocation());
+
+    if (hasAttributeImpldecl())
+        writer.writeAttribute(QLatin1String("impldecl"), attributeImpldecl());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomResources::clear(bool clear_all)
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomResources::DomResources()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomResources::~DomResources()
+{
+    qDeleteAll(m_include);
+    m_include.clear();
+}
+
+void DomResources::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("include")) {
+                DomResource *v = new DomResource();
+                v->read(reader);
+                m_include.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomResources::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("include")) {
+                DomResource *v = new DomResource();
+                v->read(e);
+                m_include.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomResources::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resources") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    for (int i = 0; i < m_include.size(); ++i) {
+        DomResource* v = m_include[i];
+        v->write(writer, QLatin1String("include"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomResources::setElementInclude(const QList<DomResource*>& a)
+{
+    m_children |= Include;
+    m_include = a;
+}
+
+void DomResource::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_location = false;
+    }
+
+    m_children = 0;
+}
+
+DomResource::DomResource()
+{
+    m_children = 0;
+    m_has_attr_location = false;
+}
+
+DomResource::~DomResource()
+{
+}
+
+void DomResource::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("location")) {
+            setAttributeLocation(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomResource::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("location")))
+        setAttributeLocation(node.attribute(QLatin1String("location")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomResource::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resource") : tagName.toLower());
+
+    if (hasAttributeLocation())
+        writer.writeAttribute(QLatin1String("location"), attributeLocation());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomActionGroup::clear(bool clear_all)
+{
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomActionGroup::DomActionGroup()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomActionGroup::~DomActionGroup()
+{
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+}
+
+void DomActionGroup::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("action")) {
+                DomAction *v = new DomAction();
+                v->read(reader);
+                m_action.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("actiongroup")) {
+                DomActionGroup *v = new DomActionGroup();
+                v->read(reader);
+                m_actionGroup.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomActionGroup::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("action")) {
+                DomAction *v = new DomAction();
+                v->read(e);
+                m_action.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("actiongroup")) {
+                DomActionGroup *v = new DomActionGroup();
+                v->read(e);
+                m_actionGroup.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_attribute.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomActionGroup::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("actiongroup") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    for (int i = 0; i < m_action.size(); ++i) {
+        DomAction* v = m_action[i];
+        v->write(writer, QLatin1String("action"));
+    }
+    for (int i = 0; i < m_actionGroup.size(); ++i) {
+        DomActionGroup* v = m_actionGroup[i];
+        v->write(writer, QLatin1String("actiongroup"));
+    }
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QLatin1String("attribute"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomActionGroup::setElementAction(const QList<DomAction*>& a)
+{
+    m_children |= Action;
+    m_action = a;
+}
+
+void DomActionGroup::setElementActionGroup(const QList<DomActionGroup*>& a)
+{
+    m_children |= ActionGroup;
+    m_actionGroup = a;
+}
+
+void DomActionGroup::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomActionGroup::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomAction::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    m_has_attr_menu = false;
+    }
+
+    m_children = 0;
+}
+
+DomAction::DomAction()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+    m_has_attr_menu = false;
+}
+
+DomAction::~DomAction()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+}
+
+void DomAction::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("menu")) {
+            setAttributeMenu(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomAction::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+    if (node.hasAttribute(QLatin1String("menu")))
+        setAttributeMenu(node.attribute(QLatin1String("menu")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_attribute.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomAction::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("action") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    if (hasAttributeMenu())
+        writer.writeAttribute(QLatin1String("menu"), attributeMenu());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QLatin1String("attribute"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomAction::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomAction::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomActionRef::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomActionRef::DomActionRef()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomActionRef::~DomActionRef()
+{
+}
+
+void DomActionRef::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomActionRef::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomActionRef::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("actionref") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomButtonGroup::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomButtonGroup::DomButtonGroup()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomButtonGroup::~DomButtonGroup()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+}
+
+void DomButtonGroup::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomButtonGroup::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_attribute.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomButtonGroup::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("buttongroup") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QLatin1String("attribute"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomButtonGroup::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomButtonGroup::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomButtonGroups::clear(bool clear_all)
+{
+    qDeleteAll(m_buttonGroup);
+    m_buttonGroup.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomButtonGroups::DomButtonGroups()
+{
+    m_children = 0;
+}
+
+DomButtonGroups::~DomButtonGroups()
+{
+    qDeleteAll(m_buttonGroup);
+    m_buttonGroup.clear();
+}
+
+void DomButtonGroups::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("buttongroup")) {
+                DomButtonGroup *v = new DomButtonGroup();
+                v->read(reader);
+                m_buttonGroup.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomButtonGroups::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("buttongroup")) {
+                DomButtonGroup *v = new DomButtonGroup();
+                v->read(e);
+                m_buttonGroup.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomButtonGroups::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("buttongroups") : tagName.toLower());
+
+    for (int i = 0; i < m_buttonGroup.size(); ++i) {
+        DomButtonGroup* v = m_buttonGroup[i];
+        v->write(writer, QLatin1String("buttongroup"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomButtonGroups::setElementButtonGroup(const QList<DomButtonGroup*>& a)
+{
+    m_children |= ButtonGroup;
+    m_buttonGroup = a;
+}
+
+void DomImages::clear(bool clear_all)
+{
+    qDeleteAll(m_image);
+    m_image.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomImages::DomImages()
+{
+    m_children = 0;
+}
+
+DomImages::~DomImages()
+{
+    qDeleteAll(m_image);
+    m_image.clear();
+}
+
+void DomImages::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("image")) {
+                DomImage *v = new DomImage();
+                v->read(reader);
+                m_image.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomImages::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("image")) {
+                DomImage *v = new DomImage();
+                v->read(e);
+                m_image.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomImages::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("images") : tagName.toLower());
+
+    for (int i = 0; i < m_image.size(); ++i) {
+        DomImage* v = m_image[i];
+        v->write(writer, QLatin1String("image"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomImages::setElementImage(const QList<DomImage*>& a)
+{
+    m_children |= Image;
+    m_image = a;
+}
+
+void DomImage::clear(bool clear_all)
+{
+    delete m_data;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+    m_data = 0;
+}
+
+DomImage::DomImage()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+    m_data = 0;
+}
+
+DomImage::~DomImage()
+{
+    delete m_data;
+}
+
+void DomImage::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("data")) {
+                DomImageData *v = new DomImageData();
+                v->read(reader);
+                setElementData(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomImage::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("data")) {
+                DomImageData *v = new DomImageData();
+                v->read(e);
+                setElementData(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomImage::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("image") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    if (m_children & Data) {
+        m_data->write(writer, QLatin1String("data"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomImageData* DomImage::takeElementData() 
+{
+    DomImageData* a = m_data;
+    m_data = 0;
+    m_children ^= Data;
+    return a;
+}
+
+void DomImage::setElementData(DomImageData* a)
+{
+    delete m_data;
+    m_children |= Data;
+    m_data = a;
+}
+
+void DomImage::clearElementData()
+{
+    delete m_data;
+    m_data = 0;
+    m_children &= ~Data;
+}
+
+void DomImageData::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text = QLatin1String("");
+    m_has_attr_format = false;
+    m_has_attr_length = false;
+    m_attr_length = 0;
+    }
+
+    m_children = 0;
+}
+
+DomImageData::DomImageData()
+{
+    m_children = 0;
+    m_has_attr_format = false;
+    m_has_attr_length = false;
+    m_attr_length = 0;
+    m_text = QLatin1String("");
+}
+
+DomImageData::~DomImageData()
+{
+}
+
+void DomImageData::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("format")) {
+            setAttributeFormat(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("length")) {
+            setAttributeLength(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomImageData::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("format")))
+        setAttributeFormat(node.attribute(QLatin1String("format")));
+    if (node.hasAttribute(QLatin1String("length")))
+        setAttributeLength(node.attribute(QLatin1String("length")).toInt());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text = QLatin1String("");
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomImageData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("imagedata") : tagName.toLower());
+
+    if (hasAttributeFormat())
+        writer.writeAttribute(QLatin1String("format"), attributeFormat());
+
+    if (hasAttributeLength())
+        writer.writeAttribute(QLatin1String("length"), QString::number(attributeLength()));
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidgets::clear(bool clear_all)
+{
+    qDeleteAll(m_customWidget);
+    m_customWidget.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomCustomWidgets::DomCustomWidgets()
+{
+    m_children = 0;
+}
+
+DomCustomWidgets::~DomCustomWidgets()
+{
+    qDeleteAll(m_customWidget);
+    m_customWidget.clear();
+}
+
+void DomCustomWidgets::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("customwidget")) {
+                DomCustomWidget *v = new DomCustomWidget();
+                v->read(reader);
+                m_customWidget.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomCustomWidgets::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("customwidget")) {
+                DomCustomWidget *v = new DomCustomWidget();
+                v->read(e);
+                m_customWidget.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomCustomWidgets::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("customwidgets") : tagName.toLower());
+
+    for (int i = 0; i < m_customWidget.size(); ++i) {
+        DomCustomWidget* v = m_customWidget[i];
+        v->write(writer, QLatin1String("customwidget"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidgets::setElementCustomWidget(const QList<DomCustomWidget*>& a)
+{
+    m_children |= CustomWidget;
+    m_customWidget = a;
+}
+
+void DomHeader::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text = QLatin1String("");
+    m_has_attr_location = false;
+    }
+
+    m_children = 0;
+}
+
+DomHeader::DomHeader()
+{
+    m_children = 0;
+    m_has_attr_location = false;
+    m_text = QLatin1String("");
+}
+
+DomHeader::~DomHeader()
+{
+}
+
+void DomHeader::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("location")) {
+            setAttributeLocation(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomHeader::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("location")))
+        setAttributeLocation(node.attribute(QLatin1String("location")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text = QLatin1String("");
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomHeader::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("header") : tagName.toLower());
+
+    if (hasAttributeLocation())
+        writer.writeAttribute(QLatin1String("location"), attributeLocation());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidget::clear(bool clear_all)
+{
+    delete m_header;
+    delete m_sizeHint;
+    delete m_sizePolicy;
+    delete m_script;
+    delete m_properties;
+    delete m_slots;
+    delete m_propertyspecifications;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_header = 0;
+    m_sizeHint = 0;
+    m_container = 0;
+    m_sizePolicy = 0;
+    m_script = 0;
+    m_properties = 0;
+    m_slots = 0;
+    m_propertyspecifications = 0;
+}
+
+DomCustomWidget::DomCustomWidget()
+{
+    m_children = 0;
+    m_header = 0;
+    m_sizeHint = 0;
+    m_container = 0;
+    m_sizePolicy = 0;
+    m_script = 0;
+    m_properties = 0;
+    m_slots = 0;
+    m_propertyspecifications = 0;
+}
+
+DomCustomWidget::~DomCustomWidget()
+{
+    delete m_header;
+    delete m_sizeHint;
+    delete m_sizePolicy;
+    delete m_script;
+    delete m_properties;
+    delete m_slots;
+    delete m_propertyspecifications;
+}
+
+void DomCustomWidget::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("class")) {
+                setElementClass(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("extends")) {
+                setElementExtends(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("header")) {
+                DomHeader *v = new DomHeader();
+                v->read(reader);
+                setElementHeader(v);
+                continue;
+            }
+            if (tag == QLatin1String("sizehint")) {
+                DomSize *v = new DomSize();
+                v->read(reader);
+                setElementSizeHint(v);
+                continue;
+            }
+            if (tag == QLatin1String("addpagemethod")) {
+                setElementAddPageMethod(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("container")) {
+                setElementContainer(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("sizepolicy")) {
+                DomSizePolicyData *v = new DomSizePolicyData();
+                v->read(reader);
+                setElementSizePolicy(v);
+                continue;
+            }
+            if (tag == QLatin1String("pixmap")) {
+                setElementPixmap(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("script")) {
+                DomScript *v = new DomScript();
+                v->read(reader);
+                setElementScript(v);
+                continue;
+            }
+            if (tag == QLatin1String("properties")) {
+                DomProperties *v = new DomProperties();
+                v->read(reader);
+                setElementProperties(v);
+                continue;
+            }
+            if (tag == QLatin1String("slots")) {
+                DomSlots *v = new DomSlots();
+                v->read(reader);
+                setElementSlots(v);
+                continue;
+            }
+            if (tag == QLatin1String("propertyspecifications")) {
+                DomPropertySpecifications *v = new DomPropertySpecifications();
+                v->read(reader);
+                setElementPropertyspecifications(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomCustomWidget::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("class")) {
+                setElementClass(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("extends")) {
+                setElementExtends(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("header")) {
+                DomHeader *v = new DomHeader();
+                v->read(e);
+                setElementHeader(v);
+                continue;
+            }
+            if (tag == QLatin1String("sizehint")) {
+                DomSize *v = new DomSize();
+                v->read(e);
+                setElementSizeHint(v);
+                continue;
+            }
+            if (tag == QLatin1String("addpagemethod")) {
+                setElementAddPageMethod(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("container")) {
+                setElementContainer(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("sizepolicy")) {
+                DomSizePolicyData *v = new DomSizePolicyData();
+                v->read(e);
+                setElementSizePolicy(v);
+                continue;
+            }
+            if (tag == QLatin1String("pixmap")) {
+                setElementPixmap(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("script")) {
+                DomScript *v = new DomScript();
+                v->read(e);
+                setElementScript(v);
+                continue;
+            }
+            if (tag == QLatin1String("properties")) {
+                DomProperties *v = new DomProperties();
+                v->read(e);
+                setElementProperties(v);
+                continue;
+            }
+            if (tag == QLatin1String("slots")) {
+                DomSlots *v = new DomSlots();
+                v->read(e);
+                setElementSlots(v);
+                continue;
+            }
+            if (tag == QLatin1String("propertyspecifications")) {
+                DomPropertySpecifications *v = new DomPropertySpecifications();
+                v->read(e);
+                setElementPropertyspecifications(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomCustomWidget::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("customwidget") : tagName.toLower());
+
+    if (m_children & Class) {
+        writer.writeTextElement(QLatin1String("class"), m_class);
+    }
+
+    if (m_children & Extends) {
+        writer.writeTextElement(QLatin1String("extends"), m_extends);
+    }
+
+    if (m_children & Header) {
+        m_header->write(writer, QLatin1String("header"));
+    }
+
+    if (m_children & SizeHint) {
+        m_sizeHint->write(writer, QLatin1String("sizehint"));
+    }
+
+    if (m_children & AddPageMethod) {
+        writer.writeTextElement(QLatin1String("addpagemethod"), m_addPageMethod);
+    }
+
+    if (m_children & Container) {
+        writer.writeTextElement(QLatin1String("container"), QString::number(m_container));
+    }
+
+    if (m_children & SizePolicy) {
+        m_sizePolicy->write(writer, QLatin1String("sizepolicy"));
+    }
+
+    if (m_children & Pixmap) {
+        writer.writeTextElement(QLatin1String("pixmap"), m_pixmap);
+    }
+
+    if (m_children & Script) {
+        m_script->write(writer, QLatin1String("script"));
+    }
+
+    if (m_children & Properties) {
+        m_properties->write(writer, QLatin1String("properties"));
+    }
+
+    if (m_children & Slots) {
+        m_slots->write(writer, QLatin1String("slots"));
+    }
+
+    if (m_children & Propertyspecifications) {
+        m_propertyspecifications->write(writer, QLatin1String("propertyspecifications"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomCustomWidget::setElementClass(const QString& a)
+{
+    m_children |= Class;
+    m_class = a;
+}
+
+void DomCustomWidget::setElementExtends(const QString& a)
+{
+    m_children |= Extends;
+    m_extends = a;
+}
+
+DomHeader* DomCustomWidget::takeElementHeader() 
+{
+    DomHeader* a = m_header;
+    m_header = 0;
+    m_children ^= Header;
+    return a;
+}
+
+void DomCustomWidget::setElementHeader(DomHeader* a)
+{
+    delete m_header;
+    m_children |= Header;
+    m_header = a;
+}
+
+DomSize* DomCustomWidget::takeElementSizeHint() 
+{
+    DomSize* a = m_sizeHint;
+    m_sizeHint = 0;
+    m_children ^= SizeHint;
+    return a;
+}
+
+void DomCustomWidget::setElementSizeHint(DomSize* a)
+{
+    delete m_sizeHint;
+    m_children |= SizeHint;
+    m_sizeHint = a;
+}
+
+void DomCustomWidget::setElementAddPageMethod(const QString& a)
+{
+    m_children |= AddPageMethod;
+    m_addPageMethod = a;
+}
+
+void DomCustomWidget::setElementContainer(int a)
+{
+    m_children |= Container;
+    m_container = a;
+}
+
+DomSizePolicyData* DomCustomWidget::takeElementSizePolicy() 
+{
+    DomSizePolicyData* a = m_sizePolicy;
+    m_sizePolicy = 0;
+    m_children ^= SizePolicy;
+    return a;
+}
+
+void DomCustomWidget::setElementSizePolicy(DomSizePolicyData* a)
+{
+    delete m_sizePolicy;
+    m_children |= SizePolicy;
+    m_sizePolicy = a;
+}
+
+void DomCustomWidget::setElementPixmap(const QString& a)
+{
+    m_children |= Pixmap;
+    m_pixmap = a;
+}
+
+DomScript* DomCustomWidget::takeElementScript() 
+{
+    DomScript* a = m_script;
+    m_script = 0;
+    m_children ^= Script;
+    return a;
+}
+
+void DomCustomWidget::setElementScript(DomScript* a)
+{
+    delete m_script;
+    m_children |= Script;
+    m_script = a;
+}
+
+DomProperties* DomCustomWidget::takeElementProperties() 
+{
+    DomProperties* a = m_properties;
+    m_properties = 0;
+    m_children ^= Properties;
+    return a;
+}
+
+void DomCustomWidget::setElementProperties(DomProperties* a)
+{
+    delete m_properties;
+    m_children |= Properties;
+    m_properties = a;
+}
+
+DomSlots* DomCustomWidget::takeElementSlots() 
+{
+    DomSlots* a = m_slots;
+    m_slots = 0;
+    m_children ^= Slots;
+    return a;
+}
+
+void DomCustomWidget::setElementSlots(DomSlots* a)
+{
+    delete m_slots;
+    m_children |= Slots;
+    m_slots = a;
+}
+
+DomPropertySpecifications* DomCustomWidget::takeElementPropertyspecifications() 
+{
+    DomPropertySpecifications* a = m_propertyspecifications;
+    m_propertyspecifications = 0;
+    m_children ^= Propertyspecifications;
+    return a;
+}
+
+void DomCustomWidget::setElementPropertyspecifications(DomPropertySpecifications* a)
+{
+    delete m_propertyspecifications;
+    m_children |= Propertyspecifications;
+    m_propertyspecifications = a;
+}
+
+void DomCustomWidget::clearElementClass()
+{
+    m_children &= ~Class;
+}
+
+void DomCustomWidget::clearElementExtends()
+{
+    m_children &= ~Extends;
+}
+
+void DomCustomWidget::clearElementHeader()
+{
+    delete m_header;
+    m_header = 0;
+    m_children &= ~Header;
+}
+
+void DomCustomWidget::clearElementSizeHint()
+{
+    delete m_sizeHint;
+    m_sizeHint = 0;
+    m_children &= ~SizeHint;
+}
+
+void DomCustomWidget::clearElementAddPageMethod()
+{
+    m_children &= ~AddPageMethod;
+}
+
+void DomCustomWidget::clearElementContainer()
+{
+    m_children &= ~Container;
+}
+
+void DomCustomWidget::clearElementSizePolicy()
+{
+    delete m_sizePolicy;
+    m_sizePolicy = 0;
+    m_children &= ~SizePolicy;
+}
+
+void DomCustomWidget::clearElementPixmap()
+{
+    m_children &= ~Pixmap;
+}
+
+void DomCustomWidget::clearElementScript()
+{
+    delete m_script;
+    m_script = 0;
+    m_children &= ~Script;
+}
+
+void DomCustomWidget::clearElementProperties()
+{
+    delete m_properties;
+    m_properties = 0;
+    m_children &= ~Properties;
+}
+
+void DomCustomWidget::clearElementSlots()
+{
+    delete m_slots;
+    m_slots = 0;
+    m_children &= ~Slots;
+}
+
+void DomCustomWidget::clearElementPropertyspecifications()
+{
+    delete m_propertyspecifications;
+    m_propertyspecifications = 0;
+    m_children &= ~Propertyspecifications;
+}
+
+void DomProperties::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomProperties::DomProperties()
+{
+    m_children = 0;
+}
+
+DomProperties::~DomProperties()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomProperties::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomPropertyData *v = new DomPropertyData();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomProperties::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomPropertyData *v = new DomPropertyData();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomProperties::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("properties") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomPropertyData* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomProperties::setElementProperty(const QList<DomPropertyData*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomPropertyData::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_type = false;
+    }
+
+    m_children = 0;
+}
+
+DomPropertyData::DomPropertyData()
+{
+    m_children = 0;
+    m_has_attr_type = false;
+}
+
+DomPropertyData::~DomPropertyData()
+{
+}
+
+void DomPropertyData::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomPropertyData::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("type")))
+        setAttributeType(node.attribute(QLatin1String("type")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomPropertyData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("propertydata") : tagName.toLower());
+
+    if (hasAttributeType())
+        writer.writeAttribute(QLatin1String("type"), attributeType());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicyData::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_horData = 0;
+    m_verData = 0;
+}
+
+DomSizePolicyData::DomSizePolicyData()
+{
+    m_children = 0;
+    m_horData = 0;
+    m_verData = 0;
+}
+
+DomSizePolicyData::~DomSizePolicyData()
+{
+}
+
+void DomSizePolicyData::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("hordata")) {
+                setElementHorData(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("verdata")) {
+                setElementVerData(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomSizePolicyData::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("hordata")) {
+                setElementHorData(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("verdata")) {
+                setElementVerData(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomSizePolicyData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizepolicydata") : tagName.toLower());
+
+    if (m_children & HorData) {
+        writer.writeTextElement(QLatin1String("hordata"), QString::number(m_horData));
+    }
+
+    if (m_children & VerData) {
+        writer.writeTextElement(QLatin1String("verdata"), QString::number(m_verData));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicyData::setElementHorData(int a)
+{
+    m_children |= HorData;
+    m_horData = a;
+}
+
+void DomSizePolicyData::setElementVerData(int a)
+{
+    m_children |= VerData;
+    m_verData = a;
+}
+
+void DomSizePolicyData::clearElementHorData()
+{
+    m_children &= ~HorData;
+}
+
+void DomSizePolicyData::clearElementVerData()
+{
+    m_children &= ~VerData;
+}
+
+void DomLayoutDefault::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_spacing = false;
+    m_attr_spacing = 0;
+    m_has_attr_margin = false;
+    m_attr_margin = 0;
+    }
+
+    m_children = 0;
+}
+
+DomLayoutDefault::DomLayoutDefault()
+{
+    m_children = 0;
+    m_has_attr_spacing = false;
+    m_attr_spacing = 0;
+    m_has_attr_margin = false;
+    m_attr_margin = 0;
+}
+
+DomLayoutDefault::~DomLayoutDefault()
+{
+}
+
+void DomLayoutDefault::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("spacing")) {
+            setAttributeSpacing(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QLatin1String("margin")) {
+            setAttributeMargin(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomLayoutDefault::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("spacing")))
+        setAttributeSpacing(node.attribute(QLatin1String("spacing")).toInt());
+    if (node.hasAttribute(QLatin1String("margin")))
+        setAttributeMargin(node.attribute(QLatin1String("margin")).toInt());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomLayoutDefault::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutdefault") : tagName.toLower());
+
+    if (hasAttributeSpacing())
+        writer.writeAttribute(QLatin1String("spacing"), QString::number(attributeSpacing()));
+
+    if (hasAttributeMargin())
+        writer.writeAttribute(QLatin1String("margin"), QString::number(attributeMargin()));
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomLayoutFunction::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_spacing = false;
+    m_has_attr_margin = false;
+    }
+
+    m_children = 0;
+}
+
+DomLayoutFunction::DomLayoutFunction()
+{
+    m_children = 0;
+    m_has_attr_spacing = false;
+    m_has_attr_margin = false;
+}
+
+DomLayoutFunction::~DomLayoutFunction()
+{
+}
+
+void DomLayoutFunction::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("spacing")) {
+            setAttributeSpacing(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("margin")) {
+            setAttributeMargin(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomLayoutFunction::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("spacing")))
+        setAttributeSpacing(node.attribute(QLatin1String("spacing")));
+    if (node.hasAttribute(QLatin1String("margin")))
+        setAttributeMargin(node.attribute(QLatin1String("margin")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomLayoutFunction::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutfunction") : tagName.toLower());
+
+    if (hasAttributeSpacing())
+        writer.writeAttribute(QLatin1String("spacing"), attributeSpacing());
+
+    if (hasAttributeMargin())
+        writer.writeAttribute(QLatin1String("margin"), attributeMargin());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomTabStops::clear(bool clear_all)
+{
+    m_tabStop.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomTabStops::DomTabStops()
+{
+    m_children = 0;
+}
+
+DomTabStops::~DomTabStops()
+{
+    m_tabStop.clear();
+}
+
+void DomTabStops::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("tabstop")) {
+                m_tabStop.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomTabStops::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("tabstop")) {
+                m_tabStop.append(e.text());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomTabStops::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("tabstops") : tagName.toLower());
+
+    for (int i = 0; i < m_tabStop.size(); ++i) {
+        QString v = m_tabStop[i];
+        writer.writeTextElement(QLatin1String("tabstop"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomTabStops::setElementTabStop(const QStringList& a)
+{
+    m_children |= TabStop;
+    m_tabStop = a;
+}
+
+void DomLayout::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_stretch = false;
+    m_has_attr_rowStretch = false;
+    m_has_attr_columnStretch = false;
+    m_has_attr_rowMinimumHeight = false;
+    m_has_attr_columnMinimumWidth = false;
+    }
+
+    m_children = 0;
+}
+
+DomLayout::DomLayout()
+{
+    m_children = 0;
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_stretch = false;
+    m_has_attr_rowStretch = false;
+    m_has_attr_columnStretch = false;
+    m_has_attr_rowMinimumHeight = false;
+    m_has_attr_columnMinimumWidth = false;
+}
+
+DomLayout::~DomLayout()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+}
+
+void DomLayout::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("class")) {
+            setAttributeClass(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("stretch")) {
+            setAttributeStretch(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("rowstretch")) {
+            setAttributeRowStretch(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("columnstretch")) {
+            setAttributeColumnStretch(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("rowminimumheight")) {
+            setAttributeRowMinimumHeight(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("columnminimumwidth")) {
+            setAttributeColumnMinimumWidth(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("item")) {
+                DomLayoutItem *v = new DomLayoutItem();
+                v->read(reader);
+                m_item.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomLayout::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("class")))
+        setAttributeClass(node.attribute(QLatin1String("class")));
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+    if (node.hasAttribute(QLatin1String("stretch")))
+        setAttributeStretch(node.attribute(QLatin1String("stretch")));
+    if (node.hasAttribute(QLatin1String("rowstretch")))
+        setAttributeRowStretch(node.attribute(QLatin1String("rowstretch")));
+    if (node.hasAttribute(QLatin1String("columnstretch")))
+        setAttributeColumnStretch(node.attribute(QLatin1String("columnstretch")));
+    if (node.hasAttribute(QLatin1String("rowminimumheight")))
+        setAttributeRowMinimumHeight(node.attribute(QLatin1String("rowminimumheight")));
+    if (node.hasAttribute(QLatin1String("columnminimumwidth")))
+        setAttributeColumnMinimumWidth(node.attribute(QLatin1String("columnminimumwidth")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_attribute.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("item")) {
+                DomLayoutItem *v = new DomLayoutItem();
+                v->read(e);
+                m_item.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomLayout::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layout") : tagName.toLower());
+
+    if (hasAttributeClass())
+        writer.writeAttribute(QLatin1String("class"), attributeClass());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    if (hasAttributeStretch())
+        writer.writeAttribute(QLatin1String("stretch"), attributeStretch());
+
+    if (hasAttributeRowStretch())
+        writer.writeAttribute(QLatin1String("rowstretch"), attributeRowStretch());
+
+    if (hasAttributeColumnStretch())
+        writer.writeAttribute(QLatin1String("columnstretch"), attributeColumnStretch());
+
+    if (hasAttributeRowMinimumHeight())
+        writer.writeAttribute(QLatin1String("rowminimumheight"), attributeRowMinimumHeight());
+
+    if (hasAttributeColumnMinimumWidth())
+        writer.writeAttribute(QLatin1String("columnminimumwidth"), attributeColumnMinimumWidth());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QLatin1String("attribute"));
+    }
+    for (int i = 0; i < m_item.size(); ++i) {
+        DomLayoutItem* v = m_item[i];
+        v->write(writer, QLatin1String("item"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomLayout::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomLayout::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomLayout::setElementItem(const QList<DomLayoutItem*>& a)
+{
+    m_children |= Item;
+    m_item = a;
+}
+
+void DomLayoutItem::clear(bool clear_all)
+{
+    delete m_widget;
+    delete m_layout;
+    delete m_spacer;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+    m_has_attr_rowSpan = false;
+    m_attr_rowSpan = 0;
+    m_has_attr_colSpan = false;
+    m_attr_colSpan = 0;
+    }
+
+    m_kind = Unknown;
+
+    m_widget = 0;
+    m_layout = 0;
+    m_spacer = 0;
+}
+
+DomLayoutItem::DomLayoutItem()
+{
+    m_kind = Unknown;
+
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+    m_has_attr_rowSpan = false;
+    m_attr_rowSpan = 0;
+    m_has_attr_colSpan = false;
+    m_attr_colSpan = 0;
+    m_widget = 0;
+    m_layout = 0;
+    m_spacer = 0;
+}
+
+DomLayoutItem::~DomLayoutItem()
+{
+    delete m_widget;
+    delete m_layout;
+    delete m_spacer;
+}
+
+void DomLayoutItem::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("row")) {
+            setAttributeRow(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QLatin1String("column")) {
+            setAttributeColumn(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QLatin1String("rowspan")) {
+            setAttributeRowSpan(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QLatin1String("colspan")) {
+            setAttributeColSpan(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(reader);
+                setElementWidget(v);
+                continue;
+            }
+            if (tag == QLatin1String("layout")) {
+                DomLayout *v = new DomLayout();
+                v->read(reader);
+                setElementLayout(v);
+                continue;
+            }
+            if (tag == QLatin1String("spacer")) {
+                DomSpacer *v = new DomSpacer();
+                v->read(reader);
+                setElementSpacer(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomLayoutItem::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("row")))
+        setAttributeRow(node.attribute(QLatin1String("row")).toInt());
+    if (node.hasAttribute(QLatin1String("column")))
+        setAttributeColumn(node.attribute(QLatin1String("column")).toInt());
+    if (node.hasAttribute(QLatin1String("rowspan")))
+        setAttributeRowSpan(node.attribute(QLatin1String("rowspan")).toInt());
+    if (node.hasAttribute(QLatin1String("colspan")))
+        setAttributeColSpan(node.attribute(QLatin1String("colspan")).toInt());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(e);
+                setElementWidget(v);
+                continue;
+            }
+            if (tag == QLatin1String("layout")) {
+                DomLayout *v = new DomLayout();
+                v->read(e);
+                setElementLayout(v);
+                continue;
+            }
+            if (tag == QLatin1String("spacer")) {
+                DomSpacer *v = new DomSpacer();
+                v->read(e);
+                setElementSpacer(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomLayoutItem::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutitem") : tagName.toLower());
+
+    if (hasAttributeRow())
+        writer.writeAttribute(QLatin1String("row"), QString::number(attributeRow()));
+
+    if (hasAttributeColumn())
+        writer.writeAttribute(QLatin1String("column"), QString::number(attributeColumn()));
+
+    if (hasAttributeRowSpan())
+        writer.writeAttribute(QLatin1String("rowspan"), QString::number(attributeRowSpan()));
+
+    if (hasAttributeColSpan())
+        writer.writeAttribute(QLatin1String("colspan"), QString::number(attributeColSpan()));
+
+    switch (kind()) {
+        case Widget: {
+            DomWidget* v = elementWidget();
+            if (v != 0) {
+                v->write(writer, QLatin1String("widget"));
+            }
+            break;
+        }
+        case Layout: {
+            DomLayout* v = elementLayout();
+            if (v != 0) {
+                v->write(writer, QLatin1String("layout"));
+            }
+            break;
+        }
+        case Spacer: {
+            DomSpacer* v = elementSpacer();
+            if (v != 0) {
+                v->write(writer, QLatin1String("spacer"));
+            }
+            break;
+        }
+        default:
+            break;
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomWidget* DomLayoutItem::takeElementWidget() 
+{
+    DomWidget* a = m_widget;
+    m_widget = 0;
+    return a;
+}
+
+void DomLayoutItem::setElementWidget(DomWidget* a)
+{
+    clear(false);
+    m_kind = Widget;
+    m_widget = a;
+}
+
+DomLayout* DomLayoutItem::takeElementLayout() 
+{
+    DomLayout* a = m_layout;
+    m_layout = 0;
+    return a;
+}
+
+void DomLayoutItem::setElementLayout(DomLayout* a)
+{
+    clear(false);
+    m_kind = Layout;
+    m_layout = a;
+}
+
+DomSpacer* DomLayoutItem::takeElementSpacer() 
+{
+    DomSpacer* a = m_spacer;
+    m_spacer = 0;
+    return a;
+}
+
+void DomLayoutItem::setElementSpacer(DomSpacer* a)
+{
+    clear(false);
+    m_kind = Spacer;
+    m_spacer = a;
+}
+
+void DomRow::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomRow::DomRow()
+{
+    m_children = 0;
+}
+
+DomRow::~DomRow()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomRow::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomRow::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomRow::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("row") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomRow::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomColumn::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomColumn::DomColumn()
+{
+    m_children = 0;
+}
+
+DomColumn::~DomColumn()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomColumn::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomColumn::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomColumn::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("column") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomColumn::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomItem::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+    }
+
+    m_children = 0;
+}
+
+DomItem::DomItem()
+{
+    m_children = 0;
+    m_has_attr_row = false;
+    m_attr_row = 0;
+    m_has_attr_column = false;
+    m_attr_column = 0;
+}
+
+DomItem::~DomItem()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+}
+
+void DomItem::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("row")) {
+            setAttributeRow(attribute.value().toString().toInt());
+            continue;
+        }
+        if (name == QLatin1String("column")) {
+            setAttributeColumn(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("item")) {
+                DomItem *v = new DomItem();
+                v->read(reader);
+                m_item.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomItem::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("row")))
+        setAttributeRow(node.attribute(QLatin1String("row")).toInt());
+    if (node.hasAttribute(QLatin1String("column")))
+        setAttributeColumn(node.attribute(QLatin1String("column")).toInt());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("item")) {
+                DomItem *v = new DomItem();
+                v->read(e);
+                m_item.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomItem::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("item") : tagName.toLower());
+
+    if (hasAttributeRow())
+        writer.writeAttribute(QLatin1String("row"), QString::number(attributeRow()));
+
+    if (hasAttributeColumn())
+        writer.writeAttribute(QLatin1String("column"), QString::number(attributeColumn()));
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    for (int i = 0; i < m_item.size(); ++i) {
+        DomItem* v = m_item[i];
+        v->write(writer, QLatin1String("item"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomItem::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomItem::setElementItem(const QList<DomItem*>& a)
+{
+    m_children |= Item;
+    m_item = a;
+}
+
+void DomWidget::clear(bool clear_all)
+{
+    m_class.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_script);
+    m_script.clear();
+    qDeleteAll(m_widgetData);
+    m_widgetData.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_row);
+    m_row.clear();
+    qDeleteAll(m_column);
+    m_column.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+    qDeleteAll(m_layout);
+    m_layout.clear();
+    qDeleteAll(m_widget);
+    m_widget.clear();
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_addAction);
+    m_addAction.clear();
+    m_zOrder.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_native = false;
+    m_attr_native = false;
+    }
+
+    m_children = 0;
+}
+
+DomWidget::DomWidget()
+{
+    m_children = 0;
+    m_has_attr_class = false;
+    m_has_attr_name = false;
+    m_has_attr_native = false;
+    m_attr_native = false;
+}
+
+DomWidget::~DomWidget()
+{
+    m_class.clear();
+    qDeleteAll(m_property);
+    m_property.clear();
+    qDeleteAll(m_script);
+    m_script.clear();
+    qDeleteAll(m_widgetData);
+    m_widgetData.clear();
+    qDeleteAll(m_attribute);
+    m_attribute.clear();
+    qDeleteAll(m_row);
+    m_row.clear();
+    qDeleteAll(m_column);
+    m_column.clear();
+    qDeleteAll(m_item);
+    m_item.clear();
+    qDeleteAll(m_layout);
+    m_layout.clear();
+    qDeleteAll(m_widget);
+    m_widget.clear();
+    qDeleteAll(m_action);
+    m_action.clear();
+    qDeleteAll(m_actionGroup);
+    m_actionGroup.clear();
+    qDeleteAll(m_addAction);
+    m_addAction.clear();
+    m_zOrder.clear();
+}
+
+void DomWidget::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("class")) {
+            setAttributeClass(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("native")) {
+            setAttributeNative((attribute.value().toString() == QLatin1String("true") ? true : false));
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("class")) {
+                m_class.append(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("script")) {
+                DomScript *v = new DomScript();
+                v->read(reader);
+                m_script.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("widgetdata")) {
+                DomWidgetData *v = new DomWidgetData();
+                v->read(reader);
+                m_widgetData.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_attribute.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("row")) {
+                DomRow *v = new DomRow();
+                v->read(reader);
+                m_row.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("column")) {
+                DomColumn *v = new DomColumn();
+                v->read(reader);
+                m_column.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("item")) {
+                DomItem *v = new DomItem();
+                v->read(reader);
+                m_item.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("layout")) {
+                DomLayout *v = new DomLayout();
+                v->read(reader);
+                m_layout.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(reader);
+                m_widget.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("action")) {
+                DomAction *v = new DomAction();
+                v->read(reader);
+                m_action.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("actiongroup")) {
+                DomActionGroup *v = new DomActionGroup();
+                v->read(reader);
+                m_actionGroup.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("addaction")) {
+                DomActionRef *v = new DomActionRef();
+                v->read(reader);
+                m_addAction.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("zorder")) {
+                m_zOrder.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomWidget::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("class")))
+        setAttributeClass(node.attribute(QLatin1String("class")));
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+    if (node.hasAttribute(QLatin1String("native")))
+        setAttributeNative((node.attribute(QLatin1String("native")) == QLatin1String("true") ? true : false));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("class")) {
+                m_class.append(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("script")) {
+                DomScript *v = new DomScript();
+                v->read(e);
+                m_script.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("widgetdata")) {
+                DomWidgetData *v = new DomWidgetData();
+                v->read(e);
+                m_widgetData.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("attribute")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_attribute.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("row")) {
+                DomRow *v = new DomRow();
+                v->read(e);
+                m_row.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("column")) {
+                DomColumn *v = new DomColumn();
+                v->read(e);
+                m_column.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("item")) {
+                DomItem *v = new DomItem();
+                v->read(e);
+                m_item.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("layout")) {
+                DomLayout *v = new DomLayout();
+                v->read(e);
+                m_layout.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("widget")) {
+                DomWidget *v = new DomWidget();
+                v->read(e);
+                m_widget.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("action")) {
+                DomAction *v = new DomAction();
+                v->read(e);
+                m_action.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("actiongroup")) {
+                DomActionGroup *v = new DomActionGroup();
+                v->read(e);
+                m_actionGroup.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("addaction")) {
+                DomActionRef *v = new DomActionRef();
+                v->read(e);
+                m_addAction.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("zorder")) {
+                m_zOrder.append(e.text());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomWidget::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("widget") : tagName.toLower());
+
+    if (hasAttributeClass())
+        writer.writeAttribute(QLatin1String("class"), attributeClass());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    if (hasAttributeNative())
+        writer.writeAttribute(QLatin1String("native"), (attributeNative() ? QLatin1String("true") : QLatin1String("false")));
+
+    for (int i = 0; i < m_class.size(); ++i) {
+        QString v = m_class[i];
+        writer.writeTextElement(QLatin1String("class"), v);
+    }
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    for (int i = 0; i < m_script.size(); ++i) {
+        DomScript* v = m_script[i];
+        v->write(writer, QLatin1String("script"));
+    }
+    for (int i = 0; i < m_widgetData.size(); ++i) {
+        DomWidgetData* v = m_widgetData[i];
+        v->write(writer, QLatin1String("widgetdata"));
+    }
+    for (int i = 0; i < m_attribute.size(); ++i) {
+        DomProperty* v = m_attribute[i];
+        v->write(writer, QLatin1String("attribute"));
+    }
+    for (int i = 0; i < m_row.size(); ++i) {
+        DomRow* v = m_row[i];
+        v->write(writer, QLatin1String("row"));
+    }
+    for (int i = 0; i < m_column.size(); ++i) {
+        DomColumn* v = m_column[i];
+        v->write(writer, QLatin1String("column"));
+    }
+    for (int i = 0; i < m_item.size(); ++i) {
+        DomItem* v = m_item[i];
+        v->write(writer, QLatin1String("item"));
+    }
+    for (int i = 0; i < m_layout.size(); ++i) {
+        DomLayout* v = m_layout[i];
+        v->write(writer, QLatin1String("layout"));
+    }
+    for (int i = 0; i < m_widget.size(); ++i) {
+        DomWidget* v = m_widget[i];
+        v->write(writer, QLatin1String("widget"));
+    }
+    for (int i = 0; i < m_action.size(); ++i) {
+        DomAction* v = m_action[i];
+        v->write(writer, QLatin1String("action"));
+    }
+    for (int i = 0; i < m_actionGroup.size(); ++i) {
+        DomActionGroup* v = m_actionGroup[i];
+        v->write(writer, QLatin1String("actiongroup"));
+    }
+    for (int i = 0; i < m_addAction.size(); ++i) {
+        DomActionRef* v = m_addAction[i];
+        v->write(writer, QLatin1String("addaction"));
+    }
+    for (int i = 0; i < m_zOrder.size(); ++i) {
+        QString v = m_zOrder[i];
+        writer.writeTextElement(QLatin1String("zorder"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomWidget::setElementClass(const QStringList& a)
+{
+    m_children |= Class;
+    m_class = a;
+}
+
+void DomWidget::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomWidget::setElementScript(const QList<DomScript*>& a)
+{
+    m_children |= Script;
+    m_script = a;
+}
+
+void DomWidget::setElementWidgetData(const QList<DomWidgetData*>& a)
+{
+    m_children |= WidgetData;
+    m_widgetData = a;
+}
+
+void DomWidget::setElementAttribute(const QList<DomProperty*>& a)
+{
+    m_children |= Attribute;
+    m_attribute = a;
+}
+
+void DomWidget::setElementRow(const QList<DomRow*>& a)
+{
+    m_children |= Row;
+    m_row = a;
+}
+
+void DomWidget::setElementColumn(const QList<DomColumn*>& a)
+{
+    m_children |= Column;
+    m_column = a;
+}
+
+void DomWidget::setElementItem(const QList<DomItem*>& a)
+{
+    m_children |= Item;
+    m_item = a;
+}
+
+void DomWidget::setElementLayout(const QList<DomLayout*>& a)
+{
+    m_children |= Layout;
+    m_layout = a;
+}
+
+void DomWidget::setElementWidget(const QList<DomWidget*>& a)
+{
+    m_children |= Widget;
+    m_widget = a;
+}
+
+void DomWidget::setElementAction(const QList<DomAction*>& a)
+{
+    m_children |= Action;
+    m_action = a;
+}
+
+void DomWidget::setElementActionGroup(const QList<DomActionGroup*>& a)
+{
+    m_children |= ActionGroup;
+    m_actionGroup = a;
+}
+
+void DomWidget::setElementAddAction(const QList<DomActionRef*>& a)
+{
+    m_children |= AddAction;
+    m_addAction = a;
+}
+
+void DomWidget::setElementZOrder(const QStringList& a)
+{
+    m_children |= ZOrder;
+    m_zOrder = a;
+}
+
+void DomSpacer::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    }
+
+    m_children = 0;
+}
+
+DomSpacer::DomSpacer()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+}
+
+DomSpacer::~DomSpacer()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomSpacer::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomSpacer::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomSpacer::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("spacer") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSpacer::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomColor::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_alpha = false;
+    m_attr_alpha = 0;
+    }
+
+    m_children = 0;
+    m_red = 0;
+    m_green = 0;
+    m_blue = 0;
+}
+
+DomColor::DomColor()
+{
+    m_children = 0;
+    m_has_attr_alpha = false;
+    m_attr_alpha = 0;
+    m_red = 0;
+    m_green = 0;
+    m_blue = 0;
+}
+
+DomColor::~DomColor()
+{
+}
+
+void DomColor::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("alpha")) {
+            setAttributeAlpha(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("red")) {
+                setElementRed(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("green")) {
+                setElementGreen(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("blue")) {
+                setElementBlue(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomColor::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("alpha")))
+        setAttributeAlpha(node.attribute(QLatin1String("alpha")).toInt());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("red")) {
+                setElementRed(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("green")) {
+                setElementGreen(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("blue")) {
+                setElementBlue(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomColor::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("color") : tagName.toLower());
+
+    if (hasAttributeAlpha())
+        writer.writeAttribute(QLatin1String("alpha"), QString::number(attributeAlpha()));
+
+    if (m_children & Red) {
+        writer.writeTextElement(QLatin1String("red"), QString::number(m_red));
+    }
+
+    if (m_children & Green) {
+        writer.writeTextElement(QLatin1String("green"), QString::number(m_green));
+    }
+
+    if (m_children & Blue) {
+        writer.writeTextElement(QLatin1String("blue"), QString::number(m_blue));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomColor::setElementRed(int a)
+{
+    m_children |= Red;
+    m_red = a;
+}
+
+void DomColor::setElementGreen(int a)
+{
+    m_children |= Green;
+    m_green = a;
+}
+
+void DomColor::setElementBlue(int a)
+{
+    m_children |= Blue;
+    m_blue = a;
+}
+
+void DomColor::clearElementRed()
+{
+    m_children &= ~Red;
+}
+
+void DomColor::clearElementGreen()
+{
+    m_children &= ~Green;
+}
+
+void DomColor::clearElementBlue()
+{
+    m_children &= ~Blue;
+}
+
+void DomGradientStop::clear(bool clear_all)
+{
+    delete m_color;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_position = false;
+    m_attr_position = 0.0;
+    }
+
+    m_children = 0;
+    m_color = 0;
+}
+
+DomGradientStop::DomGradientStop()
+{
+    m_children = 0;
+    m_has_attr_position = false;
+    m_attr_position = 0.0;
+    m_color = 0;
+}
+
+DomGradientStop::~DomGradientStop()
+{
+    delete m_color;
+}
+
+void DomGradientStop::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("position")) {
+            setAttributePosition(attribute.value().toString().toDouble());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                setElementColor(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomGradientStop::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("position")))
+        setAttributePosition(node.attribute(QLatin1String("position")).toDouble());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(e);
+                setElementColor(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomGradientStop::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("gradientstop") : tagName.toLower());
+
+    if (hasAttributePosition())
+        writer.writeAttribute(QLatin1String("position"), QString::number(attributePosition(), 'f', 15));
+
+    if (m_children & Color) {
+        m_color->write(writer, QLatin1String("color"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomColor* DomGradientStop::takeElementColor() 
+{
+    DomColor* a = m_color;
+    m_color = 0;
+    m_children ^= Color;
+    return a;
+}
+
+void DomGradientStop::setElementColor(DomColor* a)
+{
+    delete m_color;
+    m_children |= Color;
+    m_color = a;
+}
+
+void DomGradientStop::clearElementColor()
+{
+    delete m_color;
+    m_color = 0;
+    m_children &= ~Color;
+}
+
+void DomGradient::clear(bool clear_all)
+{
+    qDeleteAll(m_gradientStop);
+    m_gradientStop.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_startX = false;
+    m_attr_startX = 0.0;
+    m_has_attr_startY = false;
+    m_attr_startY = 0.0;
+    m_has_attr_endX = false;
+    m_attr_endX = 0.0;
+    m_has_attr_endY = false;
+    m_attr_endY = 0.0;
+    m_has_attr_centralX = false;
+    m_attr_centralX = 0.0;
+    m_has_attr_centralY = false;
+    m_attr_centralY = 0.0;
+    m_has_attr_focalX = false;
+    m_attr_focalX = 0.0;
+    m_has_attr_focalY = false;
+    m_attr_focalY = 0.0;
+    m_has_attr_radius = false;
+    m_attr_radius = 0.0;
+    m_has_attr_angle = false;
+    m_attr_angle = 0.0;
+    m_has_attr_type = false;
+    m_has_attr_spread = false;
+    m_has_attr_coordinateMode = false;
+    }
+
+    m_children = 0;
+}
+
+DomGradient::DomGradient()
+{
+    m_children = 0;
+    m_has_attr_startX = false;
+    m_attr_startX = 0.0;
+    m_has_attr_startY = false;
+    m_attr_startY = 0.0;
+    m_has_attr_endX = false;
+    m_attr_endX = 0.0;
+    m_has_attr_endY = false;
+    m_attr_endY = 0.0;
+    m_has_attr_centralX = false;
+    m_attr_centralX = 0.0;
+    m_has_attr_centralY = false;
+    m_attr_centralY = 0.0;
+    m_has_attr_focalX = false;
+    m_attr_focalX = 0.0;
+    m_has_attr_focalY = false;
+    m_attr_focalY = 0.0;
+    m_has_attr_radius = false;
+    m_attr_radius = 0.0;
+    m_has_attr_angle = false;
+    m_attr_angle = 0.0;
+    m_has_attr_type = false;
+    m_has_attr_spread = false;
+    m_has_attr_coordinateMode = false;
+}
+
+DomGradient::~DomGradient()
+{
+    qDeleteAll(m_gradientStop);
+    m_gradientStop.clear();
+}
+
+void DomGradient::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("startx")) {
+            setAttributeStartX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("starty")) {
+            setAttributeStartY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("endx")) {
+            setAttributeEndX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("endy")) {
+            setAttributeEndY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("centralx")) {
+            setAttributeCentralX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("centraly")) {
+            setAttributeCentralY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("focalx")) {
+            setAttributeFocalX(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("focaly")) {
+            setAttributeFocalY(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("radius")) {
+            setAttributeRadius(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("angle")) {
+            setAttributeAngle(attribute.value().toString().toDouble());
+            continue;
+        }
+        if (name == QLatin1String("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("spread")) {
+            setAttributeSpread(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("coordinatemode")) {
+            setAttributeCoordinateMode(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("gradientstop")) {
+                DomGradientStop *v = new DomGradientStop();
+                v->read(reader);
+                m_gradientStop.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomGradient::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("startx")))
+        setAttributeStartX(node.attribute(QLatin1String("startx")).toDouble());
+    if (node.hasAttribute(QLatin1String("starty")))
+        setAttributeStartY(node.attribute(QLatin1String("starty")).toDouble());
+    if (node.hasAttribute(QLatin1String("endx")))
+        setAttributeEndX(node.attribute(QLatin1String("endx")).toDouble());
+    if (node.hasAttribute(QLatin1String("endy")))
+        setAttributeEndY(node.attribute(QLatin1String("endy")).toDouble());
+    if (node.hasAttribute(QLatin1String("centralx")))
+        setAttributeCentralX(node.attribute(QLatin1String("centralx")).toDouble());
+    if (node.hasAttribute(QLatin1String("centraly")))
+        setAttributeCentralY(node.attribute(QLatin1String("centraly")).toDouble());
+    if (node.hasAttribute(QLatin1String("focalx")))
+        setAttributeFocalX(node.attribute(QLatin1String("focalx")).toDouble());
+    if (node.hasAttribute(QLatin1String("focaly")))
+        setAttributeFocalY(node.attribute(QLatin1String("focaly")).toDouble());
+    if (node.hasAttribute(QLatin1String("radius")))
+        setAttributeRadius(node.attribute(QLatin1String("radius")).toDouble());
+    if (node.hasAttribute(QLatin1String("angle")))
+        setAttributeAngle(node.attribute(QLatin1String("angle")).toDouble());
+    if (node.hasAttribute(QLatin1String("type")))
+        setAttributeType(node.attribute(QLatin1String("type")));
+    if (node.hasAttribute(QLatin1String("spread")))
+        setAttributeSpread(node.attribute(QLatin1String("spread")));
+    if (node.hasAttribute(QLatin1String("coordinatemode")))
+        setAttributeCoordinateMode(node.attribute(QLatin1String("coordinatemode")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("gradientstop")) {
+                DomGradientStop *v = new DomGradientStop();
+                v->read(e);
+                m_gradientStop.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomGradient::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("gradient") : tagName.toLower());
+
+    if (hasAttributeStartX())
+        writer.writeAttribute(QLatin1String("startx"), QString::number(attributeStartX(), 'f', 15));
+
+    if (hasAttributeStartY())
+        writer.writeAttribute(QLatin1String("starty"), QString::number(attributeStartY(), 'f', 15));
+
+    if (hasAttributeEndX())
+        writer.writeAttribute(QLatin1String("endx"), QString::number(attributeEndX(), 'f', 15));
+
+    if (hasAttributeEndY())
+        writer.writeAttribute(QLatin1String("endy"), QString::number(attributeEndY(), 'f', 15));
+
+    if (hasAttributeCentralX())
+        writer.writeAttribute(QLatin1String("centralx"), QString::number(attributeCentralX(), 'f', 15));
+
+    if (hasAttributeCentralY())
+        writer.writeAttribute(QLatin1String("centraly"), QString::number(attributeCentralY(), 'f', 15));
+
+    if (hasAttributeFocalX())
+        writer.writeAttribute(QLatin1String("focalx"), QString::number(attributeFocalX(), 'f', 15));
+
+    if (hasAttributeFocalY())
+        writer.writeAttribute(QLatin1String("focaly"), QString::number(attributeFocalY(), 'f', 15));
+
+    if (hasAttributeRadius())
+        writer.writeAttribute(QLatin1String("radius"), QString::number(attributeRadius(), 'f', 15));
+
+    if (hasAttributeAngle())
+        writer.writeAttribute(QLatin1String("angle"), QString::number(attributeAngle(), 'f', 15));
+
+    if (hasAttributeType())
+        writer.writeAttribute(QLatin1String("type"), attributeType());
+
+    if (hasAttributeSpread())
+        writer.writeAttribute(QLatin1String("spread"), attributeSpread());
+
+    if (hasAttributeCoordinateMode())
+        writer.writeAttribute(QLatin1String("coordinatemode"), attributeCoordinateMode());
+
+    for (int i = 0; i < m_gradientStop.size(); ++i) {
+        DomGradientStop* v = m_gradientStop[i];
+        v->write(writer, QLatin1String("gradientstop"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomGradient::setElementGradientStop(const QList<DomGradientStop*>& a)
+{
+    m_children |= GradientStop;
+    m_gradientStop = a;
+}
+
+void DomBrush::clear(bool clear_all)
+{
+    delete m_color;
+    delete m_texture;
+    delete m_gradient;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_brushStyle = false;
+    }
+
+    m_kind = Unknown;
+
+    m_color = 0;
+    m_texture = 0;
+    m_gradient = 0;
+}
+
+DomBrush::DomBrush()
+{
+    m_kind = Unknown;
+
+    m_has_attr_brushStyle = false;
+    m_color = 0;
+    m_texture = 0;
+    m_gradient = 0;
+}
+
+DomBrush::~DomBrush()
+{
+    delete m_color;
+    delete m_texture;
+    delete m_gradient;
+}
+
+void DomBrush::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("brushstyle")) {
+            setAttributeBrushStyle(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                setElementColor(v);
+                continue;
+            }
+            if (tag == QLatin1String("texture")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                setElementTexture(v);
+                continue;
+            }
+            if (tag == QLatin1String("gradient")) {
+                DomGradient *v = new DomGradient();
+                v->read(reader);
+                setElementGradient(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomBrush::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("brushstyle")))
+        setAttributeBrushStyle(node.attribute(QLatin1String("brushstyle")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(e);
+                setElementColor(v);
+                continue;
+            }
+            if (tag == QLatin1String("texture")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                setElementTexture(v);
+                continue;
+            }
+            if (tag == QLatin1String("gradient")) {
+                DomGradient *v = new DomGradient();
+                v->read(e);
+                setElementGradient(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomBrush::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("brush") : tagName.toLower());
+
+    if (hasAttributeBrushStyle())
+        writer.writeAttribute(QLatin1String("brushstyle"), attributeBrushStyle());
+
+    switch (kind()) {
+        case Color: {
+            DomColor* v = elementColor();
+            if (v != 0) {
+                v->write(writer, QLatin1String("color"));
+            }
+            break;
+        }
+        case Texture: {
+            DomProperty* v = elementTexture();
+            if (v != 0) {
+                v->write(writer, QLatin1String("texture"));
+            }
+            break;
+        }
+        case Gradient: {
+            DomGradient* v = elementGradient();
+            if (v != 0) {
+                v->write(writer, QLatin1String("gradient"));
+            }
+            break;
+        }
+        default:
+            break;
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomColor* DomBrush::takeElementColor() 
+{
+    DomColor* a = m_color;
+    m_color = 0;
+    return a;
+}
+
+void DomBrush::setElementColor(DomColor* a)
+{
+    clear(false);
+    m_kind = Color;
+    m_color = a;
+}
+
+DomProperty* DomBrush::takeElementTexture() 
+{
+    DomProperty* a = m_texture;
+    m_texture = 0;
+    return a;
+}
+
+void DomBrush::setElementTexture(DomProperty* a)
+{
+    clear(false);
+    m_kind = Texture;
+    m_texture = a;
+}
+
+DomGradient* DomBrush::takeElementGradient() 
+{
+    DomGradient* a = m_gradient;
+    m_gradient = 0;
+    return a;
+}
+
+void DomBrush::setElementGradient(DomGradient* a)
+{
+    clear(false);
+    m_kind = Gradient;
+    m_gradient = a;
+}
+
+void DomColorRole::clear(bool clear_all)
+{
+    delete m_brush;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_role = false;
+    }
+
+    m_children = 0;
+    m_brush = 0;
+}
+
+DomColorRole::DomColorRole()
+{
+    m_children = 0;
+    m_has_attr_role = false;
+    m_brush = 0;
+}
+
+DomColorRole::~DomColorRole()
+{
+    delete m_brush;
+}
+
+void DomColorRole::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("role")) {
+            setAttributeRole(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("brush")) {
+                DomBrush *v = new DomBrush();
+                v->read(reader);
+                setElementBrush(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomColorRole::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("role")))
+        setAttributeRole(node.attribute(QLatin1String("role")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("brush")) {
+                DomBrush *v = new DomBrush();
+                v->read(e);
+                setElementBrush(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomColorRole::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("colorrole") : tagName.toLower());
+
+    if (hasAttributeRole())
+        writer.writeAttribute(QLatin1String("role"), attributeRole());
+
+    if (m_children & Brush) {
+        m_brush->write(writer, QLatin1String("brush"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomBrush* DomColorRole::takeElementBrush() 
+{
+    DomBrush* a = m_brush;
+    m_brush = 0;
+    m_children ^= Brush;
+    return a;
+}
+
+void DomColorRole::setElementBrush(DomBrush* a)
+{
+    delete m_brush;
+    m_children |= Brush;
+    m_brush = a;
+}
+
+void DomColorRole::clearElementBrush()
+{
+    delete m_brush;
+    m_brush = 0;
+    m_children &= ~Brush;
+}
+
+void DomColorGroup::clear(bool clear_all)
+{
+    qDeleteAll(m_colorRole);
+    m_colorRole.clear();
+    qDeleteAll(m_color);
+    m_color.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomColorGroup::DomColorGroup()
+{
+    m_children = 0;
+}
+
+DomColorGroup::~DomColorGroup()
+{
+    qDeleteAll(m_colorRole);
+    m_colorRole.clear();
+    qDeleteAll(m_color);
+    m_color.clear();
+}
+
+void DomColorGroup::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("colorrole")) {
+                DomColorRole *v = new DomColorRole();
+                v->read(reader);
+                m_colorRole.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                m_color.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomColorGroup::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("colorrole")) {
+                DomColorRole *v = new DomColorRole();
+                v->read(e);
+                m_colorRole.append(v);
+                continue;
+            }
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(e);
+                m_color.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomColorGroup::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("colorgroup") : tagName.toLower());
+
+    for (int i = 0; i < m_colorRole.size(); ++i) {
+        DomColorRole* v = m_colorRole[i];
+        v->write(writer, QLatin1String("colorrole"));
+    }
+    for (int i = 0; i < m_color.size(); ++i) {
+        DomColor* v = m_color[i];
+        v->write(writer, QLatin1String("color"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomColorGroup::setElementColorRole(const QList<DomColorRole*>& a)
+{
+    m_children |= ColorRole;
+    m_colorRole = a;
+}
+
+void DomColorGroup::setElementColor(const QList<DomColor*>& a)
+{
+    m_children |= Color;
+    m_color = a;
+}
+
+void DomPalette::clear(bool clear_all)
+{
+    delete m_active;
+    delete m_inactive;
+    delete m_disabled;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_active = 0;
+    m_inactive = 0;
+    m_disabled = 0;
+}
+
+DomPalette::DomPalette()
+{
+    m_children = 0;
+    m_active = 0;
+    m_inactive = 0;
+    m_disabled = 0;
+}
+
+DomPalette::~DomPalette()
+{
+    delete m_active;
+    delete m_inactive;
+    delete m_disabled;
+}
+
+void DomPalette::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("active")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(reader);
+                setElementActive(v);
+                continue;
+            }
+            if (tag == QLatin1String("inactive")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(reader);
+                setElementInactive(v);
+                continue;
+            }
+            if (tag == QLatin1String("disabled")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(reader);
+                setElementDisabled(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomPalette::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("active")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(e);
+                setElementActive(v);
+                continue;
+            }
+            if (tag == QLatin1String("inactive")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(e);
+                setElementInactive(v);
+                continue;
+            }
+            if (tag == QLatin1String("disabled")) {
+                DomColorGroup *v = new DomColorGroup();
+                v->read(e);
+                setElementDisabled(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomPalette::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("palette") : tagName.toLower());
+
+    if (m_children & Active) {
+        m_active->write(writer, QLatin1String("active"));
+    }
+
+    if (m_children & Inactive) {
+        m_inactive->write(writer, QLatin1String("inactive"));
+    }
+
+    if (m_children & Disabled) {
+        m_disabled->write(writer, QLatin1String("disabled"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomColorGroup* DomPalette::takeElementActive() 
+{
+    DomColorGroup* a = m_active;
+    m_active = 0;
+    m_children ^= Active;
+    return a;
+}
+
+void DomPalette::setElementActive(DomColorGroup* a)
+{
+    delete m_active;
+    m_children |= Active;
+    m_active = a;
+}
+
+DomColorGroup* DomPalette::takeElementInactive() 
+{
+    DomColorGroup* a = m_inactive;
+    m_inactive = 0;
+    m_children ^= Inactive;
+    return a;
+}
+
+void DomPalette::setElementInactive(DomColorGroup* a)
+{
+    delete m_inactive;
+    m_children |= Inactive;
+    m_inactive = a;
+}
+
+DomColorGroup* DomPalette::takeElementDisabled() 
+{
+    DomColorGroup* a = m_disabled;
+    m_disabled = 0;
+    m_children ^= Disabled;
+    return a;
+}
+
+void DomPalette::setElementDisabled(DomColorGroup* a)
+{
+    delete m_disabled;
+    m_children |= Disabled;
+    m_disabled = a;
+}
+
+void DomPalette::clearElementActive()
+{
+    delete m_active;
+    m_active = 0;
+    m_children &= ~Active;
+}
+
+void DomPalette::clearElementInactive()
+{
+    delete m_inactive;
+    m_inactive = 0;
+    m_children &= ~Inactive;
+}
+
+void DomPalette::clearElementDisabled()
+{
+    delete m_disabled;
+    m_disabled = 0;
+    m_children &= ~Disabled;
+}
+
+void DomFont::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_pointSize = 0;
+    m_weight = 0;
+    m_italic = false;
+    m_bold = false;
+    m_underline = false;
+    m_strikeOut = false;
+    m_antialiasing = false;
+    m_kerning = false;
+}
+
+DomFont::DomFont()
+{
+    m_children = 0;
+    m_pointSize = 0;
+    m_weight = 0;
+    m_italic = false;
+    m_bold = false;
+    m_underline = false;
+    m_strikeOut = false;
+    m_antialiasing = false;
+    m_kerning = false;
+}
+
+DomFont::~DomFont()
+{
+}
+
+void DomFont::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("family")) {
+                setElementFamily(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("pointsize")) {
+                setElementPointSize(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("weight")) {
+                setElementWeight(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("italic")) {
+                setElementItalic((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("bold")) {
+                setElementBold((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("underline")) {
+                setElementUnderline((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("strikeout")) {
+                setElementStrikeOut((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("antialiasing")) {
+                setElementAntialiasing((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("stylestrategy")) {
+                setElementStyleStrategy(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("kerning")) {
+                setElementKerning((reader.readElementText() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomFont::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("family")) {
+                setElementFamily(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("pointsize")) {
+                setElementPointSize(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("weight")) {
+                setElementWeight(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("italic")) {
+                setElementItalic((e.text() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("bold")) {
+                setElementBold((e.text() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("underline")) {
+                setElementUnderline((e.text() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("strikeout")) {
+                setElementStrikeOut((e.text() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("antialiasing")) {
+                setElementAntialiasing((e.text() == QLatin1String("true") ? true : false));
+                continue;
+            }
+            if (tag == QLatin1String("stylestrategy")) {
+                setElementStyleStrategy(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("kerning")) {
+                setElementKerning((e.text() == QLatin1String("true") ? true : false));
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomFont::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("font") : tagName.toLower());
+
+    if (m_children & Family) {
+        writer.writeTextElement(QLatin1String("family"), m_family);
+    }
+
+    if (m_children & PointSize) {
+        writer.writeTextElement(QLatin1String("pointsize"), QString::number(m_pointSize));
+    }
+
+    if (m_children & Weight) {
+        writer.writeTextElement(QLatin1String("weight"), QString::number(m_weight));
+    }
+
+    if (m_children & Italic) {
+        writer.writeTextElement(QLatin1String("italic"), (m_italic ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & Bold) {
+        writer.writeTextElement(QLatin1String("bold"), (m_bold ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & Underline) {
+        writer.writeTextElement(QLatin1String("underline"), (m_underline ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & StrikeOut) {
+        writer.writeTextElement(QLatin1String("strikeout"), (m_strikeOut ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & Antialiasing) {
+        writer.writeTextElement(QLatin1String("antialiasing"), (m_antialiasing ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (m_children & StyleStrategy) {
+        writer.writeTextElement(QLatin1String("stylestrategy"), m_styleStrategy);
+    }
+
+    if (m_children & Kerning) {
+        writer.writeTextElement(QLatin1String("kerning"), (m_kerning ? QLatin1String("true") : QLatin1String("false")));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomFont::setElementFamily(const QString& a)
+{
+    m_children |= Family;
+    m_family = a;
+}
+
+void DomFont::setElementPointSize(int a)
+{
+    m_children |= PointSize;
+    m_pointSize = a;
+}
+
+void DomFont::setElementWeight(int a)
+{
+    m_children |= Weight;
+    m_weight = a;
+}
+
+void DomFont::setElementItalic(bool a)
+{
+    m_children |= Italic;
+    m_italic = a;
+}
+
+void DomFont::setElementBold(bool a)
+{
+    m_children |= Bold;
+    m_bold = a;
+}
+
+void DomFont::setElementUnderline(bool a)
+{
+    m_children |= Underline;
+    m_underline = a;
+}
+
+void DomFont::setElementStrikeOut(bool a)
+{
+    m_children |= StrikeOut;
+    m_strikeOut = a;
+}
+
+void DomFont::setElementAntialiasing(bool a)
+{
+    m_children |= Antialiasing;
+    m_antialiasing = a;
+}
+
+void DomFont::setElementStyleStrategy(const QString& a)
+{
+    m_children |= StyleStrategy;
+    m_styleStrategy = a;
+}
+
+void DomFont::setElementKerning(bool a)
+{
+    m_children |= Kerning;
+    m_kerning = a;
+}
+
+void DomFont::clearElementFamily()
+{
+    m_children &= ~Family;
+}
+
+void DomFont::clearElementPointSize()
+{
+    m_children &= ~PointSize;
+}
+
+void DomFont::clearElementWeight()
+{
+    m_children &= ~Weight;
+}
+
+void DomFont::clearElementItalic()
+{
+    m_children &= ~Italic;
+}
+
+void DomFont::clearElementBold()
+{
+    m_children &= ~Bold;
+}
+
+void DomFont::clearElementUnderline()
+{
+    m_children &= ~Underline;
+}
+
+void DomFont::clearElementStrikeOut()
+{
+    m_children &= ~StrikeOut;
+}
+
+void DomFont::clearElementAntialiasing()
+{
+    m_children &= ~Antialiasing;
+}
+
+void DomFont::clearElementStyleStrategy()
+{
+    m_children &= ~StyleStrategy;
+}
+
+void DomFont::clearElementKerning()
+{
+    m_children &= ~Kerning;
+}
+
+void DomPoint::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPoint::DomPoint()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPoint::~DomPoint()
+{
+}
+
+void DomPoint::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomPoint::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(e.text().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomPoint::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("point") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPoint::setElementX(int a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomPoint::setElementY(int a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomPoint::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomPoint::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRect::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRect::DomRect()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRect::~DomRect()
+{
+}
+
+void DomRect::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("width")) {
+                setElementWidth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomRect::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(e.text().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("width")) {
+                setElementWidth(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomRect::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("rect") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y));
+    }
+
+    if (m_children & Width) {
+        writer.writeTextElement(QLatin1String("width"), QString::number(m_width));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QLatin1String("height"), QString::number(m_height));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomRect::setElementX(int a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomRect::setElementY(int a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomRect::setElementWidth(int a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomRect::setElementHeight(int a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomRect::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomRect::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRect::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomRect::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomLocale::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_language = false;
+    m_has_attr_country = false;
+    }
+
+    m_children = 0;
+}
+
+DomLocale::DomLocale()
+{
+    m_children = 0;
+    m_has_attr_language = false;
+    m_has_attr_country = false;
+}
+
+DomLocale::~DomLocale()
+{
+}
+
+void DomLocale::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("language")) {
+            setAttributeLanguage(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("country")) {
+            setAttributeCountry(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomLocale::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("language")))
+        setAttributeLanguage(node.attribute(QLatin1String("language")));
+    if (node.hasAttribute(QLatin1String("country")))
+        setAttributeCountry(node.attribute(QLatin1String("country")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomLocale::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("locale") : tagName.toLower());
+
+    if (hasAttributeLanguage())
+        writer.writeAttribute(QLatin1String("language"), attributeLanguage());
+
+    if (hasAttributeCountry())
+        writer.writeAttribute(QLatin1String("country"), attributeCountry());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicy::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_hSizeType = false;
+    m_has_attr_vSizeType = false;
+    }
+
+    m_children = 0;
+    m_hSizeType = 0;
+    m_vSizeType = 0;
+    m_horStretch = 0;
+    m_verStretch = 0;
+}
+
+DomSizePolicy::DomSizePolicy()
+{
+    m_children = 0;
+    m_has_attr_hSizeType = false;
+    m_has_attr_vSizeType = false;
+    m_hSizeType = 0;
+    m_vSizeType = 0;
+    m_horStretch = 0;
+    m_verStretch = 0;
+}
+
+DomSizePolicy::~DomSizePolicy()
+{
+}
+
+void DomSizePolicy::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("hsizetype")) {
+            setAttributeHSizeType(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("vsizetype")) {
+            setAttributeVSizeType(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("hsizetype")) {
+                setElementHSizeType(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("vsizetype")) {
+                setElementVSizeType(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("horstretch")) {
+                setElementHorStretch(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("verstretch")) {
+                setElementVerStretch(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomSizePolicy::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("hsizetype")))
+        setAttributeHSizeType(node.attribute(QLatin1String("hsizetype")));
+    if (node.hasAttribute(QLatin1String("vsizetype")))
+        setAttributeVSizeType(node.attribute(QLatin1String("vsizetype")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("hsizetype")) {
+                setElementHSizeType(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("vsizetype")) {
+                setElementVSizeType(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("horstretch")) {
+                setElementHorStretch(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("verstretch")) {
+                setElementVerStretch(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomSizePolicy::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizepolicy") : tagName.toLower());
+
+    if (hasAttributeHSizeType())
+        writer.writeAttribute(QLatin1String("hsizetype"), attributeHSizeType());
+
+    if (hasAttributeVSizeType())
+        writer.writeAttribute(QLatin1String("vsizetype"), attributeVSizeType());
+
+    if (m_children & HSizeType) {
+        writer.writeTextElement(QLatin1String("hsizetype"), QString::number(m_hSizeType));
+    }
+
+    if (m_children & VSizeType) {
+        writer.writeTextElement(QLatin1String("vsizetype"), QString::number(m_vSizeType));
+    }
+
+    if (m_children & HorStretch) {
+        writer.writeTextElement(QLatin1String("horstretch"), QString::number(m_horStretch));
+    }
+
+    if (m_children & VerStretch) {
+        writer.writeTextElement(QLatin1String("verstretch"), QString::number(m_verStretch));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizePolicy::setElementHSizeType(int a)
+{
+    m_children |= HSizeType;
+    m_hSizeType = a;
+}
+
+void DomSizePolicy::setElementVSizeType(int a)
+{
+    m_children |= VSizeType;
+    m_vSizeType = a;
+}
+
+void DomSizePolicy::setElementHorStretch(int a)
+{
+    m_children |= HorStretch;
+    m_horStretch = a;
+}
+
+void DomSizePolicy::setElementVerStretch(int a)
+{
+    m_children |= VerStretch;
+    m_verStretch = a;
+}
+
+void DomSizePolicy::clearElementHSizeType()
+{
+    m_children &= ~HSizeType;
+}
+
+void DomSizePolicy::clearElementVSizeType()
+{
+    m_children &= ~VSizeType;
+}
+
+void DomSizePolicy::clearElementHorStretch()
+{
+    m_children &= ~HorStretch;
+}
+
+void DomSizePolicy::clearElementVerStretch()
+{
+    m_children &= ~VerStretch;
+}
+
+void DomSize::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSize::DomSize()
+{
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSize::~DomSize()
+{
+}
+
+void DomSize::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("width")) {
+                setElementWidth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomSize::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("width")) {
+                setElementWidth(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomSize::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("size") : tagName.toLower());
+
+    if (m_children & Width) {
+        writer.writeTextElement(QLatin1String("width"), QString::number(m_width));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QLatin1String("height"), QString::number(m_height));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSize::setElementWidth(int a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomSize::setElementHeight(int a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomSize::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomSize::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomDate::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDate::DomDate()
+{
+    m_children = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDate::~DomDate()
+{
+}
+
+void DomDate::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("year")) {
+                setElementYear(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("month")) {
+                setElementMonth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("day")) {
+                setElementDay(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomDate::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("year")) {
+                setElementYear(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("month")) {
+                setElementMonth(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("day")) {
+                setElementDay(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomDate::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("date") : tagName.toLower());
+
+    if (m_children & Year) {
+        writer.writeTextElement(QLatin1String("year"), QString::number(m_year));
+    }
+
+    if (m_children & Month) {
+        writer.writeTextElement(QLatin1String("month"), QString::number(m_month));
+    }
+
+    if (m_children & Day) {
+        writer.writeTextElement(QLatin1String("day"), QString::number(m_day));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomDate::setElementYear(int a)
+{
+    m_children |= Year;
+    m_year = a;
+}
+
+void DomDate::setElementMonth(int a)
+{
+    m_children |= Month;
+    m_month = a;
+}
+
+void DomDate::setElementDay(int a)
+{
+    m_children |= Day;
+    m_day = a;
+}
+
+void DomDate::clearElementYear()
+{
+    m_children &= ~Year;
+}
+
+void DomDate::clearElementMonth()
+{
+    m_children &= ~Month;
+}
+
+void DomDate::clearElementDay()
+{
+    m_children &= ~Day;
+}
+
+void DomTime::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+}
+
+DomTime::DomTime()
+{
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+}
+
+DomTime::~DomTime()
+{
+}
+
+void DomTime::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("hour")) {
+                setElementHour(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("minute")) {
+                setElementMinute(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("second")) {
+                setElementSecond(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomTime::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("hour")) {
+                setElementHour(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("minute")) {
+                setElementMinute(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("second")) {
+                setElementSecond(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomTime::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("time") : tagName.toLower());
+
+    if (m_children & Hour) {
+        writer.writeTextElement(QLatin1String("hour"), QString::number(m_hour));
+    }
+
+    if (m_children & Minute) {
+        writer.writeTextElement(QLatin1String("minute"), QString::number(m_minute));
+    }
+
+    if (m_children & Second) {
+        writer.writeTextElement(QLatin1String("second"), QString::number(m_second));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomTime::setElementHour(int a)
+{
+    m_children |= Hour;
+    m_hour = a;
+}
+
+void DomTime::setElementMinute(int a)
+{
+    m_children |= Minute;
+    m_minute = a;
+}
+
+void DomTime::setElementSecond(int a)
+{
+    m_children |= Second;
+    m_second = a;
+}
+
+void DomTime::clearElementHour()
+{
+    m_children &= ~Hour;
+}
+
+void DomTime::clearElementMinute()
+{
+    m_children &= ~Minute;
+}
+
+void DomTime::clearElementSecond()
+{
+    m_children &= ~Second;
+}
+
+void DomDateTime::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDateTime::DomDateTime()
+{
+    m_children = 0;
+    m_hour = 0;
+    m_minute = 0;
+    m_second = 0;
+    m_year = 0;
+    m_month = 0;
+    m_day = 0;
+}
+
+DomDateTime::~DomDateTime()
+{
+}
+
+void DomDateTime::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("hour")) {
+                setElementHour(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("minute")) {
+                setElementMinute(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("second")) {
+                setElementSecond(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("year")) {
+                setElementYear(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("month")) {
+                setElementMonth(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("day")) {
+                setElementDay(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomDateTime::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("hour")) {
+                setElementHour(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("minute")) {
+                setElementMinute(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("second")) {
+                setElementSecond(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("year")) {
+                setElementYear(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("month")) {
+                setElementMonth(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("day")) {
+                setElementDay(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomDateTime::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("datetime") : tagName.toLower());
+
+    if (m_children & Hour) {
+        writer.writeTextElement(QLatin1String("hour"), QString::number(m_hour));
+    }
+
+    if (m_children & Minute) {
+        writer.writeTextElement(QLatin1String("minute"), QString::number(m_minute));
+    }
+
+    if (m_children & Second) {
+        writer.writeTextElement(QLatin1String("second"), QString::number(m_second));
+    }
+
+    if (m_children & Year) {
+        writer.writeTextElement(QLatin1String("year"), QString::number(m_year));
+    }
+
+    if (m_children & Month) {
+        writer.writeTextElement(QLatin1String("month"), QString::number(m_month));
+    }
+
+    if (m_children & Day) {
+        writer.writeTextElement(QLatin1String("day"), QString::number(m_day));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomDateTime::setElementHour(int a)
+{
+    m_children |= Hour;
+    m_hour = a;
+}
+
+void DomDateTime::setElementMinute(int a)
+{
+    m_children |= Minute;
+    m_minute = a;
+}
+
+void DomDateTime::setElementSecond(int a)
+{
+    m_children |= Second;
+    m_second = a;
+}
+
+void DomDateTime::setElementYear(int a)
+{
+    m_children |= Year;
+    m_year = a;
+}
+
+void DomDateTime::setElementMonth(int a)
+{
+    m_children |= Month;
+    m_month = a;
+}
+
+void DomDateTime::setElementDay(int a)
+{
+    m_children |= Day;
+    m_day = a;
+}
+
+void DomDateTime::clearElementHour()
+{
+    m_children &= ~Hour;
+}
+
+void DomDateTime::clearElementMinute()
+{
+    m_children &= ~Minute;
+}
+
+void DomDateTime::clearElementSecond()
+{
+    m_children &= ~Second;
+}
+
+void DomDateTime::clearElementYear()
+{
+    m_children &= ~Year;
+}
+
+void DomDateTime::clearElementMonth()
+{
+    m_children &= ~Month;
+}
+
+void DomDateTime::clearElementDay()
+{
+    m_children &= ~Day;
+}
+
+void DomStringList::clear(bool clear_all)
+{
+    m_string.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomStringList::DomStringList()
+{
+    m_children = 0;
+}
+
+DomStringList::~DomStringList()
+{
+    m_string.clear();
+}
+
+void DomStringList::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("string")) {
+                m_string.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomStringList::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("string")) {
+                m_string.append(e.text());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomStringList::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("stringlist") : tagName.toLower());
+
+    for (int i = 0; i < m_string.size(); ++i) {
+        QString v = m_string[i];
+        writer.writeTextElement(QLatin1String("string"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomStringList::setElementString(const QStringList& a)
+{
+    m_children |= String;
+    m_string = a;
+}
+
+void DomResourcePixmap::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text = QLatin1String("");
+    m_has_attr_resource = false;
+    m_has_attr_alias = false;
+    }
+
+    m_children = 0;
+}
+
+DomResourcePixmap::DomResourcePixmap()
+{
+    m_children = 0;
+    m_has_attr_resource = false;
+    m_has_attr_alias = false;
+    m_text = QLatin1String("");
+}
+
+DomResourcePixmap::~DomResourcePixmap()
+{
+}
+
+void DomResourcePixmap::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("resource")) {
+            setAttributeResource(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("alias")) {
+            setAttributeAlias(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomResourcePixmap::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("resource")))
+        setAttributeResource(node.attribute(QLatin1String("resource")));
+    if (node.hasAttribute(QLatin1String("alias")))
+        setAttributeAlias(node.attribute(QLatin1String("alias")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text = QLatin1String("");
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomResourcePixmap::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resourcepixmap") : tagName.toLower());
+
+    if (hasAttributeResource())
+        writer.writeAttribute(QLatin1String("resource"), attributeResource());
+
+    if (hasAttributeAlias())
+        writer.writeAttribute(QLatin1String("alias"), attributeAlias());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomResourceIcon::clear(bool clear_all)
+{
+    delete m_normalOff;
+    delete m_normalOn;
+    delete m_disabledOff;
+    delete m_disabledOn;
+    delete m_activeOff;
+    delete m_activeOn;
+    delete m_selectedOff;
+    delete m_selectedOn;
+
+    if (clear_all) {
+    m_text = QLatin1String("");
+    m_has_attr_resource = false;
+    }
+
+    m_children = 0;
+    m_normalOff = 0;
+    m_normalOn = 0;
+    m_disabledOff = 0;
+    m_disabledOn = 0;
+    m_activeOff = 0;
+    m_activeOn = 0;
+    m_selectedOff = 0;
+    m_selectedOn = 0;
+}
+
+DomResourceIcon::DomResourceIcon()
+{
+    m_children = 0;
+    m_has_attr_resource = false;
+    m_text = QLatin1String("");
+    m_normalOff = 0;
+    m_normalOn = 0;
+    m_disabledOff = 0;
+    m_disabledOn = 0;
+    m_activeOff = 0;
+    m_activeOn = 0;
+    m_selectedOff = 0;
+    m_selectedOn = 0;
+}
+
+DomResourceIcon::~DomResourceIcon()
+{
+    delete m_normalOff;
+    delete m_normalOn;
+    delete m_disabledOff;
+    delete m_disabledOn;
+    delete m_activeOff;
+    delete m_activeOn;
+    delete m_selectedOff;
+    delete m_selectedOn;
+}
+
+void DomResourceIcon::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("resource")) {
+            setAttributeResource(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("normaloff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementNormalOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("normalon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementNormalOn(v);
+                continue;
+            }
+            if (tag == QLatin1String("disabledoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementDisabledOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("disabledon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementDisabledOn(v);
+                continue;
+            }
+            if (tag == QLatin1String("activeoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementActiveOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("activeon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementActiveOn(v);
+                continue;
+            }
+            if (tag == QLatin1String("selectedoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementSelectedOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("selectedon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementSelectedOn(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomResourceIcon::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("resource")))
+        setAttributeResource(node.attribute(QLatin1String("resource")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("normaloff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementNormalOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("normalon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementNormalOn(v);
+                continue;
+            }
+            if (tag == QLatin1String("disabledoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementDisabledOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("disabledon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementDisabledOn(v);
+                continue;
+            }
+            if (tag == QLatin1String("activeoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementActiveOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("activeon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementActiveOn(v);
+                continue;
+            }
+            if (tag == QLatin1String("selectedoff")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementSelectedOff(v);
+                continue;
+            }
+            if (tag == QLatin1String("selectedon")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementSelectedOn(v);
+                continue;
+            }
+    }
+    m_text = QLatin1String("");
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomResourceIcon::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resourceicon") : tagName.toLower());
+
+    if (hasAttributeResource())
+        writer.writeAttribute(QLatin1String("resource"), attributeResource());
+
+    if (m_children & NormalOff) {
+        m_normalOff->write(writer, QLatin1String("normaloff"));
+    }
+
+    if (m_children & NormalOn) {
+        m_normalOn->write(writer, QLatin1String("normalon"));
+    }
+
+    if (m_children & DisabledOff) {
+        m_disabledOff->write(writer, QLatin1String("disabledoff"));
+    }
+
+    if (m_children & DisabledOn) {
+        m_disabledOn->write(writer, QLatin1String("disabledon"));
+    }
+
+    if (m_children & ActiveOff) {
+        m_activeOff->write(writer, QLatin1String("activeoff"));
+    }
+
+    if (m_children & ActiveOn) {
+        m_activeOn->write(writer, QLatin1String("activeon"));
+    }
+
+    if (m_children & SelectedOff) {
+        m_selectedOff->write(writer, QLatin1String("selectedoff"));
+    }
+
+    if (m_children & SelectedOn) {
+        m_selectedOn->write(writer, QLatin1String("selectedon"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementNormalOff() 
+{
+    DomResourcePixmap* a = m_normalOff;
+    m_normalOff = 0;
+    m_children ^= NormalOff;
+    return a;
+}
+
+void DomResourceIcon::setElementNormalOff(DomResourcePixmap* a)
+{
+    delete m_normalOff;
+    m_children |= NormalOff;
+    m_normalOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementNormalOn() 
+{
+    DomResourcePixmap* a = m_normalOn;
+    m_normalOn = 0;
+    m_children ^= NormalOn;
+    return a;
+}
+
+void DomResourceIcon::setElementNormalOn(DomResourcePixmap* a)
+{
+    delete m_normalOn;
+    m_children |= NormalOn;
+    m_normalOn = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementDisabledOff() 
+{
+    DomResourcePixmap* a = m_disabledOff;
+    m_disabledOff = 0;
+    m_children ^= DisabledOff;
+    return a;
+}
+
+void DomResourceIcon::setElementDisabledOff(DomResourcePixmap* a)
+{
+    delete m_disabledOff;
+    m_children |= DisabledOff;
+    m_disabledOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementDisabledOn() 
+{
+    DomResourcePixmap* a = m_disabledOn;
+    m_disabledOn = 0;
+    m_children ^= DisabledOn;
+    return a;
+}
+
+void DomResourceIcon::setElementDisabledOn(DomResourcePixmap* a)
+{
+    delete m_disabledOn;
+    m_children |= DisabledOn;
+    m_disabledOn = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementActiveOff() 
+{
+    DomResourcePixmap* a = m_activeOff;
+    m_activeOff = 0;
+    m_children ^= ActiveOff;
+    return a;
+}
+
+void DomResourceIcon::setElementActiveOff(DomResourcePixmap* a)
+{
+    delete m_activeOff;
+    m_children |= ActiveOff;
+    m_activeOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementActiveOn() 
+{
+    DomResourcePixmap* a = m_activeOn;
+    m_activeOn = 0;
+    m_children ^= ActiveOn;
+    return a;
+}
+
+void DomResourceIcon::setElementActiveOn(DomResourcePixmap* a)
+{
+    delete m_activeOn;
+    m_children |= ActiveOn;
+    m_activeOn = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementSelectedOff() 
+{
+    DomResourcePixmap* a = m_selectedOff;
+    m_selectedOff = 0;
+    m_children ^= SelectedOff;
+    return a;
+}
+
+void DomResourceIcon::setElementSelectedOff(DomResourcePixmap* a)
+{
+    delete m_selectedOff;
+    m_children |= SelectedOff;
+    m_selectedOff = a;
+}
+
+DomResourcePixmap* DomResourceIcon::takeElementSelectedOn() 
+{
+    DomResourcePixmap* a = m_selectedOn;
+    m_selectedOn = 0;
+    m_children ^= SelectedOn;
+    return a;
+}
+
+void DomResourceIcon::setElementSelectedOn(DomResourcePixmap* a)
+{
+    delete m_selectedOn;
+    m_children |= SelectedOn;
+    m_selectedOn = a;
+}
+
+void DomResourceIcon::clearElementNormalOff()
+{
+    delete m_normalOff;
+    m_normalOff = 0;
+    m_children &= ~NormalOff;
+}
+
+void DomResourceIcon::clearElementNormalOn()
+{
+    delete m_normalOn;
+    m_normalOn = 0;
+    m_children &= ~NormalOn;
+}
+
+void DomResourceIcon::clearElementDisabledOff()
+{
+    delete m_disabledOff;
+    m_disabledOff = 0;
+    m_children &= ~DisabledOff;
+}
+
+void DomResourceIcon::clearElementDisabledOn()
+{
+    delete m_disabledOn;
+    m_disabledOn = 0;
+    m_children &= ~DisabledOn;
+}
+
+void DomResourceIcon::clearElementActiveOff()
+{
+    delete m_activeOff;
+    m_activeOff = 0;
+    m_children &= ~ActiveOff;
+}
+
+void DomResourceIcon::clearElementActiveOn()
+{
+    delete m_activeOn;
+    m_activeOn = 0;
+    m_children &= ~ActiveOn;
+}
+
+void DomResourceIcon::clearElementSelectedOff()
+{
+    delete m_selectedOff;
+    m_selectedOff = 0;
+    m_children &= ~SelectedOff;
+}
+
+void DomResourceIcon::clearElementSelectedOn()
+{
+    delete m_selectedOn;
+    m_selectedOn = 0;
+    m_children &= ~SelectedOn;
+}
+
+void DomString::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text = QLatin1String("");
+    m_has_attr_notr = false;
+    m_has_attr_comment = false;
+    m_has_attr_extraComment = false;
+    }
+
+    m_children = 0;
+}
+
+DomString::DomString()
+{
+    m_children = 0;
+    m_has_attr_notr = false;
+    m_has_attr_comment = false;
+    m_has_attr_extraComment = false;
+    m_text = QLatin1String("");
+}
+
+DomString::~DomString()
+{
+}
+
+void DomString::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("notr")) {
+            setAttributeNotr(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("comment")) {
+            setAttributeComment(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("extracomment")) {
+            setAttributeExtraComment(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomString::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("notr")))
+        setAttributeNotr(node.attribute(QLatin1String("notr")));
+    if (node.hasAttribute(QLatin1String("comment")))
+        setAttributeComment(node.attribute(QLatin1String("comment")));
+    if (node.hasAttribute(QLatin1String("extracomment")))
+        setAttributeExtraComment(node.attribute(QLatin1String("extracomment")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text = QLatin1String("");
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomString::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("string") : tagName.toLower());
+
+    if (hasAttributeNotr())
+        writer.writeAttribute(QLatin1String("notr"), attributeNotr());
+
+    if (hasAttributeComment())
+        writer.writeAttribute(QLatin1String("comment"), attributeComment());
+
+    if (hasAttributeExtraComment())
+        writer.writeAttribute(QLatin1String("extracomment"), attributeExtraComment());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPointF::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPointF::DomPointF()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomPointF::~DomPointF()
+{
+}
+
+void DomPointF::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toDouble());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomPointF::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(e.text().toDouble());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(e.text().toDouble());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomPointF::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("pointf") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x, 'f', 15));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y, 'f', 15));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPointF::setElementX(double a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomPointF::setElementY(double a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomPointF::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomPointF::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRectF::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRectF::DomRectF()
+{
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomRectF::~DomRectF()
+{
+}
+
+void DomRectF::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("width")) {
+                setElementWidth(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(reader.readElementText().toDouble());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomRectF::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(e.text().toDouble());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(e.text().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("width")) {
+                setElementWidth(e.text().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(e.text().toDouble());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomRectF::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("rectf") : tagName.toLower());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x, 'f', 15));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y, 'f', 15));
+    }
+
+    if (m_children & Width) {
+        writer.writeTextElement(QLatin1String("width"), QString::number(m_width, 'f', 15));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QLatin1String("height"), QString::number(m_height, 'f', 15));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomRectF::setElementX(double a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomRectF::setElementY(double a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomRectF::setElementWidth(double a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomRectF::setElementHeight(double a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomRectF::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomRectF::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomRectF::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomRectF::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomSizeF::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSizeF::DomSizeF()
+{
+    m_children = 0;
+    m_width = 0;
+    m_height = 0;
+}
+
+DomSizeF::~DomSizeF()
+{
+}
+
+void DomSizeF::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("width")) {
+                setElementWidth(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(reader.readElementText().toDouble());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomSizeF::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("width")) {
+                setElementWidth(e.text().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("height")) {
+                setElementHeight(e.text().toDouble());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomSizeF::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizef") : tagName.toLower());
+
+    if (m_children & Width) {
+        writer.writeTextElement(QLatin1String("width"), QString::number(m_width, 'f', 15));
+    }
+
+    if (m_children & Height) {
+        writer.writeTextElement(QLatin1String("height"), QString::number(m_height, 'f', 15));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSizeF::setElementWidth(double a)
+{
+    m_children |= Width;
+    m_width = a;
+}
+
+void DomSizeF::setElementHeight(double a)
+{
+    m_children |= Height;
+    m_height = a;
+}
+
+void DomSizeF::clearElementWidth()
+{
+    m_children &= ~Width;
+}
+
+void DomSizeF::clearElementHeight()
+{
+    m_children &= ~Height;
+}
+
+void DomChar::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_unicode = 0;
+}
+
+DomChar::DomChar()
+{
+    m_children = 0;
+    m_unicode = 0;
+}
+
+DomChar::~DomChar()
+{
+}
+
+void DomChar::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("unicode")) {
+                setElementUnicode(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomChar::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("unicode")) {
+                setElementUnicode(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomChar::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("char") : tagName.toLower());
+
+    if (m_children & Unicode) {
+        writer.writeTextElement(QLatin1String("unicode"), QString::number(m_unicode));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomChar::setElementUnicode(int a)
+{
+    m_children |= Unicode;
+    m_unicode = a;
+}
+
+void DomChar::clearElementUnicode()
+{
+    m_children &= ~Unicode;
+}
+
+void DomUrl::clear(bool clear_all)
+{
+    delete m_string;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_string = 0;
+}
+
+DomUrl::DomUrl()
+{
+    m_children = 0;
+    m_string = 0;
+}
+
+DomUrl::~DomUrl()
+{
+    delete m_string;
+}
+
+void DomUrl::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("string")) {
+                DomString *v = new DomString();
+                v->read(reader);
+                setElementString(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomUrl::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("string")) {
+                DomString *v = new DomString();
+                v->read(e);
+                setElementString(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomUrl::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("url") : tagName.toLower());
+
+    if (m_children & String) {
+        m_string->write(writer, QLatin1String("string"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+DomString* DomUrl::takeElementString() 
+{
+    DomString* a = m_string;
+    m_string = 0;
+    m_children ^= String;
+    return a;
+}
+
+void DomUrl::setElementString(DomString* a)
+{
+    delete m_string;
+    m_children |= String;
+    m_string = a;
+}
+
+void DomUrl::clearElementString()
+{
+    delete m_string;
+    m_string = 0;
+    m_children &= ~String;
+}
+
+void DomProperty::clear(bool clear_all)
+{
+    delete m_color;
+    delete m_font;
+    delete m_iconSet;
+    delete m_pixmap;
+    delete m_palette;
+    delete m_point;
+    delete m_rect;
+    delete m_locale;
+    delete m_sizePolicy;
+    delete m_size;
+    delete m_string;
+    delete m_stringList;
+    delete m_date;
+    delete m_time;
+    delete m_dateTime;
+    delete m_pointF;
+    delete m_rectF;
+    delete m_sizeF;
+    delete m_char;
+    delete m_url;
+    delete m_brush;
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    m_has_attr_stdset = false;
+    m_attr_stdset = 0;
+    }
+
+    m_kind = Unknown;
+
+    m_color = 0;
+    m_cursor = 0;
+    m_font = 0;
+    m_iconSet = 0;
+    m_pixmap = 0;
+    m_palette = 0;
+    m_point = 0;
+    m_rect = 0;
+    m_locale = 0;
+    m_sizePolicy = 0;
+    m_size = 0;
+    m_string = 0;
+    m_stringList = 0;
+    m_number = 0;
+    m_float = 0.0;
+    m_double = 0;
+    m_date = 0;
+    m_time = 0;
+    m_dateTime = 0;
+    m_pointF = 0;
+    m_rectF = 0;
+    m_sizeF = 0;
+    m_longLong = 0;
+    m_char = 0;
+    m_url = 0;
+    m_UInt = 0;
+    m_uLongLong = 0;
+    m_brush = 0;
+}
+
+DomProperty::DomProperty()
+{
+    m_kind = Unknown;
+
+    m_has_attr_name = false;
+    m_has_attr_stdset = false;
+    m_attr_stdset = 0;
+    m_color = 0;
+    m_cursor = 0;
+    m_font = 0;
+    m_iconSet = 0;
+    m_pixmap = 0;
+    m_palette = 0;
+    m_point = 0;
+    m_rect = 0;
+    m_locale = 0;
+    m_sizePolicy = 0;
+    m_size = 0;
+    m_string = 0;
+    m_stringList = 0;
+    m_number = 0;
+    m_float = 0.0;
+    m_double = 0;
+    m_date = 0;
+    m_time = 0;
+    m_dateTime = 0;
+    m_pointF = 0;
+    m_rectF = 0;
+    m_sizeF = 0;
+    m_longLong = 0;
+    m_char = 0;
+    m_url = 0;
+    m_UInt = 0;
+    m_uLongLong = 0;
+    m_brush = 0;
+}
+
+DomProperty::~DomProperty()
+{
+    delete m_color;
+    delete m_font;
+    delete m_iconSet;
+    delete m_pixmap;
+    delete m_palette;
+    delete m_point;
+    delete m_rect;
+    delete m_locale;
+    delete m_sizePolicy;
+    delete m_size;
+    delete m_string;
+    delete m_stringList;
+    delete m_date;
+    delete m_time;
+    delete m_dateTime;
+    delete m_pointF;
+    delete m_rectF;
+    delete m_sizeF;
+    delete m_char;
+    delete m_url;
+    delete m_brush;
+}
+
+void DomProperty::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("stdset")) {
+            setAttributeStdset(attribute.value().toString().toInt());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("bool")) {
+                setElementBool(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(reader);
+                setElementColor(v);
+                continue;
+            }
+            if (tag == QLatin1String("cstring")) {
+                setElementCstring(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("cursor")) {
+                setElementCursor(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("cursorshape")) {
+                setElementCursorShape(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("enum")) {
+                setElementEnum(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("font")) {
+                DomFont *v = new DomFont();
+                v->read(reader);
+                setElementFont(v);
+                continue;
+            }
+            if (tag == QLatin1String("iconset")) {
+                DomResourceIcon *v = new DomResourceIcon();
+                v->read(reader);
+                setElementIconSet(v);
+                continue;
+            }
+            if (tag == QLatin1String("pixmap")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(reader);
+                setElementPixmap(v);
+                continue;
+            }
+            if (tag == QLatin1String("palette")) {
+                DomPalette *v = new DomPalette();
+                v->read(reader);
+                setElementPalette(v);
+                continue;
+            }
+            if (tag == QLatin1String("point")) {
+                DomPoint *v = new DomPoint();
+                v->read(reader);
+                setElementPoint(v);
+                continue;
+            }
+            if (tag == QLatin1String("rect")) {
+                DomRect *v = new DomRect();
+                v->read(reader);
+                setElementRect(v);
+                continue;
+            }
+            if (tag == QLatin1String("set")) {
+                setElementSet(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("locale")) {
+                DomLocale *v = new DomLocale();
+                v->read(reader);
+                setElementLocale(v);
+                continue;
+            }
+            if (tag == QLatin1String("sizepolicy")) {
+                DomSizePolicy *v = new DomSizePolicy();
+                v->read(reader);
+                setElementSizePolicy(v);
+                continue;
+            }
+            if (tag == QLatin1String("size")) {
+                DomSize *v = new DomSize();
+                v->read(reader);
+                setElementSize(v);
+                continue;
+            }
+            if (tag == QLatin1String("string")) {
+                DomString *v = new DomString();
+                v->read(reader);
+                setElementString(v);
+                continue;
+            }
+            if (tag == QLatin1String("stringlist")) {
+                DomStringList *v = new DomStringList();
+                v->read(reader);
+                setElementStringList(v);
+                continue;
+            }
+            if (tag == QLatin1String("number")) {
+                setElementNumber(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("float")) {
+                setElementFloat(reader.readElementText().toFloat());
+                continue;
+            }
+            if (tag == QLatin1String("double")) {
+                setElementDouble(reader.readElementText().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("date")) {
+                DomDate *v = new DomDate();
+                v->read(reader);
+                setElementDate(v);
+                continue;
+            }
+            if (tag == QLatin1String("time")) {
+                DomTime *v = new DomTime();
+                v->read(reader);
+                setElementTime(v);
+                continue;
+            }
+            if (tag == QLatin1String("datetime")) {
+                DomDateTime *v = new DomDateTime();
+                v->read(reader);
+                setElementDateTime(v);
+                continue;
+            }
+            if (tag == QLatin1String("pointf")) {
+                DomPointF *v = new DomPointF();
+                v->read(reader);
+                setElementPointF(v);
+                continue;
+            }
+            if (tag == QLatin1String("rectf")) {
+                DomRectF *v = new DomRectF();
+                v->read(reader);
+                setElementRectF(v);
+                continue;
+            }
+            if (tag == QLatin1String("sizef")) {
+                DomSizeF *v = new DomSizeF();
+                v->read(reader);
+                setElementSizeF(v);
+                continue;
+            }
+            if (tag == QLatin1String("longlong")) {
+                setElementLongLong(reader.readElementText().toLongLong());
+                continue;
+            }
+            if (tag == QLatin1String("char")) {
+                DomChar *v = new DomChar();
+                v->read(reader);
+                setElementChar(v);
+                continue;
+            }
+            if (tag == QLatin1String("url")) {
+                DomUrl *v = new DomUrl();
+                v->read(reader);
+                setElementUrl(v);
+                continue;
+            }
+            if (tag == QLatin1String("uint")) {
+                setElementUInt(reader.readElementText().toUInt());
+                continue;
+            }
+            if (tag == QLatin1String("ulonglong")) {
+                setElementULongLong(reader.readElementText().toULongLong());
+                continue;
+            }
+            if (tag == QLatin1String("brush")) {
+                DomBrush *v = new DomBrush();
+                v->read(reader);
+                setElementBrush(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomProperty::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+    if (node.hasAttribute(QLatin1String("stdset")))
+        setAttributeStdset(node.attribute(QLatin1String("stdset")).toInt());
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("bool")) {
+                setElementBool(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("color")) {
+                DomColor *v = new DomColor();
+                v->read(e);
+                setElementColor(v);
+                continue;
+            }
+            if (tag == QLatin1String("cstring")) {
+                setElementCstring(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("cursor")) {
+                setElementCursor(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("cursorshape")) {
+                setElementCursorShape(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("enum")) {
+                setElementEnum(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("font")) {
+                DomFont *v = new DomFont();
+                v->read(e);
+                setElementFont(v);
+                continue;
+            }
+            if (tag == QLatin1String("iconset")) {
+                DomResourceIcon *v = new DomResourceIcon();
+                v->read(e);
+                setElementIconSet(v);
+                continue;
+            }
+            if (tag == QLatin1String("pixmap")) {
+                DomResourcePixmap *v = new DomResourcePixmap();
+                v->read(e);
+                setElementPixmap(v);
+                continue;
+            }
+            if (tag == QLatin1String("palette")) {
+                DomPalette *v = new DomPalette();
+                v->read(e);
+                setElementPalette(v);
+                continue;
+            }
+            if (tag == QLatin1String("point")) {
+                DomPoint *v = new DomPoint();
+                v->read(e);
+                setElementPoint(v);
+                continue;
+            }
+            if (tag == QLatin1String("rect")) {
+                DomRect *v = new DomRect();
+                v->read(e);
+                setElementRect(v);
+                continue;
+            }
+            if (tag == QLatin1String("set")) {
+                setElementSet(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("locale")) {
+                DomLocale *v = new DomLocale();
+                v->read(e);
+                setElementLocale(v);
+                continue;
+            }
+            if (tag == QLatin1String("sizepolicy")) {
+                DomSizePolicy *v = new DomSizePolicy();
+                v->read(e);
+                setElementSizePolicy(v);
+                continue;
+            }
+            if (tag == QLatin1String("size")) {
+                DomSize *v = new DomSize();
+                v->read(e);
+                setElementSize(v);
+                continue;
+            }
+            if (tag == QLatin1String("string")) {
+                DomString *v = new DomString();
+                v->read(e);
+                setElementString(v);
+                continue;
+            }
+            if (tag == QLatin1String("stringlist")) {
+                DomStringList *v = new DomStringList();
+                v->read(e);
+                setElementStringList(v);
+                continue;
+            }
+            if (tag == QLatin1String("number")) {
+                setElementNumber(e.text().toInt());
+                continue;
+            }
+            if (tag == QLatin1String("float")) {
+                setElementFloat(e.text().toFloat());
+                continue;
+            }
+            if (tag == QLatin1String("double")) {
+                setElementDouble(e.text().toDouble());
+                continue;
+            }
+            if (tag == QLatin1String("date")) {
+                DomDate *v = new DomDate();
+                v->read(e);
+                setElementDate(v);
+                continue;
+            }
+            if (tag == QLatin1String("time")) {
+                DomTime *v = new DomTime();
+                v->read(e);
+                setElementTime(v);
+                continue;
+            }
+            if (tag == QLatin1String("datetime")) {
+                DomDateTime *v = new DomDateTime();
+                v->read(e);
+                setElementDateTime(v);
+                continue;
+            }
+            if (tag == QLatin1String("pointf")) {
+                DomPointF *v = new DomPointF();
+                v->read(e);
+                setElementPointF(v);
+                continue;
+            }
+            if (tag == QLatin1String("rectf")) {
+                DomRectF *v = new DomRectF();
+                v->read(e);
+                setElementRectF(v);
+                continue;
+            }
+            if (tag == QLatin1String("sizef")) {
+                DomSizeF *v = new DomSizeF();
+                v->read(e);
+                setElementSizeF(v);
+                continue;
+            }
+            if (tag == QLatin1String("longlong")) {
+                setElementLongLong(e.text().toLongLong());
+                continue;
+            }
+            if (tag == QLatin1String("char")) {
+                DomChar *v = new DomChar();
+                v->read(e);
+                setElementChar(v);
+                continue;
+            }
+            if (tag == QLatin1String("url")) {
+                DomUrl *v = new DomUrl();
+                v->read(e);
+                setElementUrl(v);
+                continue;
+            }
+            if (tag == QLatin1String("uint")) {
+                setElementUInt(e.text().toUInt());
+                continue;
+            }
+            if (tag == QLatin1String("ulonglong")) {
+                setElementULongLong(e.text().toULongLong());
+                continue;
+            }
+            if (tag == QLatin1String("brush")) {
+                DomBrush *v = new DomBrush();
+                v->read(e);
+                setElementBrush(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomProperty::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("property") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    if (hasAttributeStdset())
+        writer.writeAttribute(QLatin1String("stdset"), QString::number(attributeStdset()));
+
+    switch (kind()) {
+        case Bool: {
+            writer.writeTextElement(QLatin1String("bool"), elementBool());
+            break;
+        }
+        case Color: {
+            DomColor* v = elementColor();
+            if (v != 0) {
+                v->write(writer, QLatin1String("color"));
+            }
+            break;
+        }
+        case Cstring: {
+            writer.writeTextElement(QLatin1String("cstring"), elementCstring());
+            break;
+        }
+        case Cursor: {
+            writer.writeTextElement(QLatin1String("cursor"), QString::number(elementCursor()));
+            break;
+        }
+        case CursorShape: {
+            writer.writeTextElement(QLatin1String("cursorShape"), elementCursorShape());
+            break;
+        }
+        case Enum: {
+            writer.writeTextElement(QLatin1String("enum"), elementEnum());
+            break;
+        }
+        case Font: {
+            DomFont* v = elementFont();
+            if (v != 0) {
+                v->write(writer, QLatin1String("font"));
+            }
+            break;
+        }
+        case IconSet: {
+            DomResourceIcon* v = elementIconSet();
+            if (v != 0) {
+                v->write(writer, QLatin1String("iconset"));
+            }
+            break;
+        }
+        case Pixmap: {
+            DomResourcePixmap* v = elementPixmap();
+            if (v != 0) {
+                v->write(writer, QLatin1String("pixmap"));
+            }
+            break;
+        }
+        case Palette: {
+            DomPalette* v = elementPalette();
+            if (v != 0) {
+                v->write(writer, QLatin1String("palette"));
+            }
+            break;
+        }
+        case Point: {
+            DomPoint* v = elementPoint();
+            if (v != 0) {
+                v->write(writer, QLatin1String("point"));
+            }
+            break;
+        }
+        case Rect: {
+            DomRect* v = elementRect();
+            if (v != 0) {
+                v->write(writer, QLatin1String("rect"));
+            }
+            break;
+        }
+        case Set: {
+            writer.writeTextElement(QLatin1String("set"), elementSet());
+            break;
+        }
+        case Locale: {
+            DomLocale* v = elementLocale();
+            if (v != 0) {
+                v->write(writer, QLatin1String("locale"));
+            }
+            break;
+        }
+        case SizePolicy: {
+            DomSizePolicy* v = elementSizePolicy();
+            if (v != 0) {
+                v->write(writer, QLatin1String("sizepolicy"));
+            }
+            break;
+        }
+        case Size: {
+            DomSize* v = elementSize();
+            if (v != 0) {
+                v->write(writer, QLatin1String("size"));
+            }
+            break;
+        }
+        case String: {
+            DomString* v = elementString();
+            if (v != 0) {
+                v->write(writer, QLatin1String("string"));
+            }
+            break;
+        }
+        case StringList: {
+            DomStringList* v = elementStringList();
+            if (v != 0) {
+                v->write(writer, QLatin1String("stringlist"));
+            }
+            break;
+        }
+        case Number: {
+            writer.writeTextElement(QLatin1String("number"), QString::number(elementNumber()));
+            break;
+        }
+        case Float: {
+            writer.writeTextElement(QLatin1String("float"), QString::number(elementFloat(), 'f', 8));
+            break;
+        }
+        case Double: {
+            writer.writeTextElement(QLatin1String("double"), QString::number(elementDouble(), 'f', 15));
+            break;
+        }
+        case Date: {
+            DomDate* v = elementDate();
+            if (v != 0) {
+                v->write(writer, QLatin1String("date"));
+            }
+            break;
+        }
+        case Time: {
+            DomTime* v = elementTime();
+            if (v != 0) {
+                v->write(writer, QLatin1String("time"));
+            }
+            break;
+        }
+        case DateTime: {
+            DomDateTime* v = elementDateTime();
+            if (v != 0) {
+                v->write(writer, QLatin1String("datetime"));
+            }
+            break;
+        }
+        case PointF: {
+            DomPointF* v = elementPointF();
+            if (v != 0) {
+                v->write(writer, QLatin1String("pointf"));
+            }
+            break;
+        }
+        case RectF: {
+            DomRectF* v = elementRectF();
+            if (v != 0) {
+                v->write(writer, QLatin1String("rectf"));
+            }
+            break;
+        }
+        case SizeF: {
+            DomSizeF* v = elementSizeF();
+            if (v != 0) {
+                v->write(writer, QLatin1String("sizef"));
+            }
+            break;
+        }
+        case LongLong: {
+            writer.writeTextElement(QLatin1String("longLong"), QString::number(elementLongLong()));
+            break;
+        }
+        case Char: {
+            DomChar* v = elementChar();
+            if (v != 0) {
+                v->write(writer, QLatin1String("char"));
+            }
+            break;
+        }
+        case Url: {
+            DomUrl* v = elementUrl();
+            if (v != 0) {
+                v->write(writer, QLatin1String("url"));
+            }
+            break;
+        }
+        case UInt: {
+            writer.writeTextElement(QLatin1String("UInt"), QString::number(elementUInt()));
+            break;
+        }
+        case ULongLong: {
+            writer.writeTextElement(QLatin1String("uLongLong"), QString::number(elementULongLong()));
+            break;
+        }
+        case Brush: {
+            DomBrush* v = elementBrush();
+            if (v != 0) {
+                v->write(writer, QLatin1String("brush"));
+            }
+            break;
+        }
+        default:
+            break;
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomProperty::setElementBool(const QString& a)
+{
+    clear(false);
+    m_kind = Bool;
+    m_bool = a;
+}
+
+DomColor* DomProperty::takeElementColor() 
+{
+    DomColor* a = m_color;
+    m_color = 0;
+    return a;
+}
+
+void DomProperty::setElementColor(DomColor* a)
+{
+    clear(false);
+    m_kind = Color;
+    m_color = a;
+}
+
+void DomProperty::setElementCstring(const QString& a)
+{
+    clear(false);
+    m_kind = Cstring;
+    m_cstring = a;
+}
+
+void DomProperty::setElementCursor(int a)
+{
+    clear(false);
+    m_kind = Cursor;
+    m_cursor = a;
+}
+
+void DomProperty::setElementCursorShape(const QString& a)
+{
+    clear(false);
+    m_kind = CursorShape;
+    m_cursorShape = a;
+}
+
+void DomProperty::setElementEnum(const QString& a)
+{
+    clear(false);
+    m_kind = Enum;
+    m_enum = a;
+}
+
+DomFont* DomProperty::takeElementFont() 
+{
+    DomFont* a = m_font;
+    m_font = 0;
+    return a;
+}
+
+void DomProperty::setElementFont(DomFont* a)
+{
+    clear(false);
+    m_kind = Font;
+    m_font = a;
+}
+
+DomResourceIcon* DomProperty::takeElementIconSet() 
+{
+    DomResourceIcon* a = m_iconSet;
+    m_iconSet = 0;
+    return a;
+}
+
+void DomProperty::setElementIconSet(DomResourceIcon* a)
+{
+    clear(false);
+    m_kind = IconSet;
+    m_iconSet = a;
+}
+
+DomResourcePixmap* DomProperty::takeElementPixmap() 
+{
+    DomResourcePixmap* a = m_pixmap;
+    m_pixmap = 0;
+    return a;
+}
+
+void DomProperty::setElementPixmap(DomResourcePixmap* a)
+{
+    clear(false);
+    m_kind = Pixmap;
+    m_pixmap = a;
+}
+
+DomPalette* DomProperty::takeElementPalette() 
+{
+    DomPalette* a = m_palette;
+    m_palette = 0;
+    return a;
+}
+
+void DomProperty::setElementPalette(DomPalette* a)
+{
+    clear(false);
+    m_kind = Palette;
+    m_palette = a;
+}
+
+DomPoint* DomProperty::takeElementPoint() 
+{
+    DomPoint* a = m_point;
+    m_point = 0;
+    return a;
+}
+
+void DomProperty::setElementPoint(DomPoint* a)
+{
+    clear(false);
+    m_kind = Point;
+    m_point = a;
+}
+
+DomRect* DomProperty::takeElementRect() 
+{
+    DomRect* a = m_rect;
+    m_rect = 0;
+    return a;
+}
+
+void DomProperty::setElementRect(DomRect* a)
+{
+    clear(false);
+    m_kind = Rect;
+    m_rect = a;
+}
+
+void DomProperty::setElementSet(const QString& a)
+{
+    clear(false);
+    m_kind = Set;
+    m_set = a;
+}
+
+DomLocale* DomProperty::takeElementLocale() 
+{
+    DomLocale* a = m_locale;
+    m_locale = 0;
+    return a;
+}
+
+void DomProperty::setElementLocale(DomLocale* a)
+{
+    clear(false);
+    m_kind = Locale;
+    m_locale = a;
+}
+
+DomSizePolicy* DomProperty::takeElementSizePolicy() 
+{
+    DomSizePolicy* a = m_sizePolicy;
+    m_sizePolicy = 0;
+    return a;
+}
+
+void DomProperty::setElementSizePolicy(DomSizePolicy* a)
+{
+    clear(false);
+    m_kind = SizePolicy;
+    m_sizePolicy = a;
+}
+
+DomSize* DomProperty::takeElementSize() 
+{
+    DomSize* a = m_size;
+    m_size = 0;
+    return a;
+}
+
+void DomProperty::setElementSize(DomSize* a)
+{
+    clear(false);
+    m_kind = Size;
+    m_size = a;
+}
+
+DomString* DomProperty::takeElementString() 
+{
+    DomString* a = m_string;
+    m_string = 0;
+    return a;
+}
+
+void DomProperty::setElementString(DomString* a)
+{
+    clear(false);
+    m_kind = String;
+    m_string = a;
+}
+
+DomStringList* DomProperty::takeElementStringList() 
+{
+    DomStringList* a = m_stringList;
+    m_stringList = 0;
+    return a;
+}
+
+void DomProperty::setElementStringList(DomStringList* a)
+{
+    clear(false);
+    m_kind = StringList;
+    m_stringList = a;
+}
+
+void DomProperty::setElementNumber(int a)
+{
+    clear(false);
+    m_kind = Number;
+    m_number = a;
+}
+
+void DomProperty::setElementFloat(float a)
+{
+    clear(false);
+    m_kind = Float;
+    m_float = a;
+}
+
+void DomProperty::setElementDouble(double a)
+{
+    clear(false);
+    m_kind = Double;
+    m_double = a;
+}
+
+DomDate* DomProperty::takeElementDate() 
+{
+    DomDate* a = m_date;
+    m_date = 0;
+    return a;
+}
+
+void DomProperty::setElementDate(DomDate* a)
+{
+    clear(false);
+    m_kind = Date;
+    m_date = a;
+}
+
+DomTime* DomProperty::takeElementTime() 
+{
+    DomTime* a = m_time;
+    m_time = 0;
+    return a;
+}
+
+void DomProperty::setElementTime(DomTime* a)
+{
+    clear(false);
+    m_kind = Time;
+    m_time = a;
+}
+
+DomDateTime* DomProperty::takeElementDateTime() 
+{
+    DomDateTime* a = m_dateTime;
+    m_dateTime = 0;
+    return a;
+}
+
+void DomProperty::setElementDateTime(DomDateTime* a)
+{
+    clear(false);
+    m_kind = DateTime;
+    m_dateTime = a;
+}
+
+DomPointF* DomProperty::takeElementPointF() 
+{
+    DomPointF* a = m_pointF;
+    m_pointF = 0;
+    return a;
+}
+
+void DomProperty::setElementPointF(DomPointF* a)
+{
+    clear(false);
+    m_kind = PointF;
+    m_pointF = a;
+}
+
+DomRectF* DomProperty::takeElementRectF() 
+{
+    DomRectF* a = m_rectF;
+    m_rectF = 0;
+    return a;
+}
+
+void DomProperty::setElementRectF(DomRectF* a)
+{
+    clear(false);
+    m_kind = RectF;
+    m_rectF = a;
+}
+
+DomSizeF* DomProperty::takeElementSizeF() 
+{
+    DomSizeF* a = m_sizeF;
+    m_sizeF = 0;
+    return a;
+}
+
+void DomProperty::setElementSizeF(DomSizeF* a)
+{
+    clear(false);
+    m_kind = SizeF;
+    m_sizeF = a;
+}
+
+void DomProperty::setElementLongLong(qlonglong a)
+{
+    clear(false);
+    m_kind = LongLong;
+    m_longLong = a;
+}
+
+DomChar* DomProperty::takeElementChar() 
+{
+    DomChar* a = m_char;
+    m_char = 0;
+    return a;
+}
+
+void DomProperty::setElementChar(DomChar* a)
+{
+    clear(false);
+    m_kind = Char;
+    m_char = a;
+}
+
+DomUrl* DomProperty::takeElementUrl() 
+{
+    DomUrl* a = m_url;
+    m_url = 0;
+    return a;
+}
+
+void DomProperty::setElementUrl(DomUrl* a)
+{
+    clear(false);
+    m_kind = Url;
+    m_url = a;
+}
+
+void DomProperty::setElementUInt(uint a)
+{
+    clear(false);
+    m_kind = UInt;
+    m_UInt = a;
+}
+
+void DomProperty::setElementULongLong(qulonglong a)
+{
+    clear(false);
+    m_kind = ULongLong;
+    m_uLongLong = a;
+}
+
+DomBrush* DomProperty::takeElementBrush() 
+{
+    DomBrush* a = m_brush;
+    m_brush = 0;
+    return a;
+}
+
+void DomProperty::setElementBrush(DomBrush* a)
+{
+    clear(false);
+    m_kind = Brush;
+    m_brush = a;
+}
+
+void DomConnections::clear(bool clear_all)
+{
+    qDeleteAll(m_connection);
+    m_connection.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomConnections::DomConnections()
+{
+    m_children = 0;
+}
+
+DomConnections::~DomConnections()
+{
+    qDeleteAll(m_connection);
+    m_connection.clear();
+}
+
+void DomConnections::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("connection")) {
+                DomConnection *v = new DomConnection();
+                v->read(reader);
+                m_connection.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomConnections::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("connection")) {
+                DomConnection *v = new DomConnection();
+                v->read(e);
+                m_connection.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomConnections::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connections") : tagName.toLower());
+
+    for (int i = 0; i < m_connection.size(); ++i) {
+        DomConnection* v = m_connection[i];
+        v->write(writer, QLatin1String("connection"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnections::setElementConnection(const QList<DomConnection*>& a)
+{
+    m_children |= Connection;
+    m_connection = a;
+}
+
+void DomConnection::clear(bool clear_all)
+{
+    delete m_hints;
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+    m_hints = 0;
+}
+
+DomConnection::DomConnection()
+{
+    m_children = 0;
+    m_hints = 0;
+}
+
+DomConnection::~DomConnection()
+{
+    delete m_hints;
+}
+
+void DomConnection::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("sender")) {
+                setElementSender(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("signal")) {
+                setElementSignal(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("receiver")) {
+                setElementReceiver(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("slot")) {
+                setElementSlot(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("hints")) {
+                DomConnectionHints *v = new DomConnectionHints();
+                v->read(reader);
+                setElementHints(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomConnection::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("sender")) {
+                setElementSender(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("signal")) {
+                setElementSignal(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("receiver")) {
+                setElementReceiver(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("slot")) {
+                setElementSlot(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("hints")) {
+                DomConnectionHints *v = new DomConnectionHints();
+                v->read(e);
+                setElementHints(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomConnection::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connection") : tagName.toLower());
+
+    if (m_children & Sender) {
+        writer.writeTextElement(QLatin1String("sender"), m_sender);
+    }
+
+    if (m_children & Signal) {
+        writer.writeTextElement(QLatin1String("signal"), m_signal);
+    }
+
+    if (m_children & Receiver) {
+        writer.writeTextElement(QLatin1String("receiver"), m_receiver);
+    }
+
+    if (m_children & Slot) {
+        writer.writeTextElement(QLatin1String("slot"), m_slot);
+    }
+
+    if (m_children & Hints) {
+        m_hints->write(writer, QLatin1String("hints"));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnection::setElementSender(const QString& a)
+{
+    m_children |= Sender;
+    m_sender = a;
+}
+
+void DomConnection::setElementSignal(const QString& a)
+{
+    m_children |= Signal;
+    m_signal = a;
+}
+
+void DomConnection::setElementReceiver(const QString& a)
+{
+    m_children |= Receiver;
+    m_receiver = a;
+}
+
+void DomConnection::setElementSlot(const QString& a)
+{
+    m_children |= Slot;
+    m_slot = a;
+}
+
+DomConnectionHints* DomConnection::takeElementHints() 
+{
+    DomConnectionHints* a = m_hints;
+    m_hints = 0;
+    m_children ^= Hints;
+    return a;
+}
+
+void DomConnection::setElementHints(DomConnectionHints* a)
+{
+    delete m_hints;
+    m_children |= Hints;
+    m_hints = a;
+}
+
+void DomConnection::clearElementSender()
+{
+    m_children &= ~Sender;
+}
+
+void DomConnection::clearElementSignal()
+{
+    m_children &= ~Signal;
+}
+
+void DomConnection::clearElementReceiver()
+{
+    m_children &= ~Receiver;
+}
+
+void DomConnection::clearElementSlot()
+{
+    m_children &= ~Slot;
+}
+
+void DomConnection::clearElementHints()
+{
+    delete m_hints;
+    m_hints = 0;
+    m_children &= ~Hints;
+}
+
+void DomConnectionHints::clear(bool clear_all)
+{
+    qDeleteAll(m_hint);
+    m_hint.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomConnectionHints::DomConnectionHints()
+{
+    m_children = 0;
+}
+
+DomConnectionHints::~DomConnectionHints()
+{
+    qDeleteAll(m_hint);
+    m_hint.clear();
+}
+
+void DomConnectionHints::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("hint")) {
+                DomConnectionHint *v = new DomConnectionHint();
+                v->read(reader);
+                m_hint.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomConnectionHints::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("hint")) {
+                DomConnectionHint *v = new DomConnectionHint();
+                v->read(e);
+                m_hint.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomConnectionHints::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connectionhints") : tagName.toLower());
+
+    for (int i = 0; i < m_hint.size(); ++i) {
+        DomConnectionHint* v = m_hint[i];
+        v->write(writer, QLatin1String("hint"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnectionHints::setElementHint(const QList<DomConnectionHint*>& a)
+{
+    m_children |= Hint;
+    m_hint = a;
+}
+
+void DomConnectionHint::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_type = false;
+    }
+
+    m_children = 0;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomConnectionHint::DomConnectionHint()
+{
+    m_children = 0;
+    m_has_attr_type = false;
+    m_x = 0;
+    m_y = 0;
+}
+
+DomConnectionHint::~DomConnectionHint()
+{
+}
+
+void DomConnectionHint::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(reader.readElementText().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(reader.readElementText().toInt());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomConnectionHint::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("type")))
+        setAttributeType(node.attribute(QLatin1String("type")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QString(QLatin1Char('x'))) {
+                setElementX(e.text().toInt());
+                continue;
+            }
+            if (tag == QString(QLatin1Char('y'))) {
+                setElementY(e.text().toInt());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomConnectionHint::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connectionhint") : tagName.toLower());
+
+    if (hasAttributeType())
+        writer.writeAttribute(QLatin1String("type"), attributeType());
+
+    if (m_children & X) {
+        writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x));
+    }
+
+    if (m_children & Y) {
+        writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y));
+    }
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomConnectionHint::setElementX(int a)
+{
+    m_children |= X;
+    m_x = a;
+}
+
+void DomConnectionHint::setElementY(int a)
+{
+    m_children |= Y;
+    m_y = a;
+}
+
+void DomConnectionHint::clearElementX()
+{
+    m_children &= ~X;
+}
+
+void DomConnectionHint::clearElementY()
+{
+    m_children &= ~Y;
+}
+
+void DomScript::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_source = false;
+    m_has_attr_language = false;
+    }
+
+    m_children = 0;
+}
+
+DomScript::DomScript()
+{
+    m_children = 0;
+    m_has_attr_source = false;
+    m_has_attr_language = false;
+}
+
+DomScript::~DomScript()
+{
+}
+
+void DomScript::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("source")) {
+            setAttributeSource(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("language")) {
+            setAttributeLanguage(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomScript::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("source")))
+        setAttributeSource(node.attribute(QLatin1String("source")));
+    if (node.hasAttribute(QLatin1String("language")))
+        setAttributeLanguage(node.attribute(QLatin1String("language")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomScript::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("script") : tagName.toLower());
+
+    if (hasAttributeSource())
+        writer.writeAttribute(QLatin1String("source"), attributeSource());
+
+    if (hasAttributeLanguage())
+        writer.writeAttribute(QLatin1String("language"), attributeLanguage());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomWidgetData::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomWidgetData::DomWidgetData()
+{
+    m_children = 0;
+}
+
+DomWidgetData::~DomWidgetData()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomWidgetData::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomWidgetData::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomWidgetData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("widgetdata") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomWidgetData::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomDesignerData::clear(bool clear_all)
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomDesignerData::DomDesignerData()
+{
+    m_children = 0;
+}
+
+DomDesignerData::~DomDesignerData()
+{
+    qDeleteAll(m_property);
+    m_property.clear();
+}
+
+void DomDesignerData::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(reader);
+                m_property.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomDesignerData::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("property")) {
+                DomProperty *v = new DomProperty();
+                v->read(e);
+                m_property.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomDesignerData::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("designerdata") : tagName.toLower());
+
+    for (int i = 0; i < m_property.size(); ++i) {
+        DomProperty* v = m_property[i];
+        v->write(writer, QLatin1String("property"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomDesignerData::setElementProperty(const QList<DomProperty*>& a)
+{
+    m_children |= Property;
+    m_property = a;
+}
+
+void DomSlots::clear(bool clear_all)
+{
+    m_signal.clear();
+    m_slot.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomSlots::DomSlots()
+{
+    m_children = 0;
+}
+
+DomSlots::~DomSlots()
+{
+    m_signal.clear();
+    m_slot.clear();
+}
+
+void DomSlots::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("signal")) {
+                m_signal.append(reader.readElementText());
+                continue;
+            }
+            if (tag == QLatin1String("slot")) {
+                m_slot.append(reader.readElementText());
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomSlots::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("signal")) {
+                m_signal.append(e.text());
+                continue;
+            }
+            if (tag == QLatin1String("slot")) {
+                m_slot.append(e.text());
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomSlots::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("slots") : tagName.toLower());
+
+    for (int i = 0; i < m_signal.size(); ++i) {
+        QString v = m_signal[i];
+        writer.writeTextElement(QLatin1String("signal"), v);
+    }
+    for (int i = 0; i < m_slot.size(); ++i) {
+        QString v = m_slot[i];
+        writer.writeTextElement(QLatin1String("slot"), v);
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomSlots::setElementSignal(const QStringList& a)
+{
+    m_children |= Signal;
+    m_signal = a;
+}
+
+void DomSlots::setElementSlot(const QStringList& a)
+{
+    m_children |= Slot;
+    m_slot = a;
+}
+
+void DomPropertySpecifications::clear(bool clear_all)
+{
+    qDeleteAll(m_stringpropertyspecification);
+    m_stringpropertyspecification.clear();
+
+    if (clear_all) {
+    m_text.clear();
+    }
+
+    m_children = 0;
+}
+
+DomPropertySpecifications::DomPropertySpecifications()
+{
+    m_children = 0;
+}
+
+DomPropertySpecifications::~DomPropertySpecifications()
+{
+    qDeleteAll(m_stringpropertyspecification);
+    m_stringpropertyspecification.clear();
+}
+
+void DomPropertySpecifications::read(QXmlStreamReader &reader)
+{
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            if (tag == QLatin1String("stringpropertyspecification")) {
+                DomStringPropertySpecification *v = new DomStringPropertySpecification();
+                v->read(reader);
+                m_stringpropertyspecification.append(v);
+                continue;
+            }
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomPropertySpecifications::read(const QDomElement &node)
+{
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+            if (tag == QLatin1String("stringpropertyspecification")) {
+                DomStringPropertySpecification *v = new DomStringPropertySpecification();
+                v->read(e);
+                m_stringpropertyspecification.append(v);
+                continue;
+            }
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomPropertySpecifications::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("propertyspecifications") : tagName.toLower());
+
+    for (int i = 0; i < m_stringpropertyspecification.size(); ++i) {
+        DomStringPropertySpecification* v = m_stringpropertyspecification[i];
+        v->write(writer, QLatin1String("stringpropertyspecification"));
+    }
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+void DomPropertySpecifications::setElementStringpropertyspecification(const QList<DomStringPropertySpecification*>& a)
+{
+    m_children |= Stringpropertyspecification;
+    m_stringpropertyspecification = a;
+}
+
+void DomStringPropertySpecification::clear(bool clear_all)
+{
+
+    if (clear_all) {
+    m_text.clear();
+    m_has_attr_name = false;
+    m_has_attr_type = false;
+    m_has_attr_notr = false;
+    }
+
+    m_children = 0;
+}
+
+DomStringPropertySpecification::DomStringPropertySpecification()
+{
+    m_children = 0;
+    m_has_attr_name = false;
+    m_has_attr_type = false;
+    m_has_attr_notr = false;
+}
+
+DomStringPropertySpecification::~DomStringPropertySpecification()
+{
+}
+
+void DomStringPropertySpecification::read(QXmlStreamReader &reader)
+{
+
+    foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+        QStringRef name = attribute.name();
+        if (name == QLatin1String("name")) {
+            setAttributeName(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("type")) {
+            setAttributeType(attribute.value().toString());
+            continue;
+        }
+        if (name == QLatin1String("notr")) {
+            setAttributeNotr(attribute.value().toString());
+            continue;
+        }
+        reader.raiseError(QLatin1String("Unexpected attribute ") + name.toString());
+    }
+
+    for (bool finished = false; !finished && !reader.hasError();) {
+        switch (reader.readNext()) {
+        case QXmlStreamReader::StartElement : {
+            const QString tag = reader.name().toString().toLower();
+            reader.raiseError(QLatin1String("Unexpected element ") + tag);
+        }
+            break;
+        case QXmlStreamReader::EndElement :
+            finished = true;
+            break;
+        case QXmlStreamReader::Characters :
+            if (!reader.isWhitespace())
+                m_text.append(reader.text().toString());
+            break;
+        default :
+            break;
+        }
+    }
+}
+
+#ifdef QUILOADER_QDOM_READ
+void DomStringPropertySpecification::read(const QDomElement &node)
+{
+    if (node.hasAttribute(QLatin1String("name")))
+        setAttributeName(node.attribute(QLatin1String("name")));
+    if (node.hasAttribute(QLatin1String("type")))
+        setAttributeType(node.attribute(QLatin1String("type")));
+    if (node.hasAttribute(QLatin1String("notr")))
+        setAttributeNotr(node.attribute(QLatin1String("notr")));
+
+    for (QDomNode n = node.firstChild(); !n.isNull(); n = n.nextSibling()) {
+        if (!n.isElement())
+            continue;
+        QDomElement e = n.toElement();
+        QString tag = e.tagName().toLower();
+    }
+    m_text.clear();
+    for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling()) {
+        if (child.isText())
+            m_text.append(child.nodeValue());
+     }
+}
+#endif
+
+void DomStringPropertySpecification::write(QXmlStreamWriter &writer, const QString &tagName) const
+{
+    writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("stringpropertyspecification") : tagName.toLower());
+
+    if (hasAttributeName())
+        writer.writeAttribute(QLatin1String("name"), attributeName());
+
+    if (hasAttributeType())
+        writer.writeAttribute(QLatin1String("type"), attributeType());
+
+    if (hasAttributeNotr())
+        writer.writeAttribute(QLatin1String("notr"), attributeNotr());
+
+    if (!m_text.isEmpty())
+        writer.writeCharacters(m_text);
+
+    writer.writeEndElement();
+}
+
+QT_END_NAMESPACE
+