1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _XMLOFF_XMLTEXTNUMRULEINFO_HXX
25 #define _XMLOFF_XMLTEXTNUMRULEINFO_HXX
26 
27 #include <com/sun/star/uno/Reference.hxx>
28 #include <com/sun/star/container/XIndexReplace.hpp>
29 
30 namespace com { namespace sun { namespace star {
31 	namespace text { class XTextContent; }
32 } } }
33 #include <sal/types.h>
34 
35 class XMLTextListAutoStylePool;
36 
37 /** information about list and list style for a certain paragraph
38 
39     OD 2008-04-24 #refactorlists#
40     Complete refactoring of the class and enhancement of the class for lists.
41     These changes are considered by method <XMLTextParagraphExport::exportListChange(..)>
42 */
43 class XMLTextNumRuleInfo
44 {
45     const ::rtl::OUString msNumberingRules;
46     const ::rtl::OUString msNumberingLevel;
47     const ::rtl::OUString msNumberingStartValue;
48     const ::rtl::OUString msParaIsNumberingRestart;
49     const ::rtl::OUString msNumberingIsNumber;
50     const ::rtl::OUString msNumberingIsOutline;
51     const ::rtl::OUString msPropNameListId;
52     const ::rtl::OUString msPropNameStartWith;
53     // --> OD 2008-11-26 #158694#
54     const ::rtl::OUString msContinueingPreviousSubTree;
55     const ::rtl::OUString msListLabelStringProp;
56     // <--
57 
58     // numbering rules instance and its name
59     ::com::sun::star::uno::Reference <
60                         ::com::sun::star::container::XIndexReplace > mxNumRules;
61     ::rtl::OUString     msNumRulesName;
62 
63     // paragraph's list attributes
64     ::rtl::OUString     msListId;
65     sal_Int16           mnListStartValue;
66     sal_Int16           mnListLevel;
67     sal_Bool            mbIsNumbered;
68     sal_Bool            mbIsRestart;
69 
70     // numbering rules' attributes
71     // --> OD 2008-05-07 #refactorlists#
72     sal_Int16           mnListLevelStartValue;
73     // <--
74 
75     // --> OD 2006-09-27 #i69627#
76     sal_Bool mbOutlineStyleAsNormalListStyle;
77     // <--
78 
79     // --> OD 2008-11-26 #158694#
80     sal_Bool mbContinueingPreviousSubTree;
81     ::rtl::OUString msListLabelString;
82     // <--
83 public:
84 
85 	XMLTextNumRuleInfo();
86 
87 	inline XMLTextNumRuleInfo& operator=( const XMLTextNumRuleInfo& rInfo );
88 
89     // --> OD 2008-11-26 #158694#
90     void Set( const ::com::sun::star::uno::Reference <
91                         ::com::sun::star::text::XTextContent > & rTextContnt,
92               const sal_Bool bOutlineStyleAsNormalListStyle,
93               const XMLTextListAutoStylePool& rListAutoPool,
94               const sal_Bool bExportTextNumberElement );
95     // <--
96 	inline void Reset();
97 
98     inline const ::rtl::OUString& GetNumRulesName() const
99     {
100         return msNumRulesName;
101     }
102     inline const ::com::sun::star::uno::Reference <
103 		::com::sun::star::container::XIndexReplace >& GetNumRules() const
104     {
105         return mxNumRules;
106     }
107     inline sal_Int16 GetListLevelStartValue() const
108     {
109         return mnListLevelStartValue;
110     }
111 
112     inline const ::rtl::OUString& GetListId() const
113     {
114         return msListId;
115     }
116 
117     inline sal_Int16 GetLevel() const
118     {
119         return mnListLevel;
120     }
121 
122     inline sal_Bool HasStartValue() const
123     {
124         return mnListStartValue != -1;
125     }
126     inline sal_uInt32 GetStartValue() const
127     {
128         return mnListStartValue;
129     }
130 
131     inline sal_Bool IsNumbered() const
132     {
133         return mbIsNumbered;
134     }
135     inline sal_Bool IsRestart() const
136     {
137         return mbIsRestart;
138     }
139 
140     sal_Bool BelongsToSameList( const XMLTextNumRuleInfo& rCmp ) const;
141 
142     inline sal_Bool HasSameNumRules( const XMLTextNumRuleInfo& rCmp ) const
143     {
144         return rCmp.msNumRulesName == msNumRulesName;
145     }
146 
147     // --> OD 2008-11-26 #158694#
148     inline sal_Bool IsContinuingPreviousSubTree() const
149     {
150         return mbContinueingPreviousSubTree;
151     }
152     inline const ::rtl::OUString& ListLabelString() const
153     {
154         return msListLabelString;
155     }
156     // <--
157 };
158 
159 inline XMLTextNumRuleInfo& XMLTextNumRuleInfo::operator=(
160 		const XMLTextNumRuleInfo& rInfo )
161 {
162     msNumRulesName = rInfo.msNumRulesName;
163     mxNumRules = rInfo.mxNumRules;
164     msListId = rInfo.msListId;
165     mnListStartValue = rInfo.mnListStartValue;
166     mnListLevel = rInfo.mnListLevel;
167     mbIsNumbered = rInfo.mbIsNumbered;
168     mbIsRestart = rInfo.mbIsRestart;
169     // --> OD 2006-09-27 #i69627#
170     mbOutlineStyleAsNormalListStyle = rInfo.mbOutlineStyleAsNormalListStyle;
171     // <--
172     // --> OD 2008-11-26 #158694#
173     mbContinueingPreviousSubTree = rInfo.mbContinueingPreviousSubTree;
174     msListLabelString = rInfo.msListLabelString;
175     // <--
176 
177 	return *this;
178 }
179 
180 inline void XMLTextNumRuleInfo::Reset()
181 {
182     mxNumRules = 0;
183     msNumRulesName = ::rtl::OUString();
184     msListId = ::rtl::OUString();
185     mnListStartValue = -1;
186     mnListLevel = 0;
187     // --> OD 2006-09-27 #i69627#
188     mbIsNumbered = mbIsRestart =
189     mbOutlineStyleAsNormalListStyle = sal_False;
190     // <--
191     // --> OD 2008-11-26 #158694#
192     mbContinueingPreviousSubTree = sal_False;
193     msListLabelString = ::rtl::OUString();
194     // <--
195 }
196 #endif	//  _XMLOFF_XMLTEXTNUMRULEINFO_HXX
197