1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 #ifndef IDOCUMENTSETTINGACCESS_HXX_INCLUDED
29 #define IDOCUMENTSETTINGACCESS_HXX_INCLUDED
30 
31 #include <tools/solar.h>
32 #ifndef _VOS_REF_HXX
33 #include <vos/ref.hxx>
34 #endif
35 #include <chcmprse.hxx>
36 #include <fldupde.hxx>
37 
38 class SvxForbiddenCharactersTable;
39 namespace com { namespace sun { namespace star { namespace i18n { struct ForbiddenCharacters; } } } }
40 
41  /** Provides access to settings of a document
42  */
43  class IDocumentSettingAccess
44  {
45  public:
46      enum DocumentSettingId
47      {
48          // COMPATIBILITY FLAGS START
49          PARA_SPACE_MAX,
50          PARA_SPACE_MAX_AT_PAGES,
51 
52          TAB_COMPAT,
53 
54          ADD_FLY_OFFSETS,
55 
56          OLD_NUMBERING,
57 
58          ADD_EXT_LEADING,
59          USE_VIRTUAL_DEVICE,
60          USE_HIRES_VIRTUAL_DEVICE,
61          OLD_LINE_SPACING,
62          ADD_PARA_SPACING_TO_TABLE_CELLS,
63          USE_FORMER_OBJECT_POS,
64          USE_FORMER_TEXT_WRAPPING,
65          CONSIDER_WRAP_ON_OBJECT_POSITION,
66 
67          IGNORE_FIRST_LINE_INDENT_IN_NUMBERING,
68          DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK,
69          DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT,
70          OUTLINE_LEVEL_YIELDS_OUTLINE_RULE,
71 
72          DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE,
73          TABLE_ROW_KEEP,
74 		 IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION,
75          CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME,
76 
77          UNIX_FORCE_ZERO_EXT_LEADING,
78          USE_OLD_PRINTER_METRICS,
79          TABS_RELATIVE_TO_INDENT,
80          PROTECT_FORM,
81          // --> OD 2008-06-05 #i89181#
82          TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST,
83          // <--
84          // COMPATIBILITY FLAGS END
85 
86          BROWSE_MODE,
87          HTML_MODE,
88          GLOBAL_DOCUMENT,
89          GLOBAL_DOCUMENT_SAVE_LINKS,
90          LABEL_DOCUMENT,
91          PURGE_OLE,
92          KERN_ASIAN_PUNCTUATION,
93          MATH_BASELINE_ALIGNMENT
94      };
95 
96  public:
97 	/** Return the specified document setting.
98 
99        @param id
100        [in] the identifier of the document setting to be returned.
101        See above for a list of valid document setting identifiers.
102 
103        @returns
104        the value of the requested document setting.
105 	*/
106 	virtual bool get(/*[in]*/ DocumentSettingId id) const = 0;
107 
108 	/** Set the specified document setting.
109 
110         @param id
111         [in] the identifier of the document setting to be set.
112         See above for a list of valid document setting identifiers.
113 
114         @param value
115         [in] the new value of the specified document setting.
116 	*/
117 	virtual void set(/*[in]*/ DocumentSettingId id, /*[in]*/ bool value) = 0;
118 
119     /** Return the forbidden characters.
120 
121        @param nLang
122        [in] the language for which the forbidden character list is returned.
123 
124        @param bLocaleData
125        [in] if set and there is no user defined forbidden character list for
126             language lang, the default list for language lang will be returned.
127 
128        @returns
129        a list of forbidden characters.
130     */
131     virtual const com::sun::star::i18n::ForbiddenCharacters*
132         getForbiddenCharacters(/*[in]*/ sal_uInt16 nLang, /*[in]*/ bool bLocaleData ) const = 0;
133 
134     /** Set the forbidden characters.
135 
136        @param nLang
137        [in] the language for which the forbidden character list should be set.
138 
139        @param rForbiddenCharacters
140        [in] the new list of forbidden characters for language lang.
141     */
142     virtual void setForbiddenCharacters(/*[in]*/ sal_uInt16 nLang,
143                                         /*[in]*/ const com::sun::star::i18n::ForbiddenCharacters& rForbiddenCharacters ) = 0;
144 
145     /** Get the forbidden character table and creates one if necessary.
146 
147        @returns
148        the forbidden characters table.
149     */
150     virtual vos::ORef<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() = 0;
151 
152     /** Get the forbidden character table.
153 
154        @returns
155        the forbidden characters table.
156     */
157     virtual const vos::ORef<SvxForbiddenCharactersTable>& getForbiddenCharacterTable() const = 0;
158 
159     /** Get the current link update mode.
160 
161        @param bGlobalSettings
162        [in] if set, the link update mode is obtained from the module,
163             if it is set to GLOBALSETTING
164 
165        @returns
166        the current link update mode.
167     */
168     virtual sal_uInt16 getLinkUpdateMode( /*[in]*/bool bGlobalSettings ) const = 0;
169 
170     /** Set the current link update mode.
171 
172        @param nMode
173        [in] the new link update mode.
174     */
175     virtual void setLinkUpdateMode( /*[in]*/ sal_uInt16 nMode ) = 0;
176 
177     /** Get the current field update mode.
178 
179        @param bGlobalSettings
180        [in] if set, the field update mode is obtained from the module,
181             if it is set to GLOBALSETTING
182 
183        @returns
184        the current field update mode.
185     */
186     virtual SwFldUpdateFlags getFieldUpdateFlags( /*[in]*/bool bGlobalSettings ) const = 0;
187 
188     /** Set the current field update mode.
189 
190        @param nMode
191        [in] the new field update mode.
192     */
193     virtual void setFieldUpdateFlags( /*[in]*/ SwFldUpdateFlags nMode )  = 0;
194 
195     /** Get the character compression type for Asian characters.
196 
197        @returns
198        the current character compression mode.
199     */
200     virtual SwCharCompressType getCharacterCompressionType() const = 0;
201 
202     /** Set the character compression type for Asian characters.
203 
204        @param nMode
205        [in] the new character compression type.
206     */
207     virtual void setCharacterCompressionType( /*[in]*/SwCharCompressType nType ) = 0;
208 
209 protected:
210     virtual ~IDocumentSettingAccess() {};
211  };
212 
213 #endif // IDOCUMENTSETTINGACCESS_HXX_INCLUDED
214