tdf#59323: ooxml import: hasParagraphProperties

Introduces hasParagraphProperties to determine whether or not there was a pPr
tag in the textbody on import.

Change-Id: I3c6815e8405b0087f64520ee4e0e39297b3b4548
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117005
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
diff --git a/oox/inc/drawingml/textbody.hxx b/oox/inc/drawingml/textbody.hxx
index 8d0ce41..25a6ab1 100644
--- a/oox/inc/drawingml/textbody.hxx
+++ b/oox/inc/drawingml/textbody.hxx
@@ -72,6 +72,9 @@ public:
     */
    bool hasVisualRunProperties() const;

    /// Returns whether the textbody had a pPr tag in it
    bool hasParagraphProperties() const;

    void                ApplyStyleEmpty(
                            const ::oox::core::XmlFilterBase& rFilterBase,
                            const css::uno::Reference < css::text::XText > & xText,
diff --git a/oox/inc/drawingml/textparagraph.hxx b/oox/inc/drawingml/textparagraph.hxx
index 4424eadf..021434d 100644
--- a/oox/inc/drawingml/textparagraph.hxx
+++ b/oox/inc/drawingml/textparagraph.hxx
@@ -53,6 +53,10 @@ public:

    TextParagraphProperties&         getProperties() { return maProperties; }
    const TextParagraphProperties&   getProperties() const { return maProperties; }
    /// Flags the textparagraph as having a pPr tag in it
    void                             setHasProperties() { mbHasProperties = true; }
    /// Returns whether the textparagraph had an pPr tag in it during import
    bool                             hasProperties() const { return mbHasProperties; }

    TextCharacterProperties&         getEndProperties() { return maEndProperties; }
    const TextCharacterProperties&   getEndProperties() const { return maEndProperties; }
@@ -87,6 +91,7 @@ public:

private:
    TextParagraphProperties     maProperties;
    bool                        mbHasProperties;
    TextCharacterProperties     maEndProperties;
    TextRunVector               maRuns;
    // temporarily store this here
diff --git a/oox/source/drawingml/textbody.cxx b/oox/source/drawingml/textbody.cxx
index 9839f75..5924728 100644
--- a/oox/source/drawingml/textbody.cxx
+++ b/oox/source/drawingml/textbody.cxx
@@ -103,6 +103,16 @@ bool TextBody::hasVisualRunProperties() const
    return false;
}

bool TextBody::hasParagraphProperties() const
{
    for ( auto& pTextParagraph : getParagraphs() )
    {
        if ( pTextParagraph->hasProperties() )
            return true;
    }
    return false;
}

void TextBody::ApplyStyleEmpty(
    const ::oox::core::XmlFilterBase& rFilterBase,
    const Reference < XText > & xText,
diff --git a/oox/source/drawingml/textbodycontext.cxx b/oox/source/drawingml/textbodycontext.cxx
index 49b5030..a10ba58 100644
--- a/oox/source/drawingml/textbodycontext.cxx
+++ b/oox/source/drawingml/textbodycontext.cxx
@@ -89,6 +89,7 @@ ContextHandlerRef TextParagraphContext::onCreateContext( sal_Int32 aElementToken
        }
        case A_TOKEN( pPr ):
        case W_TOKEN( pPr ):
            mrParagraph.setHasProperties();
            return new TextParagraphPropertiesContext( *this, rAttribs, mrParagraph.getProperties() );
        case A_TOKEN( endParaRPr ):
            return new TextCharacterPropertiesContext( *this, rAttribs, mrParagraph.getEndProperties() );
diff --git a/oox/source/drawingml/textparagraph.cxx b/oox/source/drawingml/textparagraph.cxx
index b1c5720..9e4f309 100644
--- a/oox/source/drawingml/textparagraph.cxx
+++ b/oox/source/drawingml/textparagraph.cxx
@@ -38,6 +38,7 @@ using namespace ::com::sun::star::beans;
namespace oox::drawingml {

TextParagraph::TextParagraph()
    : mbHasProperties( false )
{
}