File indexing completed on 2025-07-13 10:51:49
0001 /* This file is part of the KDE project 0002 SPDX-FileCopyrightText: 2003 Norbert Andres <nandres@web.de> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 0008 #ifndef OPENCALCSTYLEEXPORT_H 0009 #define OPENCALCSTYLEEXPORT_H 0010 0011 #include "sheets/core/Style.h" 0012 0013 #include <QColor> 0014 #include <QFont> 0015 #include <QPen> 0016 #include <QString> 0017 #include <QList> 0018 0019 namespace Calligra 0020 { 0021 namespace Sheets 0022 { 0023 class Cell; 0024 } 0025 } 0026 0027 class QDomDocument; 0028 class QDomElement; 0029 0030 class Style 0031 { 0032 public: 0033 enum breakBefore { none, automatic, page }; 0034 0035 Style() : breakB(none), size(0.0) {} 0036 0037 QString name; 0038 uint breakB; 0039 double size; 0040 }; 0041 0042 class SheetStyle 0043 { 0044 public: 0045 SheetStyle() : visible(true) {} 0046 0047 void copyData(SheetStyle const & ts) { 0048 visible = ts.visible; 0049 } 0050 static bool isEqual(SheetStyle const * const t1, SheetStyle const & t2); 0051 0052 QString name; 0053 bool visible; 0054 }; 0055 0056 class NumberStyle 0057 { 0058 public: 0059 NumberStyle() {} 0060 0061 enum NumberType { Boolean, Date, Number, Percentage, Time }; 0062 0063 void copyData(NumberStyle const & ts) { 0064 type = ts.type; 0065 } 0066 static bool isEqual(NumberStyle const * const t1, NumberStyle const & t2); 0067 0068 QString name; 0069 0070 NumberType type; 0071 QString pattern; 0072 }; 0073 0074 class CellStyle 0075 { 0076 public: 0077 CellStyle(); 0078 0079 void copyData(CellStyle const & ts); 0080 static bool isEqual(CellStyle const * const t1, CellStyle const & t2); 0081 0082 // all except the number style 0083 static void loadData(CellStyle & cs, const Calligra::Sheets::Cell& cell); 0084 0085 QString name; 0086 0087 QFont font; 0088 QString numberStyle; 0089 QColor color; 0090 QColor bgColor; 0091 double indent; 0092 bool wrap; 0093 bool vertical; 0094 int angle; 0095 bool print; 0096 QPen left; 0097 QPen right; 0098 QPen top; 0099 QPen bottom; 0100 bool hideAll; 0101 bool hideFormula; 0102 bool notProtected; 0103 0104 Calligra::Sheets::Style::HAlign alignX; 0105 Calligra::Sheets::Style::VAlign alignY; 0106 }; 0107 0108 class ColumnStyle : public Style 0109 { 0110 public: 0111 ColumnStyle() : Style() {} 0112 0113 void copyData(ColumnStyle const & cs); 0114 static bool isEqual(ColumnStyle const * const c1, ColumnStyle const & c2); 0115 }; 0116 0117 class RowStyle : public Style 0118 { 0119 public: 0120 RowStyle() : Style() {} 0121 0122 void copyData(RowStyle const & cs); 0123 static bool isEqual(RowStyle const * const c1, RowStyle const & c2); 0124 }; 0125 0126 class OpenCalcStyles 0127 { 0128 public: 0129 OpenCalcStyles(); 0130 ~OpenCalcStyles(); 0131 0132 void writeStyles(QDomDocument & doc, QDomElement & autoStyles); 0133 void writeFontDecl(QDomDocument & doc, QDomElement & content); 0134 0135 void addFont(QFont const & font, bool def = false); 0136 0137 QString cellStyle(CellStyle const & cs); 0138 QString columnStyle(ColumnStyle const & cs); 0139 QString numberStyle(NumberStyle const & ns); 0140 QString rowStyle(RowStyle const & rs); 0141 QString sheetStyle(SheetStyle const & ts); 0142 0143 private: 0144 QList<CellStyle*> m_cellStyles; 0145 QList<ColumnStyle*> m_columnStyles; 0146 QList<NumberStyle*> m_numberStyles; 0147 QList<RowStyle*> m_rowStyles; 0148 QList<SheetStyle*> m_sheetStyles; 0149 QList<QFont*> m_fontList; 0150 0151 QFont m_defaultFont; 0152 0153 void addCellStyles(QDomDocument & doc, QDomElement & autoStyles); 0154 void addColumnStyles(QDomDocument & doc, QDomElement & autoStyles); 0155 void addNumberStyles(QDomDocument & doc, QDomElement & autoStyles); 0156 void addRowStyles(QDomDocument & doc, QDomElement & autoStyles); 0157 void addSheetStyles(QDomDocument & doc, QDomElement & autoStyles); 0158 }; 0159 0160 0161 0162 #endif