File indexing completed on 2024-06-23 03:45:56
0001 // xlsxconditionalformatting.h 0002 0003 #ifndef QXLSX_XLSXCONDITIONALFORMATTING_H 0004 #define QXLSX_XLSXCONDITIONALFORMATTING_H 0005 0006 #include <QtGlobal> 0007 #include <QString> 0008 #include <QList> 0009 #include <QColor> 0010 #include <QXmlStreamReader> 0011 #include <QXmlStreamWriter> 0012 #include <QSharedDataPointer> 0013 0014 #include "xlsxglobal.h" 0015 #include "xlsxcellrange.h" 0016 #include "xlsxcellreference.h" 0017 0018 class ConditionalFormattingTest; 0019 0020 QT_BEGIN_NAMESPACE_XLSX 0021 0022 class Format; 0023 class Worksheet; 0024 class Styles; 0025 class ConditionalFormattingPrivate; 0026 0027 class QXLSX_EXPORT ConditionalFormatting 0028 { 0029 public: 0030 enum HighlightRuleType { 0031 Highlight_LessThan, 0032 Highlight_LessThanOrEqual, 0033 Highlight_Equal, 0034 Highlight_NotEqual, 0035 Highlight_GreaterThanOrEqual, 0036 Highlight_GreaterThan, 0037 Highlight_Between, 0038 Highlight_NotBetween, 0039 0040 Highlight_ContainsText, 0041 Highlight_NotContainsText, 0042 Highlight_BeginsWith, 0043 Highlight_EndsWith, 0044 0045 Highlight_TimePeriod, 0046 0047 Highlight_Duplicate, 0048 Highlight_Unique, 0049 Highlight_Blanks, 0050 Highlight_NoBlanks, 0051 Highlight_Errors, 0052 Highlight_NoErrors, 0053 0054 Highlight_Top, 0055 Highlight_TopPercent, 0056 Highlight_Bottom, 0057 Highlight_BottomPercent, 0058 0059 Highlight_AboveAverage, 0060 Highlight_AboveOrEqualAverage, 0061 Highlight_AboveStdDev1, 0062 Highlight_AboveStdDev2, 0063 Highlight_AboveStdDev3, 0064 Highlight_BelowAverage, 0065 Highlight_BelowOrEqualAverage, 0066 Highlight_BelowStdDev1, 0067 Highlight_BelowStdDev2, 0068 Highlight_BelowStdDev3, 0069 0070 Highlight_Expression 0071 }; 0072 0073 enum ValueObjectType 0074 { 0075 VOT_Formula, 0076 VOT_Max, 0077 VOT_Min, 0078 VOT_Num, 0079 VOT_Percent, 0080 VOT_Percentile 0081 }; 0082 0083 public: 0084 ConditionalFormatting(); 0085 ConditionalFormatting(const ConditionalFormatting &other); 0086 ~ConditionalFormatting(); 0087 0088 public: 0089 bool addHighlightCellsRule(HighlightRuleType type, const Format &format, bool stopIfTrue=false); 0090 bool addHighlightCellsRule(HighlightRuleType type, const QString &formula1, const Format &format, bool stopIfTrue=false); 0091 bool addHighlightCellsRule(HighlightRuleType type, const QString &formula1, const QString &formula2, const Format &format, bool stopIfTrue=false); 0092 bool addDataBarRule(const QColor &color, bool showData=true, bool stopIfTrue=false); 0093 bool addDataBarRule(const QColor &color, ValueObjectType type1, const QString &val1, ValueObjectType type2, const QString &val2, bool showData=true, bool stopIfTrue=false); 0094 bool add2ColorScaleRule(const QColor &minColor, const QColor &maxColor, bool stopIfTrue=false); 0095 bool add3ColorScaleRule(const QColor &minColor, const QColor &midColor, const QColor &maxColor, bool stopIfTrue=false); 0096 0097 QList<CellRange> ranges() const; 0098 0099 void addCell(const CellReference &cell); 0100 void addCell(int row, int col); 0101 void addRange(int firstRow, int firstCol, int lastRow, int lastCol); 0102 void addRange(const CellRange &range); 0103 0104 //needed by QSharedDataPointer!! 0105 ConditionalFormatting &operator=(const ConditionalFormatting &other); 0106 0107 private: 0108 friend class Worksheet; 0109 friend class ::ConditionalFormattingTest; 0110 0111 private: 0112 bool saveToXml(QXmlStreamWriter &writer) const; 0113 bool loadFromXml(QXmlStreamReader &reader, Styles* styles = nullptr); 0114 0115 QSharedDataPointer<ConditionalFormattingPrivate> d; 0116 }; 0117 0118 QT_END_NAMESPACE_XLSX 0119 0120 #endif // QXLSX_XLSXCONDITIONALFORMATTING_H