1*efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*efeef26fSAndrew Rist  * distributed with this work for additional information
6*efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9*efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*efeef26fSAndrew Rist  *
11*efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*efeef26fSAndrew Rist  *
13*efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15*efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*efeef26fSAndrew Rist  * specific language governing permissions and limitations
18*efeef26fSAndrew Rist  * under the License.
19*efeef26fSAndrew Rist  *
20*efeef26fSAndrew Rist  *************************************************************/
21*efeef26fSAndrew Rist 
22*efeef26fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <vos/mutex.hxx>
28cdf0e10cSrcweir #include <sfx2/sfxbasecontroller.hxx>
29cdf0e10cSrcweir #include <SwXDocumentSettings.hxx>
30cdf0e10cSrcweir #include <comphelper/MasterPropertySetInfo.hxx>
31cdf0e10cSrcweir #include <com/sun/star/beans/PropertyAttribute.hpp>
32cdf0e10cSrcweir #include <com/sun/star/i18n/XForbiddenCharacters.hpp>
33cdf0e10cSrcweir #include <com/sun/star/document/PrinterIndependentLayout.hpp>
34cdf0e10cSrcweir #include <doc.hxx>
35cdf0e10cSrcweir #include <docsh.hxx>
36cdf0e10cSrcweir #include <fldupde.hxx>
37cdf0e10cSrcweir #include <linkenum.hxx>
38cdf0e10cSrcweir #include <sfx2/printer.hxx>
39cdf0e10cSrcweir #include <editsh.hxx>
40cdf0e10cSrcweir #include <drawdoc.hxx>
41cdf0e10cSrcweir #include <svl/zforlist.hxx>
42cdf0e10cSrcweir #include <unotxdoc.hxx>
43cdf0e10cSrcweir #include <cmdid.h>
44cdf0e10cSrcweir #include <svx/zoomitem.hxx>
45cdf0e10cSrcweir #include <unomod.hxx>
46cdf0e10cSrcweir #include <vcl/svapp.hxx>
47cdf0e10cSrcweir 
48cdf0e10cSrcweir #include "swmodule.hxx"
49cdf0e10cSrcweir #include "cfgitems.hxx"
50cdf0e10cSrcweir #include "prtopt.hxx"
51cdf0e10cSrcweir 
52cdf0e10cSrcweir 
53cdf0e10cSrcweir #include "swmodule.hxx"
54cdf0e10cSrcweir #include "cfgitems.hxx"
55cdf0e10cSrcweir #include "prtopt.hxx"
56cdf0e10cSrcweir 
57cdf0e10cSrcweir using rtl::OUString;
58cdf0e10cSrcweir 
59cdf0e10cSrcweir using namespace comphelper;
60cdf0e10cSrcweir using namespace ::com::sun::star;
61cdf0e10cSrcweir using namespace ::com::sun::star::uno;
62cdf0e10cSrcweir using namespace ::com::sun::star::beans;
63cdf0e10cSrcweir using namespace ::com::sun::star::lang;
64cdf0e10cSrcweir using namespace ::com::sun::star::i18n;
65cdf0e10cSrcweir 
66cdf0e10cSrcweir enum SwDocumentSettingsPropertyHandles
67cdf0e10cSrcweir {
68cdf0e10cSrcweir 	HANDLE_FORBIDDEN_CHARS,
69cdf0e10cSrcweir 	HANDLE_LINK_UPDATE_MODE,
70cdf0e10cSrcweir 	HANDLE_FIELD_AUTO_UPDATE,
71cdf0e10cSrcweir 	HANDLE_CHART_AUTO_UPDATE,
72cdf0e10cSrcweir 	HANDLE_ADD_PARA_TABLE_SPACING,
73cdf0e10cSrcweir 	HANDLE_ADD_PARA_TABLE_SPACING_AT_START,
74cdf0e10cSrcweir 	HANDLE_ALIGN_TAB_STOP_POSITION,
75cdf0e10cSrcweir 	HANDLE_PRINTER_NAME,
76cdf0e10cSrcweir 	HANDLE_PRINTER_SETUP,
77cdf0e10cSrcweir 	HANDLE_IS_KERN_ASIAN_PUNCTUATION,
78cdf0e10cSrcweir 	HANDLE_CHARACTER_COMPRESSION_TYPE,
79cdf0e10cSrcweir 	HANDLE_APPLY_USER_DATA,
80cdf0e10cSrcweir 	HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS,
81cdf0e10cSrcweir 	HANDLE_CURRENT_DATABASE_DATA_SOURCE,
82cdf0e10cSrcweir 	HANDLE_CURRENT_DATABASE_COMMAND,
83cdf0e10cSrcweir 	HANDLE_CURRENT_DATABASE_COMMAND_TYPE,
84cdf0e10cSrcweir 	HANDLE_SAVE_VERSION_ON_CLOSE,
85cdf0e10cSrcweir 	HANDLE_IS_GRID_VISIBLE,
86cdf0e10cSrcweir 	HANDLE_IS_SNAP_TO_GRID,
87cdf0e10cSrcweir 	HANDLE_IS_SYNCHRONISE_AXES,
88cdf0e10cSrcweir 	HANDLE_HORIZONTAL_GRID_RESOLUTION,
89cdf0e10cSrcweir 	HANDLE_HORIZONTAL_GRID_SUBDIVISION,
90cdf0e10cSrcweir 	HANDLE_VERTICAL_GRID_RESOLUTION,
91cdf0e10cSrcweir     HANDLE_VERTICAL_GRID_SUBDIVISION,
92cdf0e10cSrcweir     HANDLE_UPDATE_FROM_TEMPLATE,
93cdf0e10cSrcweir     HANDLE_PRINTER_INDEPENDENT_LAYOUT,
94cdf0e10cSrcweir     HANDLE_IS_LABEL_DOC,
95cdf0e10cSrcweir     HANDLE_IS_ADD_FLY_OFFSET,
96cdf0e10cSrcweir     HANDLE_IS_ADD_EXTERNAL_LEADING,
97cdf0e10cSrcweir     HANDLE_OLD_NUMBERING, // #111955#
98cdf0e10cSrcweir     HANDLE_OUTLINELEVEL_YIELDS_NUMBERING,
99cdf0e10cSrcweir     /* Stampit It disable the print cancel button of the shown progress dialog. */
100cdf0e10cSrcweir     HANDLE_ALLOW_PRINTJOB_CANCEL,
101cdf0e10cSrcweir     HANDLE_USE_FORMER_LINE_SPACING,
102cdf0e10cSrcweir     HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS,
103cdf0e10cSrcweir     HANDLE_USE_FORMER_OBJECT_POSITIONING,
104cdf0e10cSrcweir     HANDLE_USE_FORMER_TEXT_WRAPPING,
105cdf0e10cSrcweir     HANDLE_CHANGES_PASSWORD,
106cdf0e10cSrcweir     HANDLE_CONSIDER_WRAP_ON_OBJPOS,
107cdf0e10cSrcweir     HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING,
108cdf0e10cSrcweir     HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK,
109cdf0e10cSrcweir     HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT,
110cdf0e10cSrcweir     HANDLE_TABLE_ROW_KEEP,
111cdf0e10cSrcweir     HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION,
112cdf0e10cSrcweir     HANDLE_LOAD_READONLY,
113cdf0e10cSrcweir     HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE,
114cdf0e10cSrcweir     HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES,
115cdf0e10cSrcweir     HANDLE_UNIX_FORCE_ZERO_EXT_LEADING,
116cdf0e10cSrcweir     HANDLE_USE_OLD_PRINTER_METRICS,
117cdf0e10cSrcweir     HANDLE_PROTECT_FORM,
118cdf0e10cSrcweir     HANDLE_TABS_RELATIVE_TO_INDENT,
119cdf0e10cSrcweir     // --> OD 2008-06-05 #i89181#
120cdf0e10cSrcweir     HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST,
121cdf0e10cSrcweir     // <--
122cdf0e10cSrcweir     HANDLE_MODIFYPASSWORDINFO,
123cdf0e10cSrcweir     HANDLE_MATH_BASELINE_ALIGNMENT
124cdf0e10cSrcweir };
125cdf0e10cSrcweir 
lcl_createSettingsInfo()126cdf0e10cSrcweir MasterPropertySetInfo * lcl_createSettingsInfo()
127cdf0e10cSrcweir {
128cdf0e10cSrcweir 	static PropertyInfo aWriterSettingsInfoMap[] =
129cdf0e10cSrcweir 	{
130cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("ForbiddenCharacters"),        HANDLE_FORBIDDEN_CHARS,                 CPPUTYPE_REFFORBCHARS,      0,   0},
131cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("LinkUpdateMode"), 	 		HANDLE_LINK_UPDATE_MODE, 				CPPUTYPE_INT16,				0,   0},
132cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("FieldAutoUpdate"), 	 		HANDLE_FIELD_AUTO_UPDATE, 				CPPUTYPE_BOOLEAN,			0,   0},
133cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ChartAutoUpdate"), 	 		HANDLE_CHART_AUTO_UPDATE, 				CPPUTYPE_BOOLEAN,			0,   0},
134cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("AddParaTableSpacing"), 	 	HANDLE_ADD_PARA_TABLE_SPACING, 			CPPUTYPE_BOOLEAN,			0,   0},
135cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("AddParaTableSpacingAtStart"), HANDLE_ADD_PARA_TABLE_SPACING_AT_START, CPPUTYPE_BOOLEAN,			0,   0},
136cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("AlignTabStopPosition"), 		HANDLE_ALIGN_TAB_STOP_POSITION, 		CPPUTYPE_BOOLEAN,			0,   0},
137cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("PrinterName"),				HANDLE_PRINTER_NAME,					CPPUTYPE_OUSTRING,			0,   0},
138cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("PrinterSetup"),				HANDLE_PRINTER_SETUP,					CPPUTYPE_SEQINT8,			0,   0},
139cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("IsKernAsianPunctuation"),	    HANDLE_IS_KERN_ASIAN_PUNCTUATION,		CPPUTYPE_BOOLEAN,			0,   0},
140cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("CharacterCompressionType"),	HANDLE_CHARACTER_COMPRESSION_TYPE,		CPPUTYPE_INT16,				0,   0},
141cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ApplyUserData"), 	 		    HANDLE_APPLY_USER_DATA, 				CPPUTYPE_BOOLEAN,			0,   0},
142cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("SaveGlobalDocumentLinks"),	HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS, 		CPPUTYPE_BOOLEAN,			0,   0},
143cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("CurrentDatabaseDataSource"),  HANDLE_CURRENT_DATABASE_DATA_SOURCE, 	CPPUTYPE_OUSTRING,			0,   0},
144cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("CurrentDatabaseCommand"), 	HANDLE_CURRENT_DATABASE_COMMAND, 		CPPUTYPE_OUSTRING,			0,   0},
145cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("CurrentDatabaseCommandType"), HANDLE_CURRENT_DATABASE_COMMAND_TYPE,   CPPUTYPE_INT32,             0,   0},
146cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("SaveVersionOnClose"),		    HANDLE_SAVE_VERSION_ON_CLOSE, 			CPPUTYPE_BOOLEAN,			0,   0},
147cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("UpdateFromTemplate"),         HANDLE_UPDATE_FROM_TEMPLATE,            CPPUTYPE_BOOLEAN,           0,   0},
148cdf0e10cSrcweir 
149cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("PrinterIndependentLayout"),   HANDLE_PRINTER_INDEPENDENT_LAYOUT,		CPPUTYPE_INT16, 			0,	 0},
150cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("IsLabelDocument"),            HANDLE_IS_LABEL_DOC,                    CPPUTYPE_BOOLEAN,           0,   0},
151cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("AddFrameOffsets"),            HANDLE_IS_ADD_FLY_OFFSET,               CPPUTYPE_BOOLEAN,           0,   0},
152cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("AddExternalLeading"),         HANDLE_IS_ADD_EXTERNAL_LEADING,         CPPUTYPE_BOOLEAN,           0,   0},
153cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("UseOldNumbering"),            HANDLE_OLD_NUMBERING,                   CPPUTYPE_BOOLEAN,           0,   0}, // #111955#
154cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("OutlineLevelYieldsNumbering"), HANDLE_OUTLINELEVEL_YIELDS_NUMBERING, CPPUTYPE_BOOLEAN,           0,   0},
155cdf0e10cSrcweir         /* Stampit It disable the print cancel button of the shown progress dialog. */
156cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("AllowPrintJobCancel"),        HANDLE_ALLOW_PRINTJOB_CANCEL,           CPPUTYPE_BOOLEAN,           0,   0},
157cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("UseFormerLineSpacing"),       HANDLE_USE_FORMER_LINE_SPACING,         CPPUTYPE_BOOLEAN,           0,   0},
158cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("AddParaSpacingToTableCells"), HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS, CPPUTYPE_BOOLEAN,           0,   0},
159cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("UseFormerObjectPositioning"), HANDLE_USE_FORMER_OBJECT_POSITIONING,   CPPUTYPE_BOOLEAN,           0,   0},
160cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("UseFormerTextWrapping"),      HANDLE_USE_FORMER_TEXT_WRAPPING,        CPPUTYPE_BOOLEAN,           0,   0},
161cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("RedlineProtectionKey"),       HANDLE_CHANGES_PASSWORD,      	        CPPUTYPE_SEQINT8,           0,   0},
162cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("ConsiderTextWrapOnObjPos"),   HANDLE_CONSIDER_WRAP_ON_OBJPOS,         CPPUTYPE_BOOLEAN,           0,   0},
163cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("IgnoreFirstLineIndentInNumbering"),   HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING,         CPPUTYPE_BOOLEAN,           0,   0},
164cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("DoNotJustifyLinesWithManualBreak"),   HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK,         CPPUTYPE_BOOLEAN,           0,   0},
165cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("DoNotResetParaAttrsForNumFont"),   HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT,         CPPUTYPE_BOOLEAN,           0,   0},
166cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("TableRowKeep"),               HANDLE_TABLE_ROW_KEEP,         CPPUTYPE_BOOLEAN,           0,   0},
167cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("IgnoreTabsAndBlanksForLineCalculation"),   HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION,         CPPUTYPE_BOOLEAN,           0,   0},
168cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("LoadReadonly"),               HANDLE_LOAD_READONLY,                   CPPUTYPE_BOOLEAN,           0,   0},
169cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("DoNotCaptureDrawObjsOnPage"),   HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, CPPUTYPE_BOOLEAN, 0, 0},
170cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("ClipAsCharacterAnchoredWriterFlyFrames"), HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES, CPPUTYPE_BOOLEAN, 0, 0},
171cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("UnxForceZeroExtLeading"), HANDLE_UNIX_FORCE_ZERO_EXT_LEADING, CPPUTYPE_BOOLEAN, 0, 0},
172cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("UseOldPrinterMetrics"), HANDLE_USE_OLD_PRINTER_METRICS, CPPUTYPE_BOOLEAN, 0, 0},
173cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("TabsRelativeToIndent"), HANDLE_TABS_RELATIVE_TO_INDENT, CPPUTYPE_BOOLEAN, 0, 0},
174cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("ProtectForm"), HANDLE_PROTECT_FORM, CPPUTYPE_BOOLEAN, 0, 0},
175cdf0e10cSrcweir         // --> OD 2008-06-05 #i89181#
176cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("TabAtLeftIndentForParagraphsInList"), HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, CPPUTYPE_BOOLEAN, 0, 0},
177cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("ModifyPasswordInfo"), HANDLE_MODIFYPASSWORDINFO, CPPUTYPE_PROPERTYVALUE, 0,   0},
178cdf0e10cSrcweir         { RTL_CONSTASCII_STRINGPARAM("MathBaselineAlignment"), HANDLE_MATH_BASELINE_ALIGNMENT, CPPUTYPE_BOOLEAN, 0, 0},
179cdf0e10cSrcweir 
180cdf0e10cSrcweir /*
181cdf0e10cSrcweir  * As OS said, we don't have a view when we need to set this, so I have to
182cdf0e10cSrcweir  * find another solution before adding them to this property set - MTG
183cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("IsGridVisible"),		    	HANDLE_IS_GRID_VISIBLE, 				CPPUTYPE_BOOLEAN,			0,   0},
184cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("IsSnapToGrid"),		    	HANDLE_IS_SNAP_TO_GRID, 				CPPUTYPE_BOOLEAN,			0,   0},
185cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("IsSynchroniseAxes"),		   	HANDLE_IS_SYNCHRONISE_AXES, 			CPPUTYPE_BOOLEAN,			0,   0},
186cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("HorizontalGridResolution"),	HANDLE_HORIZONTAL_GRID_RESOLUTION, 		CPPUTYPE_INT32,				0,   0},
187cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("HorizontalGridSubdivision"),	HANDLE_HORIZONTAL_GRID_SUBDIVISION,		CPPUTYPE_INT16,				0,   0},
188cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("VerticalGridResolution"),	    HANDLE_VERTICAL_GRID_RESOLUTION, 		CPPUTYPE_INT32,				0,   0},
189cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("VerticalGridSubdivision"),	HANDLE_VERTICAL_GRID_SUBDIVISION, 		CPPUTYPE_INT16,				0,   0},
190cdf0e10cSrcweir 
191cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowParagraphEnd"),			HANDLE_SHOW_PARAGRAPH_END, 				CPPUTYPE_BOOLEAN,			0,   0},
192cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowOptionalHyphens"),		HANDLE_SHOW_OPTIONAL_HYPHENS,			CPPUTYPE_BOOLEAN,			0,   0},
193cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowSpaces"),	    			HANDLE_SHOW_SPACES, 					CPPUTYPE_BOOLEAN,			0,   0},
194cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowTabs"),					HANDLE_SHOW_TABS, 						CPPUTYPE_BOOLEAN,			0,   0},
195cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowBreaks"),					HANDLE_SHOW_BREAKS, 					CPPUTYPE_BOOLEAN,			0,   0},
196cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowHiddenText"),				HANDLE_SHOW_HIDDEN_TEXT, 				CPPUTYPE_BOOLEAN,			0,   0},
197cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowHiddenParagraphs"),		HANDLE_SHOW_HIDDEN_PARAGRAPHS, 			CPPUTYPE_BOOLEAN,			0,   0},
198cdf0e10cSrcweir 
199cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowTextLimitGuide"),			HANDLE_SHOW_TEXT_LIMIT_GUIDE, 			CPPUTYPE_BOOLEAN,			0,   0},
200cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowTableLimitGuide"),		HANDLE_SHOW_TABLE_LIMIT_GUIDE, 			CPPUTYPE_BOOLEAN,			0,   0},
201cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowSectionLimitGuide"),		HANDLE_SHOW_SECTION_LIMIT_GUIDE, 		CPPUTYPE_BOOLEAN,			0,   0},
202cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowGuidesWhileMoving"),		HANDLE_SHOW_GUIDES_WHILE_MOVING, 		CPPUTYPE_BOOLEAN,			0,   0},
203cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowSimpleHandles"),			HANDLE_SHOW_SIMPLE_HANDLES, 			CPPUTYPE_BOOLEAN,			0,   0},
204cdf0e10cSrcweir 		{ RTL_CONSTASCII_STRINGPARAM("ShowLargeHandles"),			HANDLE_SHOW_LARGE_HANDLES, 				CPPUTYPE_BOOLEAN,			0,   0},
205cdf0e10cSrcweir */
206cdf0e10cSrcweir 		{ NULL, 0, 0, CPPUTYPE_UNKNOWN, 0, 0 }
207cdf0e10cSrcweir 	};
208cdf0e10cSrcweir 	return new MasterPropertySetInfo ( aWriterSettingsInfoMap );
209cdf0e10cSrcweir }
210cdf0e10cSrcweir 
SwXDocumentSettings(SwXTextDocument * pModel)211cdf0e10cSrcweir SwXDocumentSettings::SwXDocumentSettings ( SwXTextDocument * pModel )
212cdf0e10cSrcweir : MasterPropertySet ( lcl_createSettingsInfo (),
213cdf0e10cSrcweir                       &Application::GetSolarMutex () )
214cdf0e10cSrcweir , mxModel ( pModel )
215cdf0e10cSrcweir , mpModel ( pModel )
216cdf0e10cSrcweir , mpDocSh ( NULL )
217cdf0e10cSrcweir , mpDoc ( NULL )
218cdf0e10cSrcweir , mpPrinter( NULL )
219cdf0e10cSrcweir {
220cdf0e10cSrcweir 	registerSlave ( new SwXPrintSettings ( PRINT_SETTINGS_DOCUMENT, mpModel->GetDocShell()->GetDoc() ) );
221cdf0e10cSrcweir }
222cdf0e10cSrcweir 
~SwXDocumentSettings()223cdf0e10cSrcweir SwXDocumentSettings::~SwXDocumentSettings()
224cdf0e10cSrcweir 	throw()
225cdf0e10cSrcweir {
226cdf0e10cSrcweir }
227cdf0e10cSrcweir 
queryInterface(const Type & rType)228cdf0e10cSrcweir Any SAL_CALL SwXDocumentSettings::queryInterface( const Type& rType )
229cdf0e10cSrcweir 	throw(RuntimeException)
230cdf0e10cSrcweir {
231cdf0e10cSrcweir         return ::cppu::queryInterface ( rType,
232cdf0e10cSrcweir 										// OWeakObject interfaces
233cdf0e10cSrcweir                                         dynamic_cast< XInterface* > ( dynamic_cast< OWeakObject*  >(this) ),
234cdf0e10cSrcweir                                         dynamic_cast< XWeak* > ( this ),
235cdf0e10cSrcweir 										// my own interfaces
236cdf0e10cSrcweir                                         dynamic_cast< XPropertySet*  > ( this ),
237cdf0e10cSrcweir                                         dynamic_cast< XPropertyState* > ( this ),
238cdf0e10cSrcweir                                         dynamic_cast< XMultiPropertySet* > ( this ),
239cdf0e10cSrcweir                                         dynamic_cast< XServiceInfo* > ( this ),
240cdf0e10cSrcweir                                         dynamic_cast< XTypeProvider* > ( this ) );
241cdf0e10cSrcweir }
acquire()242cdf0e10cSrcweir void SwXDocumentSettings::acquire ()
243cdf0e10cSrcweir 	throw ()
244cdf0e10cSrcweir {
245cdf0e10cSrcweir 	OWeakObject::acquire();
246cdf0e10cSrcweir }
release()247cdf0e10cSrcweir void SwXDocumentSettings::release ()
248cdf0e10cSrcweir 	throw ()
249cdf0e10cSrcweir {
250cdf0e10cSrcweir 	OWeakObject::release();
251cdf0e10cSrcweir }
252cdf0e10cSrcweir 
getTypes()253cdf0e10cSrcweir uno::Sequence< uno::Type > SAL_CALL SwXDocumentSettings::getTypes(  )
254cdf0e10cSrcweir     throw (RuntimeException)
255cdf0e10cSrcweir {
256cdf0e10cSrcweir     vos::OGuard aGuard(Application::GetSolarMutex());
257cdf0e10cSrcweir 
258cdf0e10cSrcweir     uno::Sequence< uno::Type > aBaseTypes( 5 );
259cdf0e10cSrcweir     uno::Type* pBaseTypes = aBaseTypes.getArray();
260cdf0e10cSrcweir 
261cdf0e10cSrcweir     // from MasterPropertySet
262cdf0e10cSrcweir     pBaseTypes[0] = ::getCppuType((Reference< XPropertySet >*)0);
263cdf0e10cSrcweir     pBaseTypes[1] = ::getCppuType((Reference< XPropertyState >*)0);
264cdf0e10cSrcweir     pBaseTypes[2] = ::getCppuType((Reference< XMultiPropertySet >*)0);
265cdf0e10cSrcweir     //
266cdf0e10cSrcweir     pBaseTypes[3] = ::getCppuType((Reference< XServiceInfo >*)0);
267cdf0e10cSrcweir     pBaseTypes[4] = ::getCppuType((Reference< XTypeProvider >*)0);
268cdf0e10cSrcweir 
269cdf0e10cSrcweir     return aBaseTypes;
270cdf0e10cSrcweir }
271cdf0e10cSrcweir 
getImplementationId()272cdf0e10cSrcweir uno::Sequence< sal_Int8 > SAL_CALL SwXDocumentSettings::getImplementationId(  )
273cdf0e10cSrcweir     throw (RuntimeException)
274cdf0e10cSrcweir {
275cdf0e10cSrcweir     vos::OGuard aGuard(Application::GetSolarMutex());
276cdf0e10cSrcweir     static Sequence< sal_Int8 > aId( 16 );
277cdf0e10cSrcweir     static sal_Bool bInit = sal_False;
278cdf0e10cSrcweir     if(!bInit)
279cdf0e10cSrcweir     {
280cdf0e10cSrcweir         rtl_createUuid( (sal_uInt8 *)(aId.getArray() ), 0, sal_True );
281cdf0e10cSrcweir         bInit = sal_True;
282cdf0e10cSrcweir     }
283cdf0e10cSrcweir     return aId;
284cdf0e10cSrcweir }
285cdf0e10cSrcweir 
_preSetValues()286cdf0e10cSrcweir void SwXDocumentSettings::_preSetValues ()
287cdf0e10cSrcweir         throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException )
288cdf0e10cSrcweir {
289cdf0e10cSrcweir 	mpDocSh = mpModel->GetDocShell();
290cdf0e10cSrcweir 	mpDoc = mpDocSh->GetDoc();
291cdf0e10cSrcweir 
292cdf0e10cSrcweir 	if( NULL == mpDoc || NULL == mpDocSh )
293cdf0e10cSrcweir 		throw UnknownPropertyException();
294cdf0e10cSrcweir }
295cdf0e10cSrcweir 
296cdf0e10cSrcweir 
_setSingleValue(const comphelper::PropertyInfo & rInfo,const uno::Any & rValue)297cdf0e10cSrcweir void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue )
298cdf0e10cSrcweir         throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException )
299cdf0e10cSrcweir {
300cdf0e10cSrcweir 	if (rInfo.mnAttributes & PropertyAttribute::READONLY)
301cdf0e10cSrcweir 		throw PropertyVetoException ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Property is read-only: " ) ) + C2U(rInfo.mpName), static_cast < cppu::OWeakObject * > ( 0 ) );
302cdf0e10cSrcweir 
303cdf0e10cSrcweir 	switch( rInfo.mnHandle )
304cdf0e10cSrcweir 	{
305cdf0e10cSrcweir 		case HANDLE_FORBIDDEN_CHARS:
306cdf0e10cSrcweir 			break;
307cdf0e10cSrcweir 		case HANDLE_LINK_UPDATE_MODE:
308cdf0e10cSrcweir 		{
309cdf0e10cSrcweir 			sal_Int16 nMode = 0;
310cdf0e10cSrcweir 			rValue >>= nMode;
311cdf0e10cSrcweir 			switch (nMode)
312cdf0e10cSrcweir 			{
313cdf0e10cSrcweir 				case NEVER:
314cdf0e10cSrcweir 				case MANUAL:
315cdf0e10cSrcweir 				case AUTOMATIC:
316cdf0e10cSrcweir 				case GLOBALSETTING:
317cdf0e10cSrcweir 					break;
318cdf0e10cSrcweir 				default:
319cdf0e10cSrcweir 					throw IllegalArgumentException();
320cdf0e10cSrcweir 			}
321cdf0e10cSrcweir             mpDoc->setLinkUpdateMode(nMode);
322cdf0e10cSrcweir 		}
323cdf0e10cSrcweir 		break;
324cdf0e10cSrcweir 		case HANDLE_FIELD_AUTO_UPDATE:
325cdf0e10cSrcweir 		{
326cdf0e10cSrcweir 			sal_Bool bUpdateField = *(sal_Bool*)rValue.getValue();
327cdf0e10cSrcweir             SwFldUpdateFlags nFlag = mpDoc->getFieldUpdateFlags(true);
328cdf0e10cSrcweir             mpDoc->setFieldUpdateFlags( bUpdateField ?
329cdf0e10cSrcweir                                         nFlag == AUTOUPD_FIELD_AND_CHARTS ?
330cdf0e10cSrcweir                                         AUTOUPD_FIELD_AND_CHARTS :
331cdf0e10cSrcweir                                         AUTOUPD_FIELD_ONLY :
332cdf0e10cSrcweir                                         AUTOUPD_OFF );
333cdf0e10cSrcweir 		}
334cdf0e10cSrcweir 		break;
335cdf0e10cSrcweir 		case HANDLE_CHART_AUTO_UPDATE:
336cdf0e10cSrcweir 		{
337cdf0e10cSrcweir 			sal_Bool bUpdateChart = *(sal_Bool*)rValue.getValue();
338cdf0e10cSrcweir             SwFldUpdateFlags nFlag = mpDoc->getFieldUpdateFlags(true);
339cdf0e10cSrcweir             mpDoc->setFieldUpdateFlags( (nFlag == AUTOUPD_FIELD_ONLY || nFlag == AUTOUPD_FIELD_AND_CHARTS ) ?
340cdf0e10cSrcweir                                         bUpdateChart ?
341cdf0e10cSrcweir                                         AUTOUPD_FIELD_AND_CHARTS :
342cdf0e10cSrcweir                                         AUTOUPD_FIELD_ONLY :
343cdf0e10cSrcweir                                         AUTOUPD_OFF );
344cdf0e10cSrcweir 		}
345cdf0e10cSrcweir 		break;
346cdf0e10cSrcweir 		case HANDLE_ADD_PARA_TABLE_SPACING:
347cdf0e10cSrcweir 		{
348cdf0e10cSrcweir 			sal_Bool bParaSpace = sal_False;
349cdf0e10cSrcweir 			rValue >>= bParaSpace;
350cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::PARA_SPACE_MAX, bParaSpace );
351cdf0e10cSrcweir 		}
352cdf0e10cSrcweir 		break;
353cdf0e10cSrcweir 		case HANDLE_ADD_PARA_TABLE_SPACING_AT_START:
354cdf0e10cSrcweir 		{
355cdf0e10cSrcweir 			sal_Bool bParaSpacePage = sal_False;
356cdf0e10cSrcweir 			rValue >>= bParaSpacePage;
357cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::PARA_SPACE_MAX_AT_PAGES, bParaSpacePage );
358cdf0e10cSrcweir         }
359cdf0e10cSrcweir 		break;
360cdf0e10cSrcweir 		case HANDLE_ALIGN_TAB_STOP_POSITION:
361cdf0e10cSrcweir 		{
362cdf0e10cSrcweir 			sal_Bool bAlignTab = *(sal_Bool*)rValue.getValue();
363cdf0e10cSrcweir 			mpDoc->set(IDocumentSettingAccess::TAB_COMPAT, bAlignTab);
364cdf0e10cSrcweir 		}
365cdf0e10cSrcweir 		break;
366cdf0e10cSrcweir 		case HANDLE_PRINTER_NAME:
367cdf0e10cSrcweir 		{
368cdf0e10cSrcweir             //the printer must be created
369cdf0e10cSrcweir             OUString sPrinterName;
370cdf0e10cSrcweir             if( rValue >>= sPrinterName  )
371cdf0e10cSrcweir             {
372cdf0e10cSrcweir 				if( !mpPrinter && sPrinterName.getLength() > 0 && mpDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED )
373cdf0e10cSrcweir 				{
374cdf0e10cSrcweir                     SfxPrinter* pPrinter = mpDoc->getPrinter( true );
375cdf0e10cSrcweir 					if ( OUString ( pPrinter->GetName()) != sPrinterName )
376cdf0e10cSrcweir 					{
377cdf0e10cSrcweir 						SfxPrinter *pNewPrinter = new SfxPrinter ( pPrinter->GetOptions().Clone(), sPrinterName );
378cdf0e10cSrcweir 						if( pNewPrinter->IsKnown() )
379cdf0e10cSrcweir 						{
380cdf0e10cSrcweir                             // set printer only once; in _postSetValues
381cdf0e10cSrcweir                             mpPrinter = pNewPrinter;
382cdf0e10cSrcweir 						}
383cdf0e10cSrcweir 						else
384cdf0e10cSrcweir 						{
385cdf0e10cSrcweir 							delete pNewPrinter;
386cdf0e10cSrcweir 						}
387cdf0e10cSrcweir 					}
388cdf0e10cSrcweir 				}
389cdf0e10cSrcweir             }
390cdf0e10cSrcweir             else
391cdf0e10cSrcweir                 throw IllegalArgumentException();
392cdf0e10cSrcweir 		}
393cdf0e10cSrcweir 		break;
394cdf0e10cSrcweir 		case HANDLE_PRINTER_SETUP:
395cdf0e10cSrcweir 		{
396cdf0e10cSrcweir 			Sequence < sal_Int8 > aSequence;
397cdf0e10cSrcweir 			if ( rValue >>= aSequence )
398cdf0e10cSrcweir 			{
399cdf0e10cSrcweir 				sal_uInt32 nSize = aSequence.getLength();
400cdf0e10cSrcweir 				if( nSize > 0 )
401cdf0e10cSrcweir 				{
402cdf0e10cSrcweir 					SvMemoryStream aStream (aSequence.getArray(), nSize,
403cdf0e10cSrcweir 											STREAM_READ );
404cdf0e10cSrcweir 					aStream.Seek ( STREAM_SEEK_TO_BEGIN );
405cdf0e10cSrcweir 					static sal_uInt16 __READONLY_DATA nRange[] =
406cdf0e10cSrcweir 					{
407cdf0e10cSrcweir 						FN_PARAM_ADDPRINTER, FN_PARAM_ADDPRINTER,
408cdf0e10cSrcweir 						SID_HTML_MODE,	SID_HTML_MODE,
409cdf0e10cSrcweir 						SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
410cdf0e10cSrcweir 						SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
411cdf0e10cSrcweir 						0
412cdf0e10cSrcweir 					};
413cdf0e10cSrcweir 					SfxItemSet *pItemSet = new SfxItemSet( mpDoc->GetAttrPool(), nRange );
414cdf0e10cSrcweir 					SfxPrinter *pPrinter = SfxPrinter::Create ( aStream, pItemSet );
415cdf0e10cSrcweir 
416cdf0e10cSrcweir                     // set printer only once; in _postSetValues
417cdf0e10cSrcweir                     delete mpPrinter;
418cdf0e10cSrcweir                     mpPrinter = pPrinter;
419cdf0e10cSrcweir 				}
420cdf0e10cSrcweir 			}
421cdf0e10cSrcweir 			else
422cdf0e10cSrcweir 				throw IllegalArgumentException();
423cdf0e10cSrcweir 		}
424cdf0e10cSrcweir 		break;
425cdf0e10cSrcweir 		case HANDLE_IS_KERN_ASIAN_PUNCTUATION:
426cdf0e10cSrcweir 		{
427cdf0e10cSrcweir 			sal_Bool bIsKern = *(sal_Bool*)(rValue).getValue();
428cdf0e10cSrcweir 			mpDoc->set(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION, bIsKern);
429cdf0e10cSrcweir 			SwEditShell* pEditSh = mpDoc->GetEditShell();
430cdf0e10cSrcweir 			if(pEditSh)
431cdf0e10cSrcweir 				pEditSh->ChgHyphenation();
432cdf0e10cSrcweir 		}
433cdf0e10cSrcweir 		break;
434cdf0e10cSrcweir 		case HANDLE_CHARACTER_COMPRESSION_TYPE:
435cdf0e10cSrcweir 		{
436cdf0e10cSrcweir 			sal_Int16 nMode = 0;
437cdf0e10cSrcweir 			rValue >>= nMode;
438cdf0e10cSrcweir 			switch (nMode)
439cdf0e10cSrcweir 			{
440cdf0e10cSrcweir 				case CHARCOMPRESS_NONE:
441cdf0e10cSrcweir 				case CHARCOMPRESS_PUNCTUATION:
442cdf0e10cSrcweir 				case CHARCOMPRESS_PUNCTUATION_KANA:
443cdf0e10cSrcweir 					break;
444cdf0e10cSrcweir 				default:
445cdf0e10cSrcweir 					throw IllegalArgumentException();
446cdf0e10cSrcweir 			}
447cdf0e10cSrcweir             mpDoc->setCharacterCompressionType(static_cast < SwCharCompressType > (nMode) );
448cdf0e10cSrcweir 		}
449cdf0e10cSrcweir 		break;
450cdf0e10cSrcweir 		case HANDLE_APPLY_USER_DATA:
451cdf0e10cSrcweir 		{
452cdf0e10cSrcweir 			mpDocSh->SetUseUserData( *(sal_Bool*)rValue.getValue() );
453cdf0e10cSrcweir 		}
454cdf0e10cSrcweir 		break;
455cdf0e10cSrcweir 		case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS:
456cdf0e10cSrcweir 		{
457cdf0e10cSrcweir 			sal_Bool bSaveGlobal = *(sal_Bool*)rValue.getValue();
458cdf0e10cSrcweir 			mpDoc->set(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS, bSaveGlobal );
459cdf0e10cSrcweir 		}
460cdf0e10cSrcweir 		break;
461cdf0e10cSrcweir 		case HANDLE_CURRENT_DATABASE_DATA_SOURCE:
462cdf0e10cSrcweir 		{
463cdf0e10cSrcweir 			SwDBData aData = mpDoc->GetDBData();
464cdf0e10cSrcweir 			if ( rValue >>= aData.sDataSource )
465cdf0e10cSrcweir 				mpDoc->ChgDBData( aData );
466cdf0e10cSrcweir 		}
467cdf0e10cSrcweir 		break;
468cdf0e10cSrcweir 		case HANDLE_CURRENT_DATABASE_COMMAND:
469cdf0e10cSrcweir 		{
470cdf0e10cSrcweir 			SwDBData aData = mpDoc->GetDBData();
471cdf0e10cSrcweir 			if ( rValue >>= aData.sCommand )
472cdf0e10cSrcweir 				mpDoc->ChgDBData( aData );
473cdf0e10cSrcweir 		}
474cdf0e10cSrcweir 		break;
475cdf0e10cSrcweir 		case HANDLE_CURRENT_DATABASE_COMMAND_TYPE:
476cdf0e10cSrcweir 		{
477cdf0e10cSrcweir 			SwDBData aData = mpDoc->GetDBData();
478cdf0e10cSrcweir 			if ( rValue >>= aData.nCommandType )
479cdf0e10cSrcweir 				mpDoc->ChgDBData( aData );
480cdf0e10cSrcweir 		}
481cdf0e10cSrcweir 		break;
482cdf0e10cSrcweir 		case HANDLE_SAVE_VERSION_ON_CLOSE:
483cdf0e10cSrcweir 		{
484cdf0e10cSrcweir 			mpDocSh->SetSaveVersionOnClose( *(sal_Bool*)rValue.getValue() );
485cdf0e10cSrcweir 		}
486cdf0e10cSrcweir 		break;
487cdf0e10cSrcweir         case HANDLE_UPDATE_FROM_TEMPLATE:
488cdf0e10cSrcweir         {
489cdf0e10cSrcweir             mpDocSh->SetQueryLoadTemplate( *(sal_Bool*)rValue.getValue() );
490cdf0e10cSrcweir         }
491cdf0e10cSrcweir         break;
492cdf0e10cSrcweir         case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
493cdf0e10cSrcweir         {
494cdf0e10cSrcweir             sal_Int16 nTmp = 0;
495cdf0e10cSrcweir             rValue >>= nTmp;
496cdf0e10cSrcweir 
497cdf0e10cSrcweir             bool bUseVirDev = true;
498cdf0e10cSrcweir             bool bHiResVirDev = true;
499cdf0e10cSrcweir             if( nTmp == document::PrinterIndependentLayout::DISABLED )
500cdf0e10cSrcweir                 bUseVirDev = false;
501cdf0e10cSrcweir             else if ( nTmp == document::PrinterIndependentLayout::LOW_RESOLUTION )
502cdf0e10cSrcweir                 bHiResVirDev = false;
503cdf0e10cSrcweir             else if ( nTmp != document::PrinterIndependentLayout::HIGH_RESOLUTION )
504cdf0e10cSrcweir                 throw IllegalArgumentException();
505cdf0e10cSrcweir 
506cdf0e10cSrcweir             mpDoc->setReferenceDeviceType( bUseVirDev, bHiResVirDev );
507cdf0e10cSrcweir         }
508cdf0e10cSrcweir         break;
509cdf0e10cSrcweir         case HANDLE_IS_LABEL_DOC :
510cdf0e10cSrcweir         {
511cdf0e10cSrcweir             sal_Bool bSet = sal_False;
512cdf0e10cSrcweir             if(!(rValue >>= bSet))
513cdf0e10cSrcweir                 throw IllegalArgumentException();
514cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::LABEL_DOCUMENT, bSet);
515cdf0e10cSrcweir         }
516cdf0e10cSrcweir         break;
517cdf0e10cSrcweir         case HANDLE_IS_ADD_FLY_OFFSET:
518cdf0e10cSrcweir         {
519cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
520cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::ADD_FLY_OFFSETS, bTmp);
521cdf0e10cSrcweir         }
522cdf0e10cSrcweir         break;
523cdf0e10cSrcweir         case HANDLE_IS_ADD_EXTERNAL_LEADING:
524cdf0e10cSrcweir         {
525cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
526cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::ADD_EXT_LEADING, bTmp);
527cdf0e10cSrcweir         }
528cdf0e10cSrcweir         break;
529cdf0e10cSrcweir         case HANDLE_OLD_NUMBERING: // #111955#
530cdf0e10cSrcweir         {
531cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
532cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::OLD_NUMBERING, bTmp);
533cdf0e10cSrcweir         }
534cdf0e10cSrcweir         case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING:
535cdf0e10cSrcweir         {
536cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
537cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::OUTLINE_LEVEL_YIELDS_OUTLINE_RULE, bTmp);
538cdf0e10cSrcweir         }
539cdf0e10cSrcweir         break;
540cdf0e10cSrcweir         case HANDLE_ALLOW_PRINTJOB_CANCEL:
541cdf0e10cSrcweir         {
542cdf0e10cSrcweir             sal_Bool bState = sal_False;
543cdf0e10cSrcweir             if (!(rValue >>= bState))
544cdf0e10cSrcweir                 throw IllegalArgumentException();
545cdf0e10cSrcweir             mpDocSh->Stamp_SetPrintCancelState(bState);
546cdf0e10cSrcweir         }
547cdf0e10cSrcweir         break;
548cdf0e10cSrcweir         case HANDLE_USE_FORMER_LINE_SPACING:
549cdf0e10cSrcweir         {
550cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
551cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::OLD_LINE_SPACING, bTmp);
552cdf0e10cSrcweir         }
553cdf0e10cSrcweir         break;
554cdf0e10cSrcweir         case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS:
555cdf0e10cSrcweir         {
556cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
557cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::ADD_PARA_SPACING_TO_TABLE_CELLS, bTmp);
558cdf0e10cSrcweir         }
559cdf0e10cSrcweir         break;
560cdf0e10cSrcweir         case HANDLE_USE_FORMER_OBJECT_POSITIONING:
561cdf0e10cSrcweir         {
562cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
563cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::USE_FORMER_OBJECT_POS, bTmp);
564cdf0e10cSrcweir         }
565cdf0e10cSrcweir         break;
566cdf0e10cSrcweir         case HANDLE_USE_FORMER_TEXT_WRAPPING:
567cdf0e10cSrcweir         {
568cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
569cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::USE_FORMER_TEXT_WRAPPING, bTmp);
570cdf0e10cSrcweir         }
571cdf0e10cSrcweir         break;
572cdf0e10cSrcweir         case HANDLE_CHANGES_PASSWORD:
573cdf0e10cSrcweir         {
574cdf0e10cSrcweir             Sequence <sal_Int8> aNew;
575cdf0e10cSrcweir             if(rValue >>= aNew)
576cdf0e10cSrcweir             {
577cdf0e10cSrcweir                 mpDoc->SetRedlinePassword(aNew);
578cdf0e10cSrcweir                 if(aNew.getLength())
579cdf0e10cSrcweir                 {
580cdf0e10cSrcweir                     sal_uInt16 eMode = mpDoc->GetRedlineMode();
581cdf0e10cSrcweir                     eMode = eMode|nsRedlineMode_t::REDLINE_ON;
582cdf0e10cSrcweir                     mpDoc->SetRedlineMode((RedlineMode_t)( eMode ));
583cdf0e10cSrcweir                 }
584cdf0e10cSrcweir             }
585cdf0e10cSrcweir         }
586cdf0e10cSrcweir         break;
587cdf0e10cSrcweir         case HANDLE_CONSIDER_WRAP_ON_OBJPOS:
588cdf0e10cSrcweir         {
589cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
590cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::CONSIDER_WRAP_ON_OBJECT_POSITION, bTmp );
591cdf0e10cSrcweir         }
592cdf0e10cSrcweir         break;
593cdf0e10cSrcweir         case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING:
594cdf0e10cSrcweir         {
595cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
596cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING, bTmp);
597cdf0e10cSrcweir         }
598cdf0e10cSrcweir         break;
599cdf0e10cSrcweir         case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
600cdf0e10cSrcweir         {
601cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
602cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK, bTmp);
603cdf0e10cSrcweir         }
604cdf0e10cSrcweir         break;
605cdf0e10cSrcweir         case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT:
606cdf0e10cSrcweir         {
607cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
608cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT, bTmp);
609cdf0e10cSrcweir         }
610cdf0e10cSrcweir         break;
611cdf0e10cSrcweir         case HANDLE_TABLE_ROW_KEEP:
612cdf0e10cSrcweir         {
613cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
614cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::TABLE_ROW_KEEP, bTmp);
615cdf0e10cSrcweir         }
616cdf0e10cSrcweir         break;
617cdf0e10cSrcweir         case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION:
618cdf0e10cSrcweir         {
619cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
620cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION, bTmp);
621cdf0e10cSrcweir         }
622cdf0e10cSrcweir         break;
623cdf0e10cSrcweir         case HANDLE_LOAD_READONLY:
624cdf0e10cSrcweir         {
625cdf0e10cSrcweir             mpDocSh->SetLoadReadonly( *(sal_Bool*)rValue.getValue() );
626cdf0e10cSrcweir         }
627cdf0e10cSrcweir         break;
628cdf0e10cSrcweir         case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE:
629cdf0e10cSrcweir         {
630cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
631cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE, bTmp);
632cdf0e10cSrcweir         }
633cdf0e10cSrcweir         break;
634cdf0e10cSrcweir         case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES:
635cdf0e10cSrcweir         {
636cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
637cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME, bTmp);
638cdf0e10cSrcweir         }
639cdf0e10cSrcweir         break;
640cdf0e10cSrcweir         case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING:
641cdf0e10cSrcweir         {
642cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
643cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::UNIX_FORCE_ZERO_EXT_LEADING, bTmp);
644cdf0e10cSrcweir         }
645cdf0e10cSrcweir         break;
646cdf0e10cSrcweir         case HANDLE_USE_OLD_PRINTER_METRICS:
647cdf0e10cSrcweir         {
648cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
649cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::USE_OLD_PRINTER_METRICS, bTmp);
650cdf0e10cSrcweir         }
651cdf0e10cSrcweir         break;
652cdf0e10cSrcweir         case HANDLE_TABS_RELATIVE_TO_INDENT:
653cdf0e10cSrcweir         {
654cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
655cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT, bTmp);
656cdf0e10cSrcweir         }
657cdf0e10cSrcweir         break;
658cdf0e10cSrcweir         case HANDLE_PROTECT_FORM:
659cdf0e10cSrcweir         {
660cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
661cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::PROTECT_FORM, bTmp);
662cdf0e10cSrcweir         }
663cdf0e10cSrcweir         break;
664cdf0e10cSrcweir         // --> OD 2008-06-05 #i89181#
665cdf0e10cSrcweir         case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST:
666cdf0e10cSrcweir         {
667cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
668cdf0e10cSrcweir             mpDoc->set(IDocumentSettingAccess::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST, bTmp);
669cdf0e10cSrcweir         }
670cdf0e10cSrcweir         break;
671cdf0e10cSrcweir         // <--
672cdf0e10cSrcweir         case HANDLE_MODIFYPASSWORDINFO:
673cdf0e10cSrcweir         {
674cdf0e10cSrcweir             uno::Sequence< beans::PropertyValue > aInfo;
675cdf0e10cSrcweir             if ( !( rValue >>= aInfo ) )
676cdf0e10cSrcweir                 throw lang::IllegalArgumentException(
677cdf0e10cSrcweir                     ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Value of type Sequence<PropertyValue> expected!" ) ),
678cdf0e10cSrcweir                     uno::Reference< uno::XInterface >(),
679cdf0e10cSrcweir                     2 );
680cdf0e10cSrcweir 
681cdf0e10cSrcweir             if ( !mpDocSh->SetModifyPasswordInfo( aInfo ) )
682cdf0e10cSrcweir                 throw beans::PropertyVetoException(
683cdf0e10cSrcweir                     ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "The hash is not allowed to be changed now!" ) ),
684cdf0e10cSrcweir                     uno::Reference< uno::XInterface >() );
685cdf0e10cSrcweir         }
686cdf0e10cSrcweir         break;
687cdf0e10cSrcweir         case HANDLE_MATH_BASELINE_ALIGNMENT:
688cdf0e10cSrcweir         {
689cdf0e10cSrcweir             sal_Bool bTmp = *(sal_Bool*)rValue.getValue();
690cdf0e10cSrcweir             mpDoc->set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT, bTmp );
691cdf0e10cSrcweir         }
692cdf0e10cSrcweir         break;
693cdf0e10cSrcweir         default:
694cdf0e10cSrcweir 			throw UnknownPropertyException();
695cdf0e10cSrcweir 	}
696cdf0e10cSrcweir }
697cdf0e10cSrcweir 
_postSetValues()698cdf0e10cSrcweir void SwXDocumentSettings::_postSetValues ()
699cdf0e10cSrcweir         throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException )
700cdf0e10cSrcweir {
701cdf0e10cSrcweir     // set printer only once, namely here!
702cdf0e10cSrcweir     if( mpPrinter != NULL )
703cdf0e10cSrcweir     {
704cdf0e10cSrcweir         // #i86352# the printer is also used as container for options by sfx
705cdf0e10cSrcweir         // when setting a printer it should have decent default options
706cdf0e10cSrcweir         SfxItemSet aOptions( mpPrinter->GetOptions() );
707cdf0e10cSrcweir         SwPrintData aPrtData( mpDoc->getPrintData() );
708cdf0e10cSrcweir         SwAddPrinterItem aAddPrinterItem (FN_PARAM_ADDPRINTER, aPrtData);
709cdf0e10cSrcweir         aOptions.Put(aAddPrinterItem);
710cdf0e10cSrcweir         mpPrinter->SetOptions( aOptions );
711cdf0e10cSrcweir 
712cdf0e10cSrcweir         mpDoc->setPrinter( mpPrinter, true, true );
713cdf0e10cSrcweir     }
714cdf0e10cSrcweir 
715cdf0e10cSrcweir 	mpPrinter = 0;
716cdf0e10cSrcweir 	mpDocSh = 0;
717cdf0e10cSrcweir 	mpDoc = 0;
718cdf0e10cSrcweir }
719cdf0e10cSrcweir 
_preGetValues()720cdf0e10cSrcweir void SwXDocumentSettings::_preGetValues ()
721cdf0e10cSrcweir         throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException )
722cdf0e10cSrcweir {
723cdf0e10cSrcweir 	mpDocSh = mpModel->GetDocShell();
724cdf0e10cSrcweir 	mpDoc = mpDocSh->GetDoc();
725cdf0e10cSrcweir 	if( NULL == mpDoc || NULL == mpDocSh )
726cdf0e10cSrcweir 		throw UnknownPropertyException();
727cdf0e10cSrcweir }
728cdf0e10cSrcweir 
_getSingleValue(const comphelper::PropertyInfo & rInfo,uno::Any & rValue)729cdf0e10cSrcweir void SwXDocumentSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, uno::Any & rValue )
730cdf0e10cSrcweir         throw(beans::UnknownPropertyException, lang::WrappedTargetException )
731cdf0e10cSrcweir {
732cdf0e10cSrcweir 	switch( rInfo.mnHandle )
733cdf0e10cSrcweir 	{
734cdf0e10cSrcweir 		case HANDLE_FORBIDDEN_CHARS:
735cdf0e10cSrcweir 		{
736cdf0e10cSrcweir 			Reference<XForbiddenCharacters> xRet(*mpModel->GetPropertyHelper(), UNO_QUERY);
737cdf0e10cSrcweir 			rValue <<= xRet;
738cdf0e10cSrcweir 		}
739cdf0e10cSrcweir 		break;
740cdf0e10cSrcweir 		case HANDLE_LINK_UPDATE_MODE:
741cdf0e10cSrcweir 		{
742cdf0e10cSrcweir             rValue <<= static_cast < sal_Int16 > ( mpDoc->getLinkUpdateMode(true) );
743cdf0e10cSrcweir 		}
744cdf0e10cSrcweir 		break;
745cdf0e10cSrcweir 		case HANDLE_FIELD_AUTO_UPDATE:
746cdf0e10cSrcweir 		{
747cdf0e10cSrcweir             SwFldUpdateFlags nFlags = mpDoc->getFieldUpdateFlags(true);
748cdf0e10cSrcweir             sal_Bool bFieldUpd = (nFlags == AUTOUPD_FIELD_ONLY || nFlags == AUTOUPD_FIELD_AND_CHARTS );
749cdf0e10cSrcweir 			rValue.setValue(&bFieldUpd, ::getBooleanCppuType());
750cdf0e10cSrcweir 		}
751cdf0e10cSrcweir 		break;
752cdf0e10cSrcweir 		case HANDLE_CHART_AUTO_UPDATE:
753cdf0e10cSrcweir 		{
754cdf0e10cSrcweir             SwFldUpdateFlags nFlags = mpDoc->getFieldUpdateFlags(true);
755cdf0e10cSrcweir             sal_Bool bChartUpd = nFlags == AUTOUPD_FIELD_AND_CHARTS;
756cdf0e10cSrcweir 			rValue.setValue(&bChartUpd, ::getBooleanCppuType());
757cdf0e10cSrcweir 		}
758cdf0e10cSrcweir 		break;
759cdf0e10cSrcweir 		case HANDLE_ADD_PARA_TABLE_SPACING:
760cdf0e10cSrcweir 		{
761cdf0e10cSrcweir 			sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::PARA_SPACE_MAX);
762cdf0e10cSrcweir 			rValue.setValue(&bParaSpace, ::getBooleanCppuType());
763cdf0e10cSrcweir 		}
764cdf0e10cSrcweir 		break;
765cdf0e10cSrcweir 		case HANDLE_ADD_PARA_TABLE_SPACING_AT_START:
766cdf0e10cSrcweir 		{
767cdf0e10cSrcweir 			sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::PARA_SPACE_MAX_AT_PAGES);
768cdf0e10cSrcweir 			rValue.setValue(&bParaSpace, ::getBooleanCppuType());
769cdf0e10cSrcweir 		}
770cdf0e10cSrcweir 		break;
771cdf0e10cSrcweir 		case HANDLE_ALIGN_TAB_STOP_POSITION:
772cdf0e10cSrcweir 		{
773cdf0e10cSrcweir 			sal_Bool bAlignTab = mpDoc->get(IDocumentSettingAccess::TAB_COMPAT);
774cdf0e10cSrcweir 			rValue.setValue(&bAlignTab, ::getBooleanCppuType());
775cdf0e10cSrcweir 		}
776cdf0e10cSrcweir 		break;
777cdf0e10cSrcweir 		case HANDLE_PRINTER_NAME:
778cdf0e10cSrcweir 		{
779cdf0e10cSrcweir             SfxPrinter *pPrinter = mpDoc->getPrinter( sal_False );
780cdf0e10cSrcweir 			rValue <<= pPrinter ? OUString ( pPrinter->GetName()) : OUString();
781cdf0e10cSrcweir 		}
782cdf0e10cSrcweir 		break;
783cdf0e10cSrcweir 		case HANDLE_PRINTER_SETUP:
784cdf0e10cSrcweir 		{
785cdf0e10cSrcweir             SfxPrinter *pPrinter = mpDocSh->GetDoc()->getPrinter( sal_False );
786cdf0e10cSrcweir 			if (pPrinter)
787cdf0e10cSrcweir 			{
788cdf0e10cSrcweir 				SvMemoryStream aStream;
789cdf0e10cSrcweir 				pPrinter->Store( aStream );
790cdf0e10cSrcweir 				aStream.Seek ( STREAM_SEEK_TO_END );
791cdf0e10cSrcweir 				sal_uInt32 nSize = aStream.Tell();
792cdf0e10cSrcweir 				aStream.Seek ( STREAM_SEEK_TO_BEGIN );
793cdf0e10cSrcweir 				Sequence < sal_Int8 > aSequence( nSize );
794cdf0e10cSrcweir 				aStream.Read ( aSequence.getArray(), nSize );
795cdf0e10cSrcweir 				rValue <<= aSequence;
796cdf0e10cSrcweir 			}
797cdf0e10cSrcweir 			else
798cdf0e10cSrcweir 			{
799cdf0e10cSrcweir 				Sequence < sal_Int8 > aSequence ( 0 );
800cdf0e10cSrcweir 				rValue <<= aSequence;
801cdf0e10cSrcweir 			}
802cdf0e10cSrcweir 		}
803cdf0e10cSrcweir 		break;
804cdf0e10cSrcweir 		case HANDLE_IS_KERN_ASIAN_PUNCTUATION:
805cdf0e10cSrcweir 		{
806cdf0e10cSrcweir 			//sal_Bool bParaSpace = mpDoc->IsKernAsianPunctuation();
807cdf0e10cSrcweir             sal_Bool bParaSpace = mpDoc->get(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION);
808cdf0e10cSrcweir 			rValue.setValue(&bParaSpace, ::getBooleanCppuType());
809cdf0e10cSrcweir 		}
810cdf0e10cSrcweir 		break;
811cdf0e10cSrcweir 		case HANDLE_APPLY_USER_DATA:
812cdf0e10cSrcweir 		{
813cdf0e10cSrcweir 			rValue <<= mpDocSh->IsUseUserData();
814cdf0e10cSrcweir 		}
815cdf0e10cSrcweir 		break;
816cdf0e10cSrcweir 		case HANDLE_CHARACTER_COMPRESSION_TYPE:
817cdf0e10cSrcweir 		{
818cdf0e10cSrcweir             rValue <<= static_cast < sal_Int16 > (mpDoc->getCharacterCompressionType());
819cdf0e10cSrcweir 		}
820cdf0e10cSrcweir 		break;
821cdf0e10cSrcweir 		case HANDLE_SAVE_GLOBAL_DOCUMENT_LINKS:
822cdf0e10cSrcweir 		{
823cdf0e10cSrcweir 			sal_Bool bSaveGlobal = mpDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT_SAVE_LINKS);
824cdf0e10cSrcweir 			rValue.setValue(&bSaveGlobal, ::getBooleanCppuType());
825cdf0e10cSrcweir 		}
826cdf0e10cSrcweir 		break;
827cdf0e10cSrcweir 		case HANDLE_CURRENT_DATABASE_DATA_SOURCE:
828cdf0e10cSrcweir 		{
829cdf0e10cSrcweir 			const SwDBData& rData = mpDoc->GetDBDesc();
830cdf0e10cSrcweir 			rValue <<= rData.sDataSource;
831cdf0e10cSrcweir 		}
832cdf0e10cSrcweir 		break;
833cdf0e10cSrcweir 		case HANDLE_CURRENT_DATABASE_COMMAND:
834cdf0e10cSrcweir 		{
835cdf0e10cSrcweir 			const SwDBData& rData = mpDoc->GetDBDesc();
836cdf0e10cSrcweir 			rValue <<= rData.sCommand;
837cdf0e10cSrcweir 		}
838cdf0e10cSrcweir 		break;
839cdf0e10cSrcweir 		case HANDLE_CURRENT_DATABASE_COMMAND_TYPE:
840cdf0e10cSrcweir 		{
841cdf0e10cSrcweir 			const SwDBData& rData = mpDoc->GetDBDesc();
842cdf0e10cSrcweir 			rValue <<= rData.nCommandType;
843cdf0e10cSrcweir 		}
844cdf0e10cSrcweir 		break;
845cdf0e10cSrcweir 		case HANDLE_SAVE_VERSION_ON_CLOSE:
846cdf0e10cSrcweir 		{
847cdf0e10cSrcweir 			rValue <<= mpDocSh->IsSaveVersionOnClose();
848cdf0e10cSrcweir 		}
849cdf0e10cSrcweir 		break;
850cdf0e10cSrcweir         case HANDLE_UPDATE_FROM_TEMPLATE:
851cdf0e10cSrcweir         {
852cdf0e10cSrcweir             rValue <<= mpDocSh->IsQueryLoadTemplate();
853cdf0e10cSrcweir         }
854cdf0e10cSrcweir         break;
855cdf0e10cSrcweir         case HANDLE_PRINTER_INDEPENDENT_LAYOUT:
856cdf0e10cSrcweir         {
857cdf0e10cSrcweir 			// returns short (see css.document.PrinterIndependentLayout)
858cdf0e10cSrcweir             sal_Int16 nVirDevType = mpDoc->get(IDocumentSettingAccess::USE_VIRTUAL_DEVICE) ?
859cdf0e10cSrcweir                                     ( mpDoc->get(IDocumentSettingAccess::USE_HIRES_VIRTUAL_DEVICE) ?
860cdf0e10cSrcweir                                       document::PrinterIndependentLayout::HIGH_RESOLUTION :
861cdf0e10cSrcweir                                       document::PrinterIndependentLayout::LOW_RESOLUTION ) :
862cdf0e10cSrcweir                                     document::PrinterIndependentLayout::DISABLED;
863cdf0e10cSrcweir             rValue <<= nVirDevType;
864cdf0e10cSrcweir         }
865cdf0e10cSrcweir         break;
866cdf0e10cSrcweir         case HANDLE_IS_LABEL_DOC:
867cdf0e10cSrcweir         {
868cdf0e10cSrcweir             sal_Bool bLabel = mpDoc->get(IDocumentSettingAccess::LABEL_DOCUMENT);
869cdf0e10cSrcweir             rValue <<= bLabel;
870cdf0e10cSrcweir         }
871cdf0e10cSrcweir         break;
872cdf0e10cSrcweir         case HANDLE_IS_ADD_FLY_OFFSET:
873cdf0e10cSrcweir         {
874cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_FLY_OFFSETS);
875cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
876cdf0e10cSrcweir         }
877cdf0e10cSrcweir         break;
878cdf0e10cSrcweir         case HANDLE_IS_ADD_EXTERNAL_LEADING:
879cdf0e10cSrcweir         {
880cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_EXT_LEADING);
881cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
882cdf0e10cSrcweir         }
883cdf0e10cSrcweir         break;
884cdf0e10cSrcweir         case HANDLE_OLD_NUMBERING: // #111955#
885cdf0e10cSrcweir         {
886cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OLD_NUMBERING);
887cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
888cdf0e10cSrcweir         }
889cdf0e10cSrcweir         break;
890cdf0e10cSrcweir         case HANDLE_OUTLINELEVEL_YIELDS_NUMBERING: // #111955#
891cdf0e10cSrcweir         {
892cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OUTLINE_LEVEL_YIELDS_OUTLINE_RULE);
893cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
894cdf0e10cSrcweir         }
895cdf0e10cSrcweir         break;
896cdf0e10cSrcweir         case HANDLE_ALLOW_PRINTJOB_CANCEL:
897cdf0e10cSrcweir         {
898cdf0e10cSrcweir             sal_Bool bPrintCancelState = mpDocSh->Stamp_GetPrintCancelState();
899cdf0e10cSrcweir             rValue.setValue(&bPrintCancelState, ::getBooleanCppuType());
900cdf0e10cSrcweir         }
901cdf0e10cSrcweir         break;
902cdf0e10cSrcweir         case HANDLE_USE_FORMER_LINE_SPACING:
903cdf0e10cSrcweir         {
904cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::OLD_LINE_SPACING);
905cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
906cdf0e10cSrcweir         }
907cdf0e10cSrcweir         break;
908cdf0e10cSrcweir         case HANDLE_ADD_PARA_SPACING_TO_TABLE_CELLS:
909cdf0e10cSrcweir         {
910cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::ADD_PARA_SPACING_TO_TABLE_CELLS);
911cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
912cdf0e10cSrcweir         }
913cdf0e10cSrcweir         break;
914cdf0e10cSrcweir         case HANDLE_USE_FORMER_OBJECT_POSITIONING:
915cdf0e10cSrcweir         {
916cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_FORMER_OBJECT_POS);
917cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
918cdf0e10cSrcweir         }
919cdf0e10cSrcweir         break;
920cdf0e10cSrcweir         case HANDLE_USE_FORMER_TEXT_WRAPPING:
921cdf0e10cSrcweir         {
922cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_FORMER_TEXT_WRAPPING);
923cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
924cdf0e10cSrcweir         }
925cdf0e10cSrcweir         break;
926cdf0e10cSrcweir         case HANDLE_CHANGES_PASSWORD:
927cdf0e10cSrcweir 		{
928cdf0e10cSrcweir             rValue <<= mpDoc->GetRedlinePassword();
929cdf0e10cSrcweir 		}
930cdf0e10cSrcweir 		break;
931cdf0e10cSrcweir         case HANDLE_CONSIDER_WRAP_ON_OBJPOS:
932cdf0e10cSrcweir         {
933cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::CONSIDER_WRAP_ON_OBJECT_POSITION);
934cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
935cdf0e10cSrcweir         }
936cdf0e10cSrcweir         break;
937cdf0e10cSrcweir         case HANDLE_IGNORE_FIRST_LINE_INDENT_IN_NUMBERING:
938cdf0e10cSrcweir         {
939cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::IGNORE_FIRST_LINE_INDENT_IN_NUMBERING);
940cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
941cdf0e10cSrcweir         }
942cdf0e10cSrcweir         break;
943cdf0e10cSrcweir         case HANDLE_DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK:
944cdf0e10cSrcweir         {
945cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK);
946cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
947cdf0e10cSrcweir         }
948cdf0e10cSrcweir         break;
949cdf0e10cSrcweir         case HANDLE_DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT:
950cdf0e10cSrcweir         {
951cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_RESET_PARA_ATTRS_FOR_NUM_FONT);
952cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
953cdf0e10cSrcweir         }
954cdf0e10cSrcweir         break;
955cdf0e10cSrcweir         case HANDLE_TABLE_ROW_KEEP :
956cdf0e10cSrcweir         {
957cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TABLE_ROW_KEEP);
958cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
959cdf0e10cSrcweir         }
960cdf0e10cSrcweir         break;
961cdf0e10cSrcweir         case HANDLE_IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION:
962cdf0e10cSrcweir         {
963cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::IGNORE_TABS_AND_BLANKS_FOR_LINE_CALCULATION);
964cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
965cdf0e10cSrcweir         }
966cdf0e10cSrcweir         break;
967cdf0e10cSrcweir         case HANDLE_LOAD_READONLY:
968cdf0e10cSrcweir         {
969cdf0e10cSrcweir             rValue <<= mpDocSh->IsLoadReadonly();
970cdf0e10cSrcweir         }
971cdf0e10cSrcweir         break;
972cdf0e10cSrcweir         case HANDLE_DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE:
973cdf0e10cSrcweir         {
974cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::DO_NOT_CAPTURE_DRAW_OBJS_ON_PAGE);
975cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
976cdf0e10cSrcweir         }
977cdf0e10cSrcweir         break;
978cdf0e10cSrcweir         case HANDLE_CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAMES:
979cdf0e10cSrcweir         {
980cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::CLIP_AS_CHARACTER_ANCHORED_WRITER_FLY_FRAME);
981cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
982cdf0e10cSrcweir         }
983cdf0e10cSrcweir         break;
984cdf0e10cSrcweir         case HANDLE_UNIX_FORCE_ZERO_EXT_LEADING:
985cdf0e10cSrcweir         {
986cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::UNIX_FORCE_ZERO_EXT_LEADING);
987cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
988cdf0e10cSrcweir         }
989cdf0e10cSrcweir         break;
990cdf0e10cSrcweir         case HANDLE_USE_OLD_PRINTER_METRICS:
991cdf0e10cSrcweir         {
992cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::USE_OLD_PRINTER_METRICS);
993cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
994cdf0e10cSrcweir         }
995cdf0e10cSrcweir         break;
996cdf0e10cSrcweir         case HANDLE_TABS_RELATIVE_TO_INDENT:
997cdf0e10cSrcweir         {
998cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TABS_RELATIVE_TO_INDENT);
999cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
1000cdf0e10cSrcweir         }
1001cdf0e10cSrcweir         break;
1002cdf0e10cSrcweir         case HANDLE_PROTECT_FORM:
1003cdf0e10cSrcweir         {
1004cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::PROTECT_FORM);
1005cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
1006cdf0e10cSrcweir         }
1007cdf0e10cSrcweir         break;
1008cdf0e10cSrcweir         // --> OD 2008-06-05 #i89181#
1009cdf0e10cSrcweir         case HANDLE_TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST:
1010cdf0e10cSrcweir         {
1011cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get(IDocumentSettingAccess::TAB_AT_LEFT_INDENT_FOR_PARA_IN_LIST);
1012cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
1013cdf0e10cSrcweir         }
1014cdf0e10cSrcweir         break;
1015cdf0e10cSrcweir         // <--
1016cdf0e10cSrcweir         case HANDLE_MODIFYPASSWORDINFO:
1017cdf0e10cSrcweir         {
1018cdf0e10cSrcweir             rValue <<= mpDocSh->GetModifyPasswordInfo();
1019cdf0e10cSrcweir         }
1020cdf0e10cSrcweir         break;
1021cdf0e10cSrcweir         case HANDLE_MATH_BASELINE_ALIGNMENT:
1022cdf0e10cSrcweir         {
1023cdf0e10cSrcweir             sal_Bool bTmp = mpDoc->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT );
1024cdf0e10cSrcweir             rValue.setValue( &bTmp, ::getBooleanCppuType() );
1025cdf0e10cSrcweir         }
1026cdf0e10cSrcweir         break;
1027cdf0e10cSrcweir 
1028cdf0e10cSrcweir         default:
1029cdf0e10cSrcweir 			throw UnknownPropertyException();
1030cdf0e10cSrcweir 	}
1031cdf0e10cSrcweir }
1032cdf0e10cSrcweir 
_postGetValues()1033cdf0e10cSrcweir void SwXDocumentSettings::_postGetValues ()
1034cdf0e10cSrcweir         throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException )
1035cdf0e10cSrcweir {
1036cdf0e10cSrcweir 	mpDocSh = 0;
1037cdf0e10cSrcweir 	mpDoc = 0;
1038cdf0e10cSrcweir }
1039cdf0e10cSrcweir 
1040cdf0e10cSrcweir // XServiceInfo
getImplementationName()1041cdf0e10cSrcweir OUString SAL_CALL SwXDocumentSettings::getImplementationName(  )
1042cdf0e10cSrcweir 	throw(RuntimeException)
1043cdf0e10cSrcweir {
1044cdf0e10cSrcweir 	return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Writer.DocumentSettings"));
1045cdf0e10cSrcweir }
1046cdf0e10cSrcweir 
supportsService(const OUString & ServiceName)1047cdf0e10cSrcweir sal_Bool SAL_CALL SwXDocumentSettings::supportsService( const OUString& ServiceName )
1048cdf0e10cSrcweir 	throw(RuntimeException)
1049cdf0e10cSrcweir {
1050cdf0e10cSrcweir 	const Sequence< OUString > aSeq( getSupportedServiceNames() );
1051cdf0e10cSrcweir 	sal_Int32 nCount = aSeq.getLength();
1052cdf0e10cSrcweir 	const OUString* pServices = aSeq.getConstArray();
1053cdf0e10cSrcweir 	while( nCount-- )
1054cdf0e10cSrcweir 	{
1055cdf0e10cSrcweir 		if( *pServices++ == ServiceName )
1056cdf0e10cSrcweir 			return sal_True;
1057cdf0e10cSrcweir 	}
1058cdf0e10cSrcweir 	return sal_True;
1059cdf0e10cSrcweir }
1060cdf0e10cSrcweir 
getSupportedServiceNames()1061cdf0e10cSrcweir Sequence< OUString > SAL_CALL SwXDocumentSettings::getSupportedServiceNames(  )
1062cdf0e10cSrcweir 	throw(RuntimeException)
1063cdf0e10cSrcweir {
1064cdf0e10cSrcweir     Sequence< OUString > aSeq( 4 );
1065cdf0e10cSrcweir 	aSeq[0] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.Settings") );
1066cdf0e10cSrcweir     aSeq[1] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.DocumentSettings") );
1067cdf0e10cSrcweir     aSeq[2] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.PrintSettings") );
1068cdf0e10cSrcweir     aSeq[3] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.PrintPreviewSettings") );
1069cdf0e10cSrcweir     return aSeq;
1070cdf0e10cSrcweir }
1071cdf0e10cSrcweir 
1072cdf0e10cSrcweir 
1073