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

List:       kde-commits
Subject:    branches/work/koffice-ko/filters/kword/msword-odf
From:       Miroslav Nohaj <miroslav.nohaj () ixonos ! com>
Date:       2010-04-07 8:54:23
Message-ID: 20100407085423.22DB7AC857 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1112067 by nohaj:

Line numbering support added to msword-odf filter for MS Word documents.


 M  +4 -0      document.cpp  
 M  +4 -0      document.h  
 M  +33 -0     texthandler.cpp  


--- branches/work/koffice-ko/filters/kword/msword-odf/document.cpp #1112066:1112067
@@ -291,6 +291,10 @@
         QString displayName = Conversion::string(style->name());
         QString name = Conversion::styleNameString(style->name());
 
+        if (style->sti() == 40) {           // if the invariant style identifier \
says it's a style used for line numbers +            m_lineNumbersStyleName = name;  \
// store the name of that style +        }
+
         // Process paragraph styles.
         if (style && style->type() == wvWare::Style::sgcPara) {
             const wvWare::Style* followingStyle = \
                styles.styleByID(style->followingStyle());
--- branches/work/koffice-ko/filters/kword/msword-odf/document.h #1112066:1112067
@@ -114,6 +114,8 @@
     bool writingHeader(void) const { return m_writingHeader; }
     KoXmlWriter* headerWriter(void) const { return m_headerWriter; }
 
+    // get the style name used for line numbers
+    QString lineNumbersStyleName() const { return m_lineNumbersStyleName; }
 public slots:
     // Connected to the KWordTextHandler only when parsing the body
     void slotSectionFound(wvWare::SharedPtr<const wvWare::Word97::SEP>);
@@ -189,6 +191,8 @@
 
     int m_initialFootnoteNumber;
     int m_initialEndnoteNumber;
+
+    QString m_lineNumbersStyleName;
 };
 
 #endif // DOCUMENT_H
--- branches/work/koffice-ko/filters/kword/msword-odf/texthandler.cpp \
#1112066:1112067 @@ -181,6 +181,39 @@
         m_bodyWriter->addAttribute("text:name", sectionName);
         m_bodyWriter->addAttribute("text:style-name", sectionStyleName);
     }
+
+    if (sep->nLnnMod != 0) {    // if line numbering modulus is not 0, do line \
numbering +        if (m_mainStyles) {
+            QString lineNumbersStyleName = QString("Standard");     // set default \
line numbers style +
+            if (m_document) {                                       // if we have \
m_document +                QString lineNumbersStyleNameTemp = \
m_document->lineNumbersStyleName(); +
+                if (lineNumbersStyleNameTemp.isEmpty() == false) {      // if the \
style name is not empty +                    lineNumbersStyleName = \
lineNumbersStyleNameTemp;    // use it +                }
+            }
+
+            // prepare string for line numbering configuration
+            QString lineNumberingConfig("<text:linenumbering-configuration \
text:style-name=\"%1\" " +                                        \
"style:num-format=\"1\" text:number-position=\"left\" text:increment=\"1\"/>"); +
+            m_mainStyles->insertRawOdfStyles(KoGenStyles::DocumentStyles,
+                                             \
lineNumberingConfig.arg(lineNumbersStyleName).toLatin1()); +
+            KoGenStyle *normalStyle = \
m_mainStyles->styleForModification(QString("Normal")); +
+            // if got Normal style, insert line numbering configuration in it
+            if (normalStyle) {
+                normalStyle->addProperty(QString("text:number-lines"), \
QString("true")); +                \
normalStyle->addProperty(QString("text:line-number"), QString("0")); +            } \
else { +                kWarning() << "Could not find Normal style, numbering not \
added!"; +            }
+
+        }
+    }
+
 }
 
 void KWordTextHandler::sectionEnd()


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

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