[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/work/koffice-essen/libs/odf
From:       Carlos Licea <carlos_licea () hotmail ! com>
Date:       2010-12-05 4:38:37
Message-ID: 20101205043837.9DD36AC8A6 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1203685 by clicea:

* Add some missing Table properties.
* Implement the saving of the table style.

 M  +112 -0    KoTableStyle.cpp  
 M  +22 -4     KoTableStyle.h  


--- branches/work/koffice-essen/libs/odf/KoTableStyle.cpp #1203684:1203685
@@ -21,6 +21,66 @@
 KOSTYLE_DECLARE_SHARED_POINTER_IMPL(KoTableStyle)
 
 namespace {
+    class BreakStyleMap : public QMap<KoTableStyle::BreakType, QString>
+    {
+    public:
+        BreakStyleMap()
+        {
+            insert(KoTableStyle::NoBreak, QString());
+            insert(KoTableStyle::AutoBreak, "auto");
+            insert(KoTableStyle::ColumnBreak, "column");
+            insert(KoTableStyle::PageBreak, "page");
+        }
+    } breakStyleMap;
+
+    class HorizontalAlignMap : public QMap<KoTableStyle::HorizontalAlign, QString>
+    {
+    public:
+        HorizontalAlignMap()
+        {
+            insert(KoTableStyle::CenterAlign, "center");
+            insert(KoTableStyle::LeftAlign, "left");
+            insert(KoTableStyle::MarginsAlign, "margins");
+            insert(KoTableStyle::RightAlign, "right");
+        }
+    } horizontalAlignMap;
+
+    class BorderModelMap : public QMap<KoTableStyle::BorderModel, QString>
+    {
+    public:
+        BorderModelMap()
+        {
+            insert(KoTableStyle::CollapsingModel, "collapsing");
+            insert(KoTableStyle::SeparatingModel, "separating");
+        }
+    } borderModelMap;
+
+    class KeepWithNextMap : public QMap<KoTableStyle::KeepWithNext, QString>
+    {
+    public:
+        KeepWithNextMap()
+        {
+            insert(KoTableStyle::AutoKeepWithNext, "auto");
+            insert(KoTableStyle::AlwaysKeepWithNext, "always");
+        }
+    } keepWithNextMap;
+
+    class WritingModeMap : public QMap<KoTableStyle::WritingMode, QString>
+    {
+    public:
+        WritingModeMap()
+        {
+            insert(KoTableStyle::LrTbWrittingMode, "lr-tb");
+            insert(KoTableStyle::RlTbWrittingMode, "rl-tb");
+            insert(KoTableStyle::TbRlWrittingMode, "tb-rl");
+            insert(KoTableStyle::TbLrWrittingMode, "tb-lr");
+            insert(KoTableStyle::LrWrittingMode, "lr");
+            insert(KoTableStyle::RlWrittingMode, "rl");
+            insert(KoTableStyle::TbWrittingMode, "tb");
+            insert(KoTableStyle::PageWrittingMode, "page");
+        }
+    } writingModeMap;
+
     QString prefix = "table";
     const char* familyName = "table";
 }
@@ -39,6 +99,8 @@
 , m_widthUnit(PointsUnit)
 , m_horizontalAlign(LeftAlign)
 , m_borderModel(CollapsingModel)
+, m_keepWithNext(AutoKeepWithNext)
+, m_writingMode(PageWrittingMode)
 , m_display(true)
 {
 }
@@ -173,6 +235,26 @@
     return m_borderModel;
 }
 
+void KoTableStyle::setKeepWithNext(KoTableStyle::KeepWithNext keepWithNext)
+{
+    m_keepWithNext = keepWithNext;
+}
+
+KoTableStyle::KeepWithNext KoTableStyle::keepWithNext() const
+{
+    return m_keepWithNext;
+}
+
+void KoTableStyle::setWritingMode(KoTableStyle::WritingMode writingMode)
+{
+    m_writingMode = writingMode;
+}
+
+KoTableStyle::WritingMode KoTableStyle::writingMode() const
+{
+    return m_writingMode;
+}
+
 KoGenStyle::Type KoTableStyle::automaticstyleType() const
 {
     return KoGenStyle::TableAutoStyle;
@@ -195,4 +277,34 @@
 
 void KoTableStyle::prepareStyle(KoGenStyle& style) const
 {
+    if(m_backgroundColor.isValid()) {
+        style.addProperty("fo:background-color", m_backgroundColor.name());
 }
+    style.addProperty("fo:break-after", breakStyleMap.value(m_breakAfter));
+    style.addProperty("fo:break-before", breakStyleMap.value(m_breakBefore));
+    style.addProperty("fo:keep-with-next", keepWithNextMap.value(m_keepWithNext));
+
+    style.addPropertyPt("fo:margin-top", m_topMargin);
+    style.addPropertyPt("fo:margin-right", m_rightMargin);
+    style.addPropertyPt("fo:margin-bottom", m_bottomMargin);
+    style.addPropertyPt("fo:margin-left", m_leftMargin);
+
+
+    switch(m_widthUnit) {
+        case PercentageUnit:
+            style.addPropertyPt("style:rel-width", m_width);
+            break;
+        case PointsUnit:
+            style.addPropertyPt("style:width", m_width);
+            break;
+    }
+
+    style.addProperty("style:may-break-between-rows", m_allowBreakBetweenRows ? "true" : "false");
+    style.addProperty("style:writing-mode", writingModeMap.value(m_writingMode));
+    style.addProperty("table:align", horizontalAlignMap.value(m_horizontalAlign));
+    style.addProperty("fo:border-model", borderModelMap.value(m_borderModel));
+
+    if(!m_display) {
+        style.addProperty("table:display", "false");
+    }
+}
--- branches/work/koffice-essen/libs/odf/KoTableStyle.h #1203684:1203685
@@ -97,9 +97,26 @@
     void setDisplay(bool display);
     bool display() const;
 
-//     Image backgroundImage() const;
-//     void setBackgroundImage(Image image);
+    enum KeepWithNext {
+        AutoKeepWithNext,
+        AlwaysKeepWithNext,
+    };
+    void setKeepWithNext(KeepWithNext keepWithNext);
+    KeepWithNext keepWithNext() const;
 
+    enum WritingMode {
+        LrTbWrittingMode,
+        RlTbWrittingMode,
+        TbRlWrittingMode,
+        TbLrWrittingMode,
+        LrWrittingMode,
+        RlWrittingMode,
+        TbWrittingMode,
+        PageWrittingMode
+    };
+    void setWritingMode(WritingMode writingMode);
+    WritingMode writingMode() const;
+
 protected:
     virtual void prepareStyle(KoGenStyle& style) const;
     virtual KoGenStyle::Type automaticstyleType() const;
@@ -123,12 +140,13 @@
 
     HorizontalAlign m_horizontalAlign;
     BorderModel m_borderModel;
+    KeepWithNext m_keepWithNext;
+    WritingMode m_writingMode;
 
     bool m_display;
     //TODO style:page-number
     //TODO style:shadow
-    //TODO style:writing-mode
-    //
+    //TODO style:background-image
 };
 
 #endif
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic