Files
core/ASCOfficeOdtFile/Source/OdtFormat/Content/Body.cpp

98 lines
2.1 KiB
C++

// auto inserted precompiled begin
#include "precompiled_odtformat.h"
// auto inserted precompiled end
#include "Body.h"
#include "Paragraph.h"
#include "Table.h"
#include "List.h"
#include "IndexTitle.h"
#include "TableOfContent.h"
#include "Section.h"
namespace Odt
{
namespace Content
{
Body::Body()
{
m_hasList = false;
m_hasNote = false;
}
Body::~Body()
{
}
Body::Body(const XML::XNode& node)
{
fromXML(node);
}
const Body& Body::operator =(const XML::XNode& node)
{
fromXML(node);
return *this;
}
void Body::fromXML(const XML::XNode& node)
{
const XML::XElement element(node);
UseSoftPageBreaks = element.attribute("use-soft-page-breaks").value();
m_forms = element.element("text").element("forms");
m_variableDecls = element.element("text").element("variable-decls");
m_sequenceDecls = element.element("text").element("sequence-decls");
m_hasList = false;
m_hasNote = false;
XML::Fill(Frames, element.element("text"), "frame");
for (XML::const_element_iterator i = element.element("text").Elements.begin(); i != element.element("text").Elements.end(); ++i)
{
const XML::XElement element(*i);
if (element.XName == "p" || element.XName == "h" || element.XName == "list" || element.XName == "table" || element.XName == "table-of-content" || element.XName == "index-title" || element.XName == "section")
{
Text text(*i);
m_hasList |= text.hasList();
m_hasNote |= text.hasNote();
Items->push_back(text);
}
}
}
const XML::XNode Body::toXML() const
{
return
XML::XElement(ns.office + "body",
XML::XElement(ns.office + "text",
XML::XAttribute(ns.text + "use-soft-page-breaks", UseSoftPageBreaks) +
XML::Write(m_forms) +
XML::Write(m_variableDecls) +
XML::Write(m_sequenceDecls) +
XML::Write(Frames) +
XML::Write(Items)
)
);
}
const bool Body::hasList() const
{
return m_hasList;
}
const bool Body::hasNote() const
{
return m_hasNote;
}
} // namespace Content
} // namespace Odt