File indexing completed on 2024-12-08 12:56:12

0001 /*
0002  *  Copyright (c) 2010 Carlos Licea <carlos@kdab.com>
0003  *
0004  *  This library is free software; you can redistribute it and/or modify
0005  *  it under the terms of the GNU Lesser General Public License as published
0006  *  by the Free Software Foundation; either version 2.1 of the License, or
0007  *  (at your option) any later version.
0008  *
0009  *  This library is distributed in the hope that it will be useful,
0010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0012  *  GNU Lesser General Public License for more details.
0013  *
0014  *  You should have received a copy of the GNU Lesser General Public License
0015  *  along with this program; if not, write to the Free Software
0016  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0017  */
0018 
0019 #ifndef KOTBLSTYLE_H
0020 #define KOTBLSTYLE_H
0021 
0022 #include "KoStyle.h"
0023 #include "koodf2_export.h"
0024 
0025 #include <QColor>
0026 
0027 /**
0028  * \class KoTblStyle
0029  * \brief This class represents a style for a Table in
0030  * a ODF document.
0031  *
0032  * As all the styles it can be shared.
0033  **/
0034 
0035 class KOODF2_EXPORT KoTblStyle : public KoStyle
0036 {
0037     KoTblStyle();
0038 
0039 public:
0040     KOSTYLE_DECLARE_SHARED_POINTER(KoTblStyle)
0041 
0042     ~KoTblStyle() override;
0043 
0044     void setBackgroundColor(const QColor& color);
0045     QColor backgroundColor() const;
0046 
0047     enum BreakType {
0048         NoBreak,
0049         AutoBreak,
0050         ColumnBreak,
0051         PageBreak
0052     };
0053     void setBreakBefore(BreakType breakBefore);
0054     BreakType breakBefore() const;
0055 
0056     void setBreakAfter(BreakType breakAfter);
0057     BreakType breakAfter() const;
0058 
0059     void setAllowBreakBetweenRows(bool allow);
0060     bool allowBreakBetweenRows() const;
0061 
0062     void setMasterPageName(const QString& name);
0063     void setMasterPageName(const char* name);
0064     QString masterPageName() const;
0065 
0066     void setLeftMargin(qreal left);
0067     qreal leftMargin() const;
0068 
0069     void setTopMargin(qreal top);
0070     qreal topMargin() const;
0071 
0072     void setRightMargin(qreal right);
0073     qreal rightMargin() const;
0074 
0075     void setBottomMargin(qreal bottom);
0076     qreal bottomMargin() const;
0077 
0078     enum WidthUnit {
0079         PercentageUnit,
0080         PointsUnit
0081     };
0082     void setWidth(qreal width, WidthUnit unit = PointsUnit);
0083     qreal width() const;
0084     WidthUnit widthUnit() const;
0085 
0086     enum HorizontalAlign {
0087         CenterAlign,
0088         LeftAlign,
0089         MarginsAlign,
0090         RightAlign
0091     };
0092     void setHorizontalAlign(HorizontalAlign align);
0093     HorizontalAlign horizontalAlign() const;
0094 
0095     enum BorderModel {
0096         CollapsingModel,
0097         SeparatingModel
0098     };
0099     void setBorderModel(BorderModel bordelModel);
0100     BorderModel borderModel() const;
0101 
0102     void setDisplay(bool display);
0103     bool display() const;
0104 
0105     enum KeepWithNext {
0106         AutoKeepWithNext,
0107         AlwaysKeepWithNext
0108     };
0109     void setKeepWithNext(KeepWithNext keepWithNext);
0110     KeepWithNext keepWithNext() const;
0111 
0112     enum WritingMode {
0113         LrTbWritingMode,
0114         RlTbWritingMode,
0115         TbRlWritingMode,
0116         TbLrWritingMode,
0117         LrWritingMode,
0118         RlWritingMode,
0119         TbWritingMode,
0120         PageWritingMode
0121     };
0122     void setWritingMode(WritingMode writingMode);
0123     WritingMode writingMode() const;
0124 
0125 protected:
0126     void prepareStyle(KoGenStyle& style) const override;
0127     KoGenStyle::Type automaticstyleType() const override;
0128     KoGenStyle::Type styleType() const override;
0129     const char* styleFamilyName() const override;
0130     QString defaultPrefix() const override;
0131 
0132 private:
0133     QColor m_backgroundColor;
0134     BreakType m_breakAfter;
0135     BreakType m_breakBefore;
0136     bool m_allowBreakBetweenRows;
0137 
0138     QString m_masterPageName;
0139 
0140     qreal m_leftMargin;
0141     qreal m_topMargin;
0142     qreal m_rightMargin;
0143     qreal m_bottomMargin;
0144 
0145     qreal m_width;
0146     WidthUnit m_widthUnit;
0147 
0148     HorizontalAlign m_horizontalAlign;
0149     BorderModel m_borderModel;
0150     KeepWithNext m_keepWithNext;
0151     WritingMode m_writingMode;
0152 
0153     bool m_display;
0154     //TODO style:page-number
0155     //TODO style:shadow
0156     //TODO style:background-image
0157 };
0158 
0159 #endif