123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #include <QtGlobal>
- #include <QXmlStreamWriter>
- #include <QXmlStreamReader>
- #include <QBuffer>
- #include "xlsxdrawing_p.h"
- #include "xlsxdrawinganchor_p.h"
- #include "xlsxabstractsheet.h"
- QT_BEGIN_NAMESPACE_XLSX
- Drawing::Drawing(AbstractSheet *sheet, CreateFlag flag)
- :AbstractOOXmlFile(flag), sheet(sheet)
- {
- workbook = sheet->workbook();
- }
- Drawing::~Drawing()
- {
- qDeleteAll(anchors);
- }
- void Drawing::saveToXmlFile(QIODevice *device) const
- {
- relationships()->clear();
- QXmlStreamWriter writer(device);
- writer.writeStartDocument(QStringLiteral("1.0"), true);
- writer.writeStartElement(QStringLiteral("xdr:wsDr"));
- writer.writeAttribute(QStringLiteral("xmlns:xdr"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"));
- writer.writeAttribute(QStringLiteral("xmlns:a"), QStringLiteral("http://schemas.openxmlformats.org/drawingml/2006/main"));
- for (DrawingAnchor *anchor : anchors)
- anchor->saveToXml(writer);
- writer.writeEndElement();
- writer.writeEndDocument();
- }
- bool Drawing::loadFromXmlFile(QIODevice *device)
- {
-
- QXmlStreamReader reader(device);
- while (!reader.atEnd())
- {
- reader.readNextStartElement();
- if (reader.tokenType() == QXmlStreamReader::StartElement)
- {
- if (reader.name() == QLatin1String("absoluteAnchor"))
- {
- DrawingAbsoluteAnchor * anchor = new DrawingAbsoluteAnchor(this);
- anchor->loadFromXml(reader);
- }
- else if (reader.name() == QLatin1String("oneCellAnchor"))
- {
- DrawingOneCellAnchor * anchor = new DrawingOneCellAnchor(this);
- anchor->loadFromXml(reader);
- }
- else if (reader.name() == QLatin1String("twoCellAnchor"))
- {
- DrawingTwoCellAnchor * anchor = new DrawingTwoCellAnchor(this);
- anchor->loadFromXml(reader);
- }
- }
- }
- return true;
- }
- QT_END_NAMESPACE_XLSX
|