File indexing completed on 2025-11-09 12:09:44

0001 /* This file is part of the KDE project
0002    SPDX-FileCopyrightText: 2000-2003 David Faure <faure@kde.org>
0003    SPDX-FileCopyrightText: 2003 Norbert Andres <nandres@web.de>
0004 
0005    SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef OPENCALCEXPORT_H
0009 #define OPENCALCEXPORT_H
0010 
0011 #include "opencalcstyleexport.h"
0012 
0013 #include <KoFilter.h>
0014 #include <QByteArray>
0015 #include <QVariantList>
0016 
0017 class QDomDocument;
0018 class QDomElement;
0019 class KoStore;
0020 
0021 namespace Calligra
0022 {
0023 namespace Sheets
0024 {
0025 class DocBase;
0026 class Localization;
0027 class Sheet;
0028 }
0029 }
0030 
0031 class OpenCalcExport : public KoFilter
0032 {
0033     Q_OBJECT
0034 
0035 public:
0036     OpenCalcExport(QObject* parent, const QVariantList &);
0037     ~OpenCalcExport() override {}
0038 
0039     KoFilter::ConversionStatus convert(const QByteArray & from,
0040             const QByteArray & to) override;
0041 
0042 private:
0043     enum files { metaXML = 0x01, contentXML = 0x02, stylesXML = 0x04, settingsXML = 0x08 };
0044     OpenCalcStyles m_styles;
0045 
0046     bool writeFile(const Calligra::Sheets::DocBase * ksdoc);
0047 
0048     bool exportDocInfo(KoStore * store, const Calligra::Sheets::DocBase * ksdoc);
0049     bool exportStyles(KoStore * store, const Calligra::Sheets::DocBase * ksdoc);
0050     bool exportContent(KoStore * store, const Calligra::Sheets::DocBase * ksdoc);
0051     bool exportSettings(KoStore * store, const Calligra::Sheets::DocBase * ksdoc);
0052 
0053     bool exportBody(QDomDocument & doc, QDomElement & content, const Calligra::Sheets::DocBase * ksdoc);
0054     void exportSheet(QDomDocument & doc, QDomElement & tabElem,
0055                      Calligra::Sheets::Sheet * sheet, int maxCols, int maxRows);
0056     void exportCells(QDomDocument & doc, QDomElement & rowElem,
0057                      Calligra::Sheets::Sheet * sheet, int row, int maxCols);
0058     void exportDefaultCellStyle(QDomDocument & doc, QDomElement & officeStyles);
0059     void exportPageAutoStyles(QDomDocument & doc, QDomElement & autoStyles,
0060                               const Calligra::Sheets::DocBase * ksdoc);
0061     void exportMasterStyles(QDomDocument & doc, QDomElement & masterStyles,
0062                             const Calligra::Sheets::DocBase *ksdoc);
0063 
0064     bool writeMetaFile(KoStore * store, uint filesWritten);
0065 
0066     void convertPart(QString const & part, QDomDocument & doc,
0067                      QDomElement & parent, const Calligra::Sheets::DocBase * ksdoc);
0068     void addText(QString const & text, QDomDocument & doc,
0069                  QDomElement & parent);
0070 
0071     void createDefaultStyles();
0072     QString convertFormula(QString const & formula) const;
0073 private:
0074     /// Pointer to the Calligra::Sheets locale
0075     Calligra::Sheets::Localization* m_locale;
0076 };
0077 
0078 #endif