1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <sal/config.h>
22 #include <com/sun/star/frame/XModel.hpp>
23 #include <com/sun/star/style/ParagraphStyleCategory.hpp>
24 #include <com/sun/star/beans/XPropertySet.hpp>
25 #include <com/sun/star/beans/XPropertySetInfo.hpp>
26 #include <com/sun/star/beans/XPropertyState.hpp>
27 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
28 #include <com/sun/star/style/XStyle.hpp>
29 #include <xmloff/xmltoken.hxx>
30 #include <xmloff/xmlnamespace.hxx>
31 #include <xmloff/families.hxx>
32 #include <xmloff/txtparae.hxx>
33 #include <xmloff/xmlnume.hxx>
34 #include <xmloff/xmlexp.hxx>
35 #include <xmloff/ProgressBarHelper.hxx>
36 #include "XMLSectionExport.hxx"
37 #include "XMLLineNumberingExport.hxx"
38 #include "txtexppr.hxx"
39 #include <xmloff/txtprmap.hxx>
42 using namespace ::com::sun::star
;
43 using namespace ::com::sun::star::uno
;
44 using namespace ::com::sun::star::style
;
45 using namespace ::com::sun::star::beans
;
46 using namespace ::xmloff::token
;
48 void XMLTextParagraphExport::exportStyleAttributes(
49 const css::uno::Reference
< css::style::XStyle
> & rStyle
)
51 Reference
< XPropertySet
> xPropSet( rStyle
, UNO_QUERY
);
52 Reference
< XPropertySetInfo
> xPropSetInfo(
53 xPropSet
->getPropertySetInfo());
54 if( xPropSetInfo
->hasPropertyByName( gsCategory
) )
56 sal_Int16 nCategory
= 0;
57 xPropSet
->getPropertyValue( gsCategory
) >>= nCategory
;
58 enum XMLTokenEnum eValue
= XML_TOKEN_INVALID
;
63 case ParagraphStyleCategory::TEXT
:
66 case ParagraphStyleCategory::CHAPTER
:
69 case ParagraphStyleCategory::LIST
:
72 case ParagraphStyleCategory::INDEX
:
75 case ParagraphStyleCategory::EXTRA
:
78 case ParagraphStyleCategory::HTML
:
83 if( eValue
!= XML_TOKEN_INVALID
)
84 GetExport().AddAttribute( XML_NAMESPACE_STYLE
, XML_CLASS
, eValue
);
86 if( xPropSetInfo
->hasPropertyByName( gsPageDescName
) )
88 Reference
< XPropertyState
> xPropState( xPropSet
, uno::UNO_QUERY
);
89 if( PropertyState_DIRECT_VALUE
==
90 xPropState
->getPropertyState( gsPageDescName
) )
93 xPropSet
->getPropertyValue( gsPageDescName
) >>= sName
;
94 // fix for #i5551# if( sName.getLength() > 0 )
95 GetExport().AddAttribute( XML_NAMESPACE_STYLE
,
97 GetExport().EncodeStyleName( sName
) );
102 ProgressBarHelper
*pProgress
= GetExport().GetProgressBarHelper();
103 pProgress
->SetValue( pProgress
->GetValue()+2 );
107 void XMLTextParagraphExport::exportNumStyles( bool bUsed
)
109 SvxXMLNumRuleExport
aNumRuleExport( GetExport() );
110 aNumRuleExport
.exportStyles(bUsed
, !IsBlockMode());
113 void XMLTextParagraphExport::exportTextStyles( bool bUsed
, bool bProg
)
115 bool bOldProg
= m_bProgress
;
118 Reference
< lang::XMultiServiceFactory
> xFactory (GetExport().GetModel(), UNO_QUERY
);
121 Reference
< XPropertySet
> xPropSet (xFactory
->createInstance ( u
"com.sun.star.text.Defaults"_ustr
), UNO_QUERY
);
124 exportDefaultStyle( xPropSet
, GetXMLToken(XML_PARAGRAPH
), GetParaPropMapper());
128 GetXMLToken(XML_TABLE
),
129 new XMLTextExportPropertySetMapper(
130 new XMLTextPropertySetMapper(
131 TextPropMap::TABLE_DEFAULTS
, true ),
136 GetXMLToken(XML_TABLE_ROW
),
137 new XMLTextExportPropertySetMapper(
138 new XMLTextPropertySetMapper(
139 TextPropMap::TABLE_ROW_DEFAULTS
, true ),
143 exportStyleFamily( u
"ParagraphStyles"_ustr
, GetXMLToken(XML_PARAGRAPH
), GetParaPropMapper(),
144 bUsed
, XmlStyleFamily::TEXT_PARAGRAPH
);
145 exportStyleFamily( u
"CharacterStyles"_ustr
, GetXMLToken(XML_TEXT
), GetTextPropMapper(),
146 bUsed
, XmlStyleFamily::TEXT_TEXT
);
147 // get shape export to make sure the frame family is added correctly.
148 GetExport().GetShapeExport();
149 exportStyleFamily( u
"FrameStyles"_ustr
, XML_STYLE_FAMILY_SD_GRAPHICS_NAME
, m_xFramePropMapper
,
150 bUsed
, XmlStyleFamily::TEXT_FRAME
);
151 exportNumStyles( bUsed
);
154 exportTextFootnoteConfiguration();
155 XMLSectionExport::ExportBibliographyConfiguration(GetExport());
156 XMLLineNumberingExport
aLineNumberingExport(GetExport());
157 aLineNumberingExport
.Export();
160 m_bProgress
= bOldProg
;
163 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */