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