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

List:       kde-commits
Subject:    koffice/filters
From:       Lassi Taneli Nieminen <lassniem () gmail ! com>
Date:       2010-04-09 9:37:25
Message-ID: 20100409093725.C4444AC892 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1112832 by lassin:

Fixes reading of paragraphs from styles.xml



 M  +11 -6     kword/docx/DocxXmlDocumentReader.cpp  
 M  +43 -7     kword/docx/DocxXmlStylesReader.cpp  
 M  +1 -0      libmsooxml/MsooXmlCommonReader.h  
 M  +1 -0      libmsooxml/MsooXmlCommonReaderImpl.h  


--- trunk/koffice/filters/kword/docx/DocxXmlDocumentReader.cpp #1112831:1112832
@@ -279,10 +279,6 @@
     if (m_backgroundColor.isValid())
         m_currentPageStyle.addProperty("fo:background-color", \
m_backgroundColor.name());  
-    QString pageLayoutStyleName("Mpm");
-    pageLayoutStyleName = mainStyles->insert(
-        m_currentPageStyle, pageLayoutStyleName, KoGenStyles::DontAddNumberToName);
-
     m_masterPageStyle = KoGenStyle(KoGenStyle::MasterPageStyle);
   
     while (!atEnd()) {
@@ -296,6 +292,10 @@
         BREAK_IF_END_OF(CURRENT_EL);
     }
 
+    QString pageLayoutStyleName("Mpm");
+    pageLayoutStyleName = mainStyles->insert(
+        m_currentPageStyle, pageLayoutStyleName, KoGenStyles::DontAddNumberToName);
+
 //! @todo works because paragraphs have Standard style assigned by default; fix for \
multiple page styles  QString masterStyleName("Standard");
 //! @todo style:display-name
@@ -1346,6 +1346,10 @@
     const QXmlStreamAttributes attrs(attributes());
     setParentParagraphStyleName(attrs);
 
+    if (!m_currentParagraphStylePredefined) {
+        m_currentParagraphStyle = KoGenStyle(KoGenStyle::ParagraphAutoStyle, \
"text"); +    }
+
     TRY_READ_ATTR_WITHOUT_NS(lvl)
     m_pPr_lvl = lvl.toUInt(); // 0 (the default) on failure, so ok.
 
@@ -1356,6 +1360,7 @@
             TRY_READ_IF_IN_CONTEXT(rPr)
             ELSE_TRY_READ_IF_IN_CONTEXT(shd)
             ELSE_TRY_READ_IF(jc)
+            ELSE_TRY_READ_IF(tabs)
             ELSE_TRY_READ_IF(spacing)
             ELSE_TRY_READ_IF(pStyle)
             ELSE_TRY_READ_IF(pBdr)
@@ -1825,11 +1830,11 @@
     TRY_READ_ATTR(val)
 
     body->startElement("style:tab-stop");
-    body->addAttribute("style:position", 20);
+    body->addAttribute("style:type", val);
     bool ok = false;
     const qreal value = qreal(TWIP_TO_POINT(pos.toDouble(&ok)));
     if (ok) {
-        body->addAttributePt("style:type", value);
+        body->addAttributePt("style:position", value);
     }
     body->endElement(); // style:tab-stop
 
--- trunk/koffice/filters/kword/docx/DocxXmlStylesReader.cpp #1112831:1112832
@@ -341,13 +341,25 @@
             return KoFilter::WrongFormat;
         }
         kDebug() << "Setting default style of family" << odfType << "...";
-        m_currentTextStyle = *m_defaultStyles.value(odfType.toLatin1());
+        if (type == "character") {
+            m_currentTextStyle = *m_defaultStyles.value(odfType.toLatin1());
+        }
+        else if (type == "paragraph") {
+            m_currentParagraphStyle = *m_defaultStyles.value(odfType.toLatin1());
+        }
     }
     else {
-        m_currentTextStyle = KoGenStyle(KoGenStyle::ParagraphStyle, \
odfType.toLatin1()); +        if (type == "character") {
+            m_currentTextStyle = KoGenStyle(KoGenStyle::TextStyle, \
odfType.toLatin1()); +        }
+        else if (type == "paragraph") {
+            m_currentParagraphStyle = KoGenStyle(KoGenStyle::ParagraphStyle, \
odfType.toLatin1()); +        }
     }
     MSOOXML::Utils::Setter<bool> \
currentTextStylePredefinedSetter(&m_currentTextStylePredefined, false); +    \
MSOOXML::Utils::Setter<bool> \
currentParagraphStylePredefinedSetter(&m_currentParagraphStylePredefined, false);  \
m_currentTextStylePredefined = true; +    m_currentParagraphStylePredefined = true;
 
     QString nextStyleName;
 
@@ -357,9 +369,15 @@
             const QXmlStreamAttributes attrs(attributes());
             TRY_READ_IF(name)
             ELSE_TRY_READ_IF_IN_CONTEXT(rPr)
+            ELSE_TRY_READ_IF(pPr)
             else if (QUALIFIED_NAME_IS(basedOn)) {
                 READ_ATTR(val)
-                m_currentTextStyle.setParentName(val);
+                if (type == "character") {
+                    m_currentTextStyle.setParentName(val);
+                }
+                else if (type == "paragraph") {
+                    m_currentParagraphStyle.setParentName(val);
+                }
             }
             else if (QUALIFIED_NAME_IS(next)) {
                 READ_ATTR_INTO(val, nextStyleName)
@@ -379,12 +397,18 @@
     }
 
     m_currentTextStylePredefined = false;
+    m_currentParagraphStylePredefined = false;
 
     // insert style
     if (isDefault) {
         // do not insert, will be inserted at the end
         kDebug() << "Default style of family" << odfType << "created";
-        *m_defaultStyles.value(odfType.toLatin1()) = m_currentTextStyle;
+        if (type == "character") {
+            *m_defaultStyles.value(odfType.toLatin1()) = m_currentTextStyle;
+        }
+        else if (type == "paragraph") {
+            *m_defaultStyles.value(odfType.toLatin1()) = m_currentParagraphStyle;
+        }
     }
     else {
         // Style class: A style may belong to an arbitrary class of styles.
@@ -392,14 +416,26 @@
         // but it can for instance be evaluated by user interfaces to show a list of \
styles where  // the styles are grouped by its name.
         //! @todo oo.o converter defines these classes: list, extra, index, chapter
-        m_currentTextStyle.addAttribute("style:class", "text");
+        if (type == "character") {
+            m_currentTextStyle.addAttribute("style:class", "text");
 
-        styleName = mainStyles->insert(m_currentTextStyle, styleName, \
insertionFlags); +            styleName = mainStyles->insert(m_currentTextStyle, \
styleName, insertionFlags); +        }
+        else if (type == "paragraph") {
+            m_currentParagraphStyle.addAttribute("style:class", "text");
+
+            styleName = mainStyles->insert(m_currentParagraphStyle, styleName, \
insertionFlags); +        }
         if (!nextStyleName.isEmpty()) {
             mainStyles->insertStyleRelation(styleName, nextStyleName, \
"style:next-style-name");  }
     }
-    m_currentTextStyle = KoGenStyle();
+    if (type == "character") {
+        m_currentTextStyle = KoGenStyle();
+    }
+    else if (type == "paragraph") {
+        m_currentParagraphStyle = KoGenStyle();
+    }
 
     READ_EPILOGUE
 }
--- trunk/koffice/filters/libmsooxml/MsooXmlCommonReader.h #1112831:1112832
@@ -51,6 +51,7 @@
 
     //! Used for creating style in w:pPr (style:style/@style:name attr)
     KoGenStyle m_currentParagraphStyle;
+    bool m_currentParagraphStylePredefined; //!< true if m_currentParagraphStyle \
shouldn't be created in read_pPr  
     void setupParagraphStyle();
 
--- trunk/koffice/filters/libmsooxml/MsooXmlCommonReaderImpl.h #1112831:1112832
@@ -33,6 +33,7 @@
     m_posOffsetH = 0;
     m_posOffsetV = 0;
     m_currentTextStylePredefined = false;
+    m_currentParagraphStylePredefined = false;
     m_currentTextStyleProperties = 0;
     m_fillImageRenderingStyleStretch = false;
 }


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

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