1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
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/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
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 .
18  */
19 #ifndef INCLUDED_XMLOFF_TXTSTYLI_HXX
20 #define INCLUDED_XMLOFF_TXTSTYLI_HXX
21 
22 #include <sal/config.h>
23 #include <xmloff/dllapi.h>
24 #include <xmloff/prstylei.hxx>
25 
26 class XMLEventsImportContext;
27 
28 class XMLOFF_DLLPUBLIC XMLTextStyleContext : public XMLPropStyleContext
29 {
30     OUString             m_sListStyleName;
31     OUString             m_sCategoryVal;
32     OUString             m_sDropCapTextStyleName;
33     OUString             m_sMasterPageName;
34     OUString             m_sDataStyleName; // for grid columns only
35 
36     sal_Int8    m_nOutlineLevel;
37 
38     bool        m_isAutoUpdate : 1;
39     bool        m_bHasMasterPageName : 1;
40 
41     bool        m_bHasCombinedCharactersLetter : 1;
42 
43     // Introduce import of empty list style (#i69523#)
44     bool        m_bListStyleSet : 1;
45 
46     rtl::Reference<XMLEventsImportContext> m_xEventContext;
47 
48 protected:
49 
50     virtual void SetAttribute( sal_Int32 nElement,
51                                const OUString& rValue ) override;
52 
53 public:
54 
55     XMLTextStyleContext( SvXMLImport& rImport,
56             SvXMLStylesContext& rStyles, XmlStyleFamily nFamily,
57             bool bDefaultStyle = false );
58     ~XMLTextStyleContext() override;
59 
60     XMLTextStyleContext(const XMLTextStyleContext &) = delete;
61     XMLTextStyleContext operator=(const XMLTextStyleContext &) = delete;
62 
63     virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext(
64         sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& AttrList ) override;
65 
GetListStyle() const66     const OUString& GetListStyle() const { return m_sListStyleName; }
67     // XML import: reconstruction of assignment of paragraph style to outline levels (#i69629#)
IsListStyleSet() const68     bool IsListStyleSet() const
69     {
70         return m_bListStyleSet;
71     }
72 
GetMasterPageName() const73     const OUString& GetMasterPageName() const { return m_sMasterPageName; }
HasMasterPageName() const74     bool HasMasterPageName() const { return m_bHasMasterPageName; }
GetDropCapStyleName() const75     const OUString& GetDropCapStyleName() const { return m_sDropCapTextStyleName; }
GetDataStyleName() const76     const OUString& GetDataStyleName() const { return m_sDataStyleName; }
77 
78     virtual void CreateAndInsert( bool bOverwrite ) override;
79     virtual void Finish( bool bOverwrite ) override;
80     virtual void SetDefaults() override;
81 
82     // override FillPropertySet, so we can get at the combined characters
83     virtual void FillPropertySet(
84             const css::uno::Reference< css::beans::XPropertySet > & rPropSet ) override;
85 
HasCombinedCharactersLetter() const86     bool HasCombinedCharactersLetter() const
87         { return m_bHasCombinedCharactersLetter; }
88 
GetProperties_()89     const ::std::vector< XMLPropertyState > & GetProperties_() { return GetProperties(); }
90 };
91 
92 #endif
93 
94 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
95