xref: /AOO41X/main/sw/source/ui/uno/unomod.cxx (revision ff0525f24f03981d56b7579b645949f111420994)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 
28 #include <swtypes.hxx>
29 #include <tools/debug.hxx>
30 #include <unomod.hxx>
31 #include <unomid.h>
32 #include <unoprnms.hxx>
33 #include <unomap.hxx>
34 #include <prtopt.hxx>
35 #include <tools/shl.hxx>
36 #include <swmodule.hxx>
37 #include <view.hxx>
38 #include <docsh.hxx>
39 #include <wrtsh.hxx>
40 #include <viewopt.hxx>
41 #include <vos/mutex.hxx>
42 #include <vcl/svapp.hxx>
43 #include <com/sun/star/text/NotePrintMode.hpp>
44 #include <doc.hxx>
45 #include <comphelper/TypeGeneration.hxx>
46 #include <com/sun/star/beans/PropertyAttribute.hpp>
47 #include <com/sun/star/view/DocumentZoomType.hpp>
48 #include <comphelper/ChainablePropertySetInfo.hxx>
49 #include <edtwin.hxx>
50 #include <rtl/ustrbuf.hxx>
51 #include <tools/urlobj.hxx>
52 
53 using namespace ::com::sun::star;
54 using namespace ::com::sun::star::uno;
55 using namespace ::com::sun::star::beans;
56 using namespace ::com::sun::star::lang;
57 using namespace ::comphelper;
58 using ::rtl::OUString;
59 using ::rtl::OUStringBuffer;
60 
61 enum SwViewSettingsPropertyHandles
62 {
63     HANDLE_VIEWSET_ANNOTATIONS,
64     HANDLE_VIEWSET_BREAKS,
65     HANDLE_VIEWSET_DRAWINGS,
66     HANDLE_VIEWSET_FIELD_COMMANDS,
67     HANDLE_VIEWSET_FOOTNOTE_BACKGROUND,
68     HANDLE_VIEWSET_GRAPHICS,
69     HANDLE_VIEWSET_HIDDEN_CHARACTERS,
70     HANDLE_VIEWSET_HIDDEN_PARAGRAPHS,
71     HANDLE_VIEWSET_HIDDEN_TEXT,
72     HANDLE_VIEWSET_HRULER,
73     HANDLE_VIEWSET_HSCROLL,
74     HANDLE_VIEWSET_INDEX_MARK_BACKGROUND,
75     HANDLE_VIEWSET_NONPRINTING_CHARACTERS,
76     HANDLE_VIEWSET_ONLINE_LAYOUT,
77     HANDLE_VIEWSET_PARA_BREAKS,
78     HANDLE_VIEWSET_PROTECTED_SPACES,
79     HANDLE_VIEWSET_SOFT_HYPHENS,
80     HANDLE_VIEWSET_SPACES,
81     HANDLE_VIEWSET_TABLE_BOUNDARIES,
82     HANDLE_VIEWSET_TABLES,
83     HANDLE_VIEWSET_TABSTOPS,
84     HANDLE_VIEWSET_TEXT_BOUNDARIES,
85     HANDLE_VIEWSET_TEXT_FIELD_BACKGROUND,
86     HANDLE_VIEWSET_VRULER,
87     HANDLE_VIEWSET_VSCROLL,
88     HANDLE_VIEWSET_SMOOTH_SCROLLING,
89     HANDLE_VIEWSET_SOLID_MARK_HANDLES,
90     HANDLE_VIEWSET_ZOOM_TYPE,
91     HANDLE_VIEWSET_ZOOM,
92     HANDLE_VIEWSET_SHOW_CONTENT_TIPS,
93     HANDLE_VIEWSET_HELP_URL,
94     HANDLE_VIEWSET_VRULER_RIGHT,
95     HANDLE_VIEWSET_SHOW_RULER,
96     HANDLE_VIEWSET_IS_RASTER_VISIBLE,
97     HANDLE_VIEWSET_IS_SNAP_TO_RASTER,
98     HANDLE_VIEWSET_RASTER_RESOLUTION_X,
99     HANDLE_VIEWSET_RASTER_RESOLUTION_Y,
100     HANDLE_VIEWSET_RASTER_SUBDIVISION_X,
101     HANDLE_VIEWSET_RASTER_SUBDIVISION_Y,
102     HANDLE_VIEWSET_HORI_RULER_METRIC,
103     HANDLE_VIEWSET_VERT_RULER_METRIC
104 };
105 enum SwPrintSettingsPropertyHandles
106 {
107     HANDLE_PRINTSET_ANNOTATION_MODE,
108     HANDLE_PRINTSET_BLACK_FONTS,
109     HANDLE_PRINTSET_CONTROLS,
110     HANDLE_PRINTSET_DRAWINGS,
111     HANDLE_PRINTSET_GRAPHICS,
112     HANDLE_PRINTSET_LEFT_PAGES,
113     HANDLE_PRINTSET_PAGE_BACKGROUND,
114     HANDLE_PRINTSET_PROSPECT,
115     HANDLE_PRINTSET_REVERSED,
116     HANDLE_PRINTSET_RIGHT_PAGES,
117     HANDLE_PRINTSET_FAX_NAME,
118     HANDLE_PRINTSET_PAPER_FROM_SETUP,
119     HANDLE_PRINTSET_TABLES,
120     HANDLE_PRINTSET_SINGLE_JOBS,
121     HANDLE_PRINTSET_EMPTY_PAGES,
122     HANDLE_PRINTSET_PROSPECT_RTL,
123     HANDLE_PRINTSET_PLACEHOLDER,
124     HANDLE_PRINTSET_HIDDEN_TEXT
125 };
126 
127 static ChainablePropertySetInfo * lcl_createViewSettingsInfo()
128 {
129     static PropertyInfo aViewSettingsMap_Impl[] =
130     {
131         { RTL_CONSTASCII_STRINGPARAM ( "HelpURL" ),             HANDLE_VIEWSET_HELP_URL             , CPPUTYPE_OUSTRING,    PROPERTY_NONE,  0},
132         { RTL_CONSTASCII_STRINGPARAM ( "HorizontalRulerMetric"),HANDLE_VIEWSET_HORI_RULER_METRIC   , CPPUTYPE_INT32, PROPERTY_NONE, 0},
133         { RTL_CONSTASCII_STRINGPARAM ( "IsRasterVisible"),      HANDLE_VIEWSET_IS_RASTER_VISIBLE,       CPPUTYPE_BOOLEAN,   PROPERTY_NONE, 0},
134         { RTL_CONSTASCII_STRINGPARAM ( "IsSnapToRaster"),       HANDLE_VIEWSET_IS_SNAP_TO_RASTER,       CPPUTYPE_BOOLEAN,   PROPERTY_NONE, 0},
135         { RTL_CONSTASCII_STRINGPARAM ( "IsVertRulerRightAligned"),HANDLE_VIEWSET_VRULER_RIGHT         , CPPUTYPE_BOOLEAN, PROPERTY_NONE, 0},
136         { RTL_CONSTASCII_STRINGPARAM ( "ShowContentTips" ),     HANDLE_VIEWSET_SHOW_CONTENT_TIPS      , CPPUTYPE_BOOLEAN, PROPERTY_NONE, 0},
137         { RTL_CONSTASCII_STRINGPARAM ( "RasterResolutionX"),    HANDLE_VIEWSET_RASTER_RESOLUTION_X,     CPPUTYPE_INT32,     PROPERTY_NONE, 0},
138         { RTL_CONSTASCII_STRINGPARAM ( "RasterResolutionY"),    HANDLE_VIEWSET_RASTER_RESOLUTION_Y,     CPPUTYPE_INT32,     PROPERTY_NONE, 0},
139         { RTL_CONSTASCII_STRINGPARAM ( "RasterSubdivisionX"),   HANDLE_VIEWSET_RASTER_SUBDIVISION_X,    CPPUTYPE_INT32,     PROPERTY_NONE, 0},
140         { RTL_CONSTASCII_STRINGPARAM ( "RasterSubdivisionY"),   HANDLE_VIEWSET_RASTER_SUBDIVISION_Y,    CPPUTYPE_INT32,     PROPERTY_NONE, 0},
141         { RTL_CONSTASCII_STRINGPARAM ( "ShowAnnotations" ),     HANDLE_VIEWSET_ANNOTATIONS          , CPPUTYPE_BOOLEAN, PROPERTY_NONE, 0},
142         { RTL_CONSTASCII_STRINGPARAM ( "ShowBreaks"),           HANDLE_VIEWSET_BREAKS               , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
143         { RTL_CONSTASCII_STRINGPARAM ( "ShowDrawings"),         HANDLE_VIEWSET_DRAWINGS             , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
144         { RTL_CONSTASCII_STRINGPARAM ( "ShowFieldCommands"),    HANDLE_VIEWSET_FIELD_COMMANDS       , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
145         { RTL_CONSTASCII_STRINGPARAM ( "ShowFootnoteBackground"),HANDLE_VIEWSET_FOOTNOTE_BACKGROUND , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
146         { RTL_CONSTASCII_STRINGPARAM ( "ShowGraphics"),         HANDLE_VIEWSET_GRAPHICS             , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
147         { RTL_CONSTASCII_STRINGPARAM ( "ShowHiddenCharacters"), HANDLE_VIEWSET_HIDDEN_CHARACTERS    , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
148         { RTL_CONSTASCII_STRINGPARAM ( "ShowHiddenParagraphs"), HANDLE_VIEWSET_HIDDEN_PARAGRAPHS    , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
149         { RTL_CONSTASCII_STRINGPARAM ( "ShowHiddenText"),       HANDLE_VIEWSET_HIDDEN_TEXT          , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
150         { RTL_CONSTASCII_STRINGPARAM ( "ShowHoriRuler"),        HANDLE_VIEWSET_HRULER               , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
151         { RTL_CONSTASCII_STRINGPARAM ( "ShowHoriScrollBar"),    HANDLE_VIEWSET_HSCROLL              , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
152         { RTL_CONSTASCII_STRINGPARAM ( "ShowIndexMarkBackground"),HANDLE_VIEWSET_INDEX_MARK_BACKGROUND, CPPUTYPE_BOOLEAN,PROPERTY_NONE, 0},
153         { RTL_CONSTASCII_STRINGPARAM ( "ShowNonprintingCharacters"),HANDLE_VIEWSET_NONPRINTING_CHARACTERS, CPPUTYPE_BOOLEAN,PROPERTY_NONE,  0},
154         { RTL_CONSTASCII_STRINGPARAM ( "ShowOnlineLayout"),     HANDLE_VIEWSET_ONLINE_LAYOUT        , CPPUTYPE_BOOLEAN, PropertyAttribute::MAYBEVOID,   0},
155         { RTL_CONSTASCII_STRINGPARAM ( "ShowParaBreaks"),       HANDLE_VIEWSET_PARA_BREAKS          , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
156         { RTL_CONSTASCII_STRINGPARAM ( "ShowProtectedSpaces"),  HANDLE_VIEWSET_PROTECTED_SPACES     , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
157         { RTL_CONSTASCII_STRINGPARAM ( "ShowRulers"),           HANDLE_VIEWSET_SHOW_RULER           , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
158         { RTL_CONSTASCII_STRINGPARAM ( "ShowSoftHyphens"),      HANDLE_VIEWSET_SOFT_HYPHENS         , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
159         { RTL_CONSTASCII_STRINGPARAM ( "ShowSpaces"),           HANDLE_VIEWSET_SPACES               , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
160         { RTL_CONSTASCII_STRINGPARAM ( "ShowTableBoundaries"),  HANDLE_VIEWSET_TABLE_BOUNDARIES     , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
161         { RTL_CONSTASCII_STRINGPARAM ( "ShowTables"),           HANDLE_VIEWSET_TABLES               , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
162         { RTL_CONSTASCII_STRINGPARAM ( "ShowTabstops"),         HANDLE_VIEWSET_TABSTOPS             , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
163         { RTL_CONSTASCII_STRINGPARAM ( "ShowTextBoundaries"),   HANDLE_VIEWSET_TEXT_BOUNDARIES      , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
164         { RTL_CONSTASCII_STRINGPARAM ( "ShowTextFieldBackground"),HANDLE_VIEWSET_TEXT_FIELD_BACKGROUND, CPPUTYPE_BOOLEAN,PROPERTY_NONE, 0},
165         { RTL_CONSTASCII_STRINGPARAM ( "ShowVertRuler"),        HANDLE_VIEWSET_VRULER               , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
166         { RTL_CONSTASCII_STRINGPARAM ( "ShowVertScrollBar"),    HANDLE_VIEWSET_VSCROLL              , CPPUTYPE_BOOLEAN, PROPERTY_NONE, 0},
167         { RTL_CONSTASCII_STRINGPARAM ( "SmoothScrolling"),      HANDLE_VIEWSET_SMOOTH_SCROLLING     , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
168         { RTL_CONSTASCII_STRINGPARAM ( "SolidMarkHandles"),     HANDLE_VIEWSET_SOLID_MARK_HANDLES   , CPPUTYPE_BOOLEAN, PROPERTY_NONE, 0},
169         { RTL_CONSTASCII_STRINGPARAM ( "VerticalRulerMetric"),  HANDLE_VIEWSET_VERT_RULER_METRIC   , CPPUTYPE_INT32, PROPERTY_NONE, 0},
170         { RTL_CONSTASCII_STRINGPARAM ( "ZoomType"),             HANDLE_VIEWSET_ZOOM_TYPE            , CPPUTYPE_INT16,   PROPERTY_NONE, 0},
171         { RTL_CONSTASCII_STRINGPARAM ( "ZoomValue"),            HANDLE_VIEWSET_ZOOM                 , CPPUTYPE_INT16,   PROPERTY_NONE, 0},
172         { 0, 0, 0, CPPUTYPE_UNKNOWN, 0, 0 }
173     };
174     return new ChainablePropertySetInfo ( aViewSettingsMap_Impl );
175 }
176 static ChainablePropertySetInfo * lcl_createPrintSettingsInfo()
177 {
178     static PropertyInfo aPrintSettingsMap_Impl[] =
179     {
180         { RTL_CONSTASCII_STRINGPARAM ( "PrintAnnotationMode" ), HANDLE_PRINTSET_ANNOTATION_MODE , CPPUTYPE_INT16,   PROPERTY_NONE,  0},
181         { RTL_CONSTASCII_STRINGPARAM ( "PrintBlackFonts" ),      HANDLE_PRINTSET_BLACK_FONTS        , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
182         { RTL_CONSTASCII_STRINGPARAM ( "PrintControls" ),        HANDLE_PRINTSET_CONTROLS           , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
183         { RTL_CONSTASCII_STRINGPARAM ( "PrintDrawings" ),        HANDLE_PRINTSET_DRAWINGS           , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
184         { RTL_CONSTASCII_STRINGPARAM ( "PrintGraphics" ),        HANDLE_PRINTSET_GRAPHICS           , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
185         { RTL_CONSTASCII_STRINGPARAM ( "PrintHiddenText"),       HANDLE_PRINTSET_HIDDEN_TEXT        , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
186         { RTL_CONSTASCII_STRINGPARAM ( "PrintLeftPages" ),       HANDLE_PRINTSET_LEFT_PAGES         , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
187         { RTL_CONSTASCII_STRINGPARAM ( "PrintPageBackground" ),  HANDLE_PRINTSET_PAGE_BACKGROUND    , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
188         { RTL_CONSTASCII_STRINGPARAM ( "PrintProspect" ),        HANDLE_PRINTSET_PROSPECT           , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
189         { RTL_CONSTASCII_STRINGPARAM ( "PrintProspectRTL" ),     HANDLE_PRINTSET_PROSPECT_RTL       , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
190         { RTL_CONSTASCII_STRINGPARAM ( "PrintReversed" ),        HANDLE_PRINTSET_REVERSED           , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
191         { RTL_CONSTASCII_STRINGPARAM ( "PrintRightPages" ),      HANDLE_PRINTSET_RIGHT_PAGES        , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
192         { RTL_CONSTASCII_STRINGPARAM ( "PrintFaxName" ),         HANDLE_PRINTSET_FAX_NAME           , CPPUTYPE_OUSTRING, PROPERTY_NONE, 0},
193         { RTL_CONSTASCII_STRINGPARAM ( "PrintPaperFromSetup" ),  HANDLE_PRINTSET_PAPER_FROM_SETUP   , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
194         { RTL_CONSTASCII_STRINGPARAM ( "PrintTables" ),          HANDLE_PRINTSET_TABLES             , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
195         { RTL_CONSTASCII_STRINGPARAM ( "PrintTextPlaceholder"),  HANDLE_PRINTSET_PLACEHOLDER        , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
196         { RTL_CONSTASCII_STRINGPARAM ( "PrintSingleJobs" ),      HANDLE_PRINTSET_SINGLE_JOBS        , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
197         { RTL_CONSTASCII_STRINGPARAM ( "PrintEmptyPages" ),      HANDLE_PRINTSET_EMPTY_PAGES        , CPPUTYPE_BOOLEAN, PROPERTY_NONE,  0},
198         { 0, 0, 0, CPPUTYPE_UNKNOWN, 0, 0 }
199     };
200     return new ChainablePropertySetInfo ( aPrintSettingsMap_Impl );
201 }
202 
203 /******************************************************************
204  * SwXModule
205  ******************************************************************/
206 /* -----------------30.03.99 15:10-------------------
207  *
208  * --------------------------------------------------*/
209 Reference< uno::XInterface > SAL_CALL SwXModule_createInstance(
210     const Reference< XMultiServiceFactory > & /*rSMgr*/) throw( Exception )
211 {
212     static Reference< uno::XInterface >  xModule = (cppu::OWeakObject*)new SwXModule();;
213     return xModule;
214 }
215 /* -----------------------------17.04.01 13:11--------------------------------
216 
217  ---------------------------------------------------------------------------*/
218 Sequence< OUString > SAL_CALL SwXModule_getSupportedServiceNames() throw()
219 {
220     OUString sService( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.GlobalSettings"));
221     const Sequence< OUString > aSeq( &sService, 1 );
222     return aSeq;
223 }
224 /* -----------------------------17.04.01 13:11--------------------------------
225 
226  ---------------------------------------------------------------------------*/
227 OUString SAL_CALL SwXModule_getImplementationName() throw()
228 {
229     return OUString( RTL_CONSTASCII_USTRINGPARAM("SwXModule" ) );
230 }
231 /*-- 17.12.98 12:19:01---------------------------------------------------
232 
233   -----------------------------------------------------------------------*/
234 SwXModule::SwXModule() :
235     pxViewSettings(0),
236     pxPrintSettings(0)
237 {
238 }
239 /*-- 17.12.98 12:19:02---------------------------------------------------
240 
241   -----------------------------------------------------------------------*/
242 SwXModule::~SwXModule()
243 {
244     delete pxViewSettings;
245     delete pxPrintSettings;
246 }
247 /*-- 17.12.98 12:19:03---------------------------------------------------
248 
249   -----------------------------------------------------------------------*/
250 Reference< XPropertySet >  SwXModule::getViewSettings(void) throw( uno::RuntimeException )
251 {
252     ::vos::OGuard aGuard(Application::GetSolarMutex());
253     if(!pxViewSettings)
254     {
255         ((SwXModule*)this)->pxViewSettings = new Reference< XPropertySet > ;
256         DBG_ERROR("Web oder Text?");
257         *pxViewSettings = static_cast < HelperBaseNoState * > ( new SwXViewSettings( sal_False, 0 ) );
258     }
259     return *pxViewSettings;
260 }
261 /*-- 17.12.98 12:19:03---------------------------------------------------
262 
263   -----------------------------------------------------------------------*/
264 Reference< XPropertySet >  SwXModule::getPrintSettings(void) throw( uno::RuntimeException )
265 {
266     ::vos::OGuard aGuard(Application::GetSolarMutex());
267     if(!pxPrintSettings)
268     {
269         ((SwXModule*)this)->pxPrintSettings = new Reference< XPropertySet > ;
270         DBG_ERROR("Web oder Text?");
271         *pxPrintSettings = static_cast < HelperBaseNoState * > ( new SwXPrintSettings ( PRINT_SETTINGS_MODULE ) );
272     }
273     return *pxPrintSettings;
274 }
275 /* -----------------------------06.04.00 10:59--------------------------------
276 
277  ---------------------------------------------------------------------------*/
278 OUString SwXModule::getImplementationName(void) throw( RuntimeException )
279 {
280     return SwXModule_getImplementationName();
281 }
282 /* -----------------------------06.04.00 10:59--------------------------------
283 
284  ---------------------------------------------------------------------------*/
285 sal_Bool SwXModule::supportsService(const OUString& rServiceName) throw( RuntimeException )
286 {
287     const Sequence< OUString > aNames = SwXModule_getSupportedServiceNames();
288     for(sal_Int32 nService = 0; nService < aNames.getLength(); nService++)
289     {
290         if(aNames.getConstArray()[nService] == rServiceName)
291             return sal_True;
292     }
293     return sal_False;
294 }
295 /* -----------------------------06.04.00 10:59--------------------------------
296 
297  ---------------------------------------------------------------------------*/
298 Sequence< OUString > SwXModule::getSupportedServiceNames(void) throw( RuntimeException )
299 {
300     return SwXModule_getSupportedServiceNames();
301 }
302 
303 /******************************************************************
304  * SwXPrintSettings
305  ******************************************************************/
306 /*-- 17.12.98 12:54:04---------------------------------------------------
307 
308   -----------------------------------------------------------------------*/
309 SwXPrintSettings::SwXPrintSettings(SwXPrintSettingsType eType, SwDoc* pDoc)
310 : ChainableHelperNoState ( lcl_createPrintSettingsInfo (), &Application::GetSolarMutex() )
311 , meType(eType)
312 , mpPrtOpt ( NULL )
313 , mpDoc ( pDoc )
314 {
315 }
316 /*-- 17.12.98 12:54:05---------------------------------------------------
317 
318   -----------------------------------------------------------------------*/
319 SwXPrintSettings::~SwXPrintSettings()
320     throw()
321 {
322 }
323 
324 void SwXPrintSettings::_preSetValues ()
325     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
326 {
327     switch (meType)
328     {
329         case PRINT_SETTINGS_MODULE:
330             mpPrtOpt = SW_MOD()->GetPrtOptions( sal_False );
331         break;
332         case PRINT_SETTINGS_WEB:
333             mpPrtOpt = SW_MOD()->GetPrtOptions( sal_True );
334         break;
335         case PRINT_SETTINGS_DOCUMENT:
336         {
337             if (!mpDoc)
338                 throw IllegalArgumentException ();
339             mpPrtOpt = const_cast< SwPrintData * >(&mpDoc->getPrintData());
340         }
341         break;
342     }
343 }
344 
345 void SwXPrintSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue )
346     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
347 {
348     sal_Bool bVal;
349     if ( rInfo.mnHandle != HANDLE_PRINTSET_ANNOTATION_MODE &&
350          rInfo.mnHandle != HANDLE_PRINTSET_FAX_NAME )
351         bVal = *(sal_Bool*)rValue.getValue();
352 
353     switch( rInfo.mnHandle )
354     {
355         case HANDLE_PRINTSET_LEFT_PAGES:
356         {
357             bVal = *(sal_Bool*)rValue.getValue();
358             mpPrtOpt->SetPrintLeftPage(bVal);
359         }
360         break;
361         case HANDLE_PRINTSET_RIGHT_PAGES:
362         {
363             bVal = *(sal_Bool*)rValue.getValue();
364             mpPrtOpt->SetPrintRightPage(bVal);
365         }
366         break;
367         case HANDLE_PRINTSET_REVERSED:
368         {
369             bVal = *(sal_Bool*)rValue.getValue();
370             mpPrtOpt->SetPrintReverse(bVal);
371         }
372         break;
373         case HANDLE_PRINTSET_PROSPECT:
374         {
375             bVal = *(sal_Bool*)rValue.getValue();
376             mpPrtOpt->SetPrintProspect(bVal);
377         }
378         break;
379         case HANDLE_PRINTSET_GRAPHICS:
380         {
381             bVal = *(sal_Bool*)rValue.getValue();
382             mpPrtOpt->SetPrintGraphic(bVal);
383         }
384         break;
385         case HANDLE_PRINTSET_TABLES:
386         {
387             bVal = *(sal_Bool*)rValue.getValue();
388             mpPrtOpt->SetPrintTable(bVal);
389         }
390         break;
391         case HANDLE_PRINTSET_DRAWINGS:
392         {
393             bVal = *(sal_Bool*)rValue.getValue();
394             mpPrtOpt->SetPrintDraw(bVal);
395         }
396         break;
397         case HANDLE_PRINTSET_CONTROLS:
398         {
399             bVal = *(sal_Bool*)rValue.getValue();
400             mpPrtOpt->SetPrintControl(bVal);
401         }
402         break;
403         case HANDLE_PRINTSET_PAGE_BACKGROUND:
404         {
405             bVal = *(sal_Bool*)rValue.getValue();
406             mpPrtOpt->SetPrintPageBackground(bVal);
407         }
408         break;
409         case HANDLE_PRINTSET_BLACK_FONTS:
410         {
411             bVal = *(sal_Bool*)rValue.getValue();
412             mpPrtOpt->SetPrintBlackFont(bVal);
413         }
414         break;
415         case HANDLE_PRINTSET_SINGLE_JOBS:
416         {
417             bVal = *(sal_Bool*)rValue.getValue();
418             mpPrtOpt->SetPrintSingleJobs(bVal);
419         }
420         break;
421         case HANDLE_PRINTSET_PAPER_FROM_SETUP:
422         {
423             bVal = *(sal_Bool*)rValue.getValue();
424             mpPrtOpt->SetPaperFromSetup(bVal);
425         }
426         break;
427         case HANDLE_PRINTSET_ANNOTATION_MODE:
428         {
429             sal_Int16 nVal = 0;
430             rValue >>= nVal;
431             if(nVal <= text::NotePrintMode_PAGE_END)
432                 mpPrtOpt->SetPrintPostIts(nVal);
433             else
434                 throw lang::IllegalArgumentException();
435         }
436         break;
437         case HANDLE_PRINTSET_EMPTY_PAGES:
438         {
439             bVal = *(sal_Bool*)rValue.getValue();
440             mpPrtOpt->SetPrintEmptyPages(bVal);
441         }
442         break;
443         case HANDLE_PRINTSET_FAX_NAME:
444         {
445             OUString sString;
446             if ( rValue >>= sString)
447                 mpPrtOpt->SetFaxName(sString);
448             else
449                 throw lang::IllegalArgumentException();
450         }
451         break;
452         case HANDLE_PRINTSET_PROSPECT_RTL:
453         {
454             bVal = *(sal_Bool*)rValue.getValue();
455             mpPrtOpt->SetPrintProspect_RTL(bVal);
456         }
457         break;
458         case HANDLE_PRINTSET_PLACEHOLDER:
459         {
460             bVal = *(sal_Bool*)rValue.getValue();
461             mpPrtOpt->SetPrintTextPlaceholder(bVal);
462         }
463         break;
464         case HANDLE_PRINTSET_HIDDEN_TEXT:
465         {
466             bVal = *(sal_Bool*)rValue.getValue();
467             mpPrtOpt->SetPrintHiddenText(bVal);
468         }
469         break;
470         default:
471             throw UnknownPropertyException();
472     }
473 }
474 void SwXPrintSettings::_postSetValues ()
475     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
476 {
477     mpPrtOpt = NULL;
478 }
479 
480 void SwXPrintSettings::_preGetValues ()
481     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
482 {
483     switch (meType)
484     {
485         case PRINT_SETTINGS_MODULE:
486             mpPrtOpt = SW_MOD()->GetPrtOptions( sal_False );
487         break;
488         case PRINT_SETTINGS_WEB:
489             mpPrtOpt = SW_MOD()->GetPrtOptions( sal_True );
490         break;
491         case PRINT_SETTINGS_DOCUMENT:
492         {
493             if (!mpDoc)
494                 throw IllegalArgumentException ();
495             mpPrtOpt = const_cast< SwPrintData * >(&mpDoc->getPrintData());
496         }
497         break;
498     }
499 }
500 void SwXPrintSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, uno::Any & rValue )
501     throw(UnknownPropertyException, WrappedTargetException )
502 {
503     switch( rInfo.mnHandle )
504     {
505         case HANDLE_PRINTSET_LEFT_PAGES:
506             rValue <<= mpPrtOpt->IsPrintLeftPage();
507         break;
508         case HANDLE_PRINTSET_RIGHT_PAGES:
509             rValue <<= mpPrtOpt->IsPrintRightPage();
510         break;
511         case HANDLE_PRINTSET_REVERSED:
512             rValue <<= mpPrtOpt->IsPrintReverse();
513         break;
514         case HANDLE_PRINTSET_PROSPECT:
515             rValue <<= mpPrtOpt->IsPrintProspect();
516         break;
517         case HANDLE_PRINTSET_GRAPHICS:
518             rValue <<= mpPrtOpt->IsPrintGraphic();
519         break;
520         case HANDLE_PRINTSET_TABLES:
521             rValue <<= mpPrtOpt->IsPrintTable();
522         break;
523         case HANDLE_PRINTSET_DRAWINGS:
524             rValue <<= mpPrtOpt->IsPrintDraw();
525         break;
526         case HANDLE_PRINTSET_CONTROLS:
527             rValue <<= mpPrtOpt->IsPrintControl();
528         break;
529         case HANDLE_PRINTSET_PAGE_BACKGROUND:
530             rValue <<= mpPrtOpt->IsPrintPageBackground();
531         break;
532         case HANDLE_PRINTSET_BLACK_FONTS:
533             rValue <<= mpPrtOpt->IsPrintBlackFont();
534         break;
535         case HANDLE_PRINTSET_SINGLE_JOBS:
536             rValue <<= mpPrtOpt->IsPrintSingleJobs();
537         break;
538         case HANDLE_PRINTSET_EMPTY_PAGES:
539             rValue <<= mpPrtOpt->IsPrintEmptyPages();
540         break;
541         case HANDLE_PRINTSET_PAPER_FROM_SETUP:
542             rValue <<= mpPrtOpt->IsPaperFromSetup();
543         break;
544         case HANDLE_PRINTSET_ANNOTATION_MODE:
545         {
546             rValue <<= static_cast < sal_Int16 > ( mpPrtOpt->GetPrintPostIts() );
547         }
548         break;
549         case HANDLE_PRINTSET_FAX_NAME :
550         {
551             rValue <<= mpPrtOpt->GetFaxName();
552         }
553         break;
554         case HANDLE_PRINTSET_PROSPECT_RTL:
555         {
556             rValue <<= mpPrtOpt->IsPrintProspectRTL();
557         }
558         break;
559         case HANDLE_PRINTSET_PLACEHOLDER:
560         {
561             rValue <<= mpPrtOpt->IsPrintTextPlaceholder();
562         }
563         break;
564         case HANDLE_PRINTSET_HIDDEN_TEXT:
565         {
566             rValue <<= mpPrtOpt->IsPrintHiddenText();
567         }
568         break;
569         default:
570             throw UnknownPropertyException();
571     }
572 }
573 void SwXPrintSettings::_postGetValues ()
574     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
575 {
576     mpPrtOpt = NULL;
577 }
578 /* -----------------------------06.04.00 11:02--------------------------------
579 
580  ---------------------------------------------------------------------------*/
581 OUString SwXPrintSettings::getImplementationName(void) throw( RuntimeException )
582 {
583     return C2U("SwXPrintSettings");
584 }
585 /* -----------------------------06.04.00 11:02--------------------------------
586 
587  ---------------------------------------------------------------------------*/
588 sal_Bool SwXPrintSettings::supportsService(const OUString& rServiceName) throw( RuntimeException )
589 {
590     return C2U("com.sun.star.text.PrintSettings") == rServiceName;
591 }
592 /* -----------------------------06.04.00 11:02--------------------------------
593 
594  ---------------------------------------------------------------------------*/
595 Sequence< OUString > SwXPrintSettings::getSupportedServiceNames(void) throw( RuntimeException )
596 {
597     Sequence< OUString > aRet(1);
598     OUString* pArray = aRet.getArray();
599     pArray[0] = C2U("com.sun.star.text.PrintSettings");
600     return aRet;
601 }
602 
603 
604 /******************************************************************
605  *
606  ******************************************************************/
607 /*-- 18.12.98 11:01:10---------------------------------------------------
608 
609   -----------------------------------------------------------------------*/
610 SwXViewSettings::SwXViewSettings(sal_Bool bWebView, SwView* pVw)
611 : ChainableHelperNoState( lcl_createViewSettingsInfo (), &Application::GetSolarMutex() )
612 , pView(pVw)
613 , mpViewOption ( NULL )
614 , mpConstViewOption ( NULL )
615 , bObjectValid(sal_True)
616 , bWeb(bWebView)
617 , eHRulerUnit( FUNIT_CM )
618 , mbApplyHRulerMetric( sal_False )
619 , eVRulerUnit( FUNIT_CM )
620 , mbApplyVRulerMetric( sal_False )
621 {
622     // This property only exists if we have a view (ie, not at the module )
623     if ( !pView )
624         mpInfo->remove ( OUString ( RTL_CONSTASCII_USTRINGPARAM ( "HelpURL" ) ) );
625 
626 }
627 /*-- 18.12.98 11:01:10---------------------------------------------------
628 
629   -----------------------------------------------------------------------*/
630 SwXViewSettings::~SwXViewSettings()
631     throw()
632 {
633 
634 }
635 void SwXViewSettings::_preSetValues ()
636     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
637 {
638     const SwViewOption* pVOpt = 0;
639     if(pView)
640     {
641         if(!IsValid())
642             return;
643         pVOpt = pView->GetWrtShell().GetViewOptions();
644     }
645     else
646         pVOpt = SW_MOD()->GetViewOption(bWeb);
647 
648     mpViewOption = new SwViewOption (*pVOpt);
649     mbApplyZoom = sal_False;
650     if(pView)
651         mpViewOption->SetStarOneSetting(sal_True);
652 }
653 void SwXViewSettings::_setSingleValue( const comphelper::PropertyInfo & rInfo, const uno::Any &rValue )
654     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
655 {
656     sal_Bool bVal = HANDLE_VIEWSET_ZOOM != rInfo.mnHandle ?
657         *(sal_Bool*)rValue.getValue() : sal_False;
658     // the API flag should not be set to the application's view settings
659     switch( rInfo.mnHandle )
660     {
661         case  HANDLE_VIEWSET_SHOW_RULER            :   mpViewOption->SetViewAnyRuler(bVal); break;
662         case  HANDLE_VIEWSET_HRULER                :   mpViewOption->SetViewHRuler(bVal);   break;
663         case  HANDLE_VIEWSET_VRULER                :   mpViewOption->SetViewVRuler(bVal);break;
664         case  HANDLE_VIEWSET_VRULER_RIGHT          :   mpViewOption->SetVRulerRight(bVal);break;
665         case  HANDLE_VIEWSET_HSCROLL               :   mpViewOption->SetViewHScrollBar(bVal);break;
666         case  HANDLE_VIEWSET_VSCROLL               :   mpViewOption->SetViewVScrollBar(bVal);break;
667         case  HANDLE_VIEWSET_GRAPHICS              :   mpViewOption->SetGraphic(bVal);break;
668         case  HANDLE_VIEWSET_TABLES                :   mpViewOption->SetTable(bVal);    break;
669         case  HANDLE_VIEWSET_DRAWINGS              :   mpViewOption->SetDraw(bVal); break;
670         case  HANDLE_VIEWSET_FIELD_COMMANDS        :   mpViewOption->SetFldName(bVal);  break;
671         case  HANDLE_VIEWSET_ANNOTATIONS           :   mpViewOption->SetPostIts(bVal);  break;
672         case  HANDLE_VIEWSET_INDEX_MARK_BACKGROUND :   mpViewOption->SetAppearanceFlag(VIEWOPT_FIELD_SHADINGS, bVal, sal_True);  break;
673         case  HANDLE_VIEWSET_NONPRINTING_CHARACTERS:   mpViewOption->SetViewMetaChars( bVal ); break;
674         case  HANDLE_VIEWSET_FOOTNOTE_BACKGROUND   :   mpViewOption->SetAppearanceFlag(VIEWOPT_FIELD_SHADINGS, bVal, sal_True); break;
675         case  HANDLE_VIEWSET_TEXT_FIELD_BACKGROUND :   mpViewOption->SetAppearanceFlag(VIEWOPT_FIELD_SHADINGS, bVal, sal_True);    break;
676         case  HANDLE_VIEWSET_PARA_BREAKS           :   mpViewOption->SetParagraph(bVal);    break;
677         case  HANDLE_VIEWSET_SOFT_HYPHENS          :   mpViewOption->SetSoftHyph(bVal); break;
678         case  HANDLE_VIEWSET_SPACES                :   mpViewOption->SetBlank(bVal);    break;
679         case  HANDLE_VIEWSET_PROTECTED_SPACES      :   mpViewOption->SetHardBlank(bVal);    break;
680         case  HANDLE_VIEWSET_TABSTOPS              :   mpViewOption->SetTab(bVal);  break;
681         case  HANDLE_VIEWSET_BREAKS                :   mpViewOption->SetLineBreak(bVal); break;
682         case  HANDLE_VIEWSET_HIDDEN_TEXT           :   mpViewOption->SetShowHiddenField(bVal);  break;
683         case  HANDLE_VIEWSET_HIDDEN_CHARACTERS     :   mpViewOption->SetShowHiddenChar(bVal); break;
684         case  HANDLE_VIEWSET_HIDDEN_PARAGRAPHS     :   mpViewOption->SetShowHiddenPara(bVal);   break;
685         case  HANDLE_VIEWSET_TABLE_BOUNDARIES      :   mpViewOption->SetAppearanceFlag(VIEWOPT_TABLE_BOUNDARIES, bVal, sal_True);    break;
686         case  HANDLE_VIEWSET_TEXT_BOUNDARIES       :   mpViewOption->SetDocBoundaries(bVal);    break;
687         case  HANDLE_VIEWSET_SMOOTH_SCROLLING      :   mpViewOption->SetSmoothScroll(bVal); break;
688         case  HANDLE_VIEWSET_SOLID_MARK_HANDLES    :   mpViewOption->SetSolidMarkHdl(bVal); break;
689         case  HANDLE_VIEWSET_SHOW_CONTENT_TIPS     :   mpViewOption->SetShowContentTips(bVal); break;
690         case  HANDLE_VIEWSET_IS_RASTER_VISIBLE     : mpViewOption->SetGridVisible(bVal); break;
691         case  HANDLE_VIEWSET_IS_SNAP_TO_RASTER     : mpViewOption->SetSnap(bVal); break;
692         case  HANDLE_VIEWSET_RASTER_RESOLUTION_X   :
693         {
694             sal_Int32 nTmp = 0;
695             if(!(rValue >>= nTmp)  ||  nTmp < 10)
696                 throw IllegalArgumentException();
697             Size aSize( mpViewOption->GetSnapSize() );
698             aSize.Width() = MM100_TO_TWIP( nTmp );
699             mpViewOption->SetSnapSize( aSize );
700         }
701         break;
702         case  HANDLE_VIEWSET_RASTER_RESOLUTION_Y   :
703         {
704             sal_Int32 nTmp = 0;
705             if(!(rValue >>= nTmp)  ||  nTmp < 10)
706                 throw IllegalArgumentException();
707             Size aSize( mpViewOption->GetSnapSize() );
708             aSize.Height() = MM100_TO_TWIP( nTmp );
709             mpViewOption->SetSnapSize( aSize );
710         }
711         break;
712         case  HANDLE_VIEWSET_RASTER_SUBDIVISION_X  :
713         {
714             sal_Int32 nTmp = 0;
715             if(!(rValue >>= nTmp)  ||  !(0 <= nTmp  &&  nTmp < 100))
716                 throw IllegalArgumentException();
717             mpViewOption->SetDivisionX( (short) nTmp );
718         }
719         break;
720         case  HANDLE_VIEWSET_RASTER_SUBDIVISION_Y  :
721         {
722             sal_Int32 nTmp = 0;
723             if(!(rValue >>= nTmp)  ||  !(0 <= nTmp  &&  nTmp < 100))
724                 throw IllegalArgumentException();
725             mpViewOption->SetDivisionY( (short) nTmp );
726         }
727         break;
728         case  HANDLE_VIEWSET_ZOOM                   :
729         {
730             sal_Int16 nZoom = 0;
731             if(!(rValue >>= nZoom) || nZoom > 1000 || nZoom < 5)
732                 throw lang::IllegalArgumentException();
733             mpViewOption->SetZoom((sal_uInt16)nZoom);
734             mbApplyZoom = sal_True;
735         }
736         break;
737         case HANDLE_VIEWSET_ZOOM_TYPE:
738         {
739             sal_Int16 nZoom = 0;
740             if(!(rValue >>= nZoom))
741                 throw IllegalArgumentException();
742             SvxZoomType eZoom = (SvxZoomType)USHRT_MAX;
743             switch (nZoom)
744             {
745                 case view::DocumentZoomType::OPTIMAL:
746                     eZoom = SVX_ZOOM_OPTIMAL;
747                 break;
748                 case view::DocumentZoomType::PAGE_WIDTH:
749                     eZoom = SVX_ZOOM_PAGEWIDTH;
750                 break;
751                 case view::DocumentZoomType::ENTIRE_PAGE:
752                     eZoom = SVX_ZOOM_WHOLEPAGE;
753                 break;
754                 case view::DocumentZoomType::BY_VALUE:
755                     eZoom = SVX_ZOOM_PERCENT;
756                 break;
757                 case view::DocumentZoomType::PAGE_WIDTH_EXACT:
758                     eZoom = SVX_ZOOM_PAGEWIDTH_NOBORDER;
759                 break;
760                 default:
761                     throw IllegalArgumentException(
762                         ::rtl::OUString::createFromAscii(
763                             "SwXViewSettings: invalid zoom type"), 0, 0);
764                 break;
765             }
766             if(eZoom < USHRT_MAX)
767             {
768                 mpViewOption->SetZoomType( eZoom );
769                 mbApplyZoom = sal_True;
770             }
771         }
772         break;
773         case HANDLE_VIEWSET_ONLINE_LAYOUT :
774         {
775             if( pView && !bVal != !pView->GetWrtShell().GetViewOptions()->getBrowseMode() )
776             {
777                 SwViewOption aOpt( *pView->GetWrtShell().GetViewOptions() );
778                 aOpt.setBrowseMode( bVal );
779                 pView->GetWrtShell().ApplyViewOptions( aOpt );
780                 pView->RecheckBrowseMode();
781 
782                 // must be set in mpViewOption as this will overwrite settings in _post!
783                 mpViewOption->setBrowseMode( bVal );
784 
785                 // disable multiple layout
786                 pView->GetDocShell()->ToggleBrowserMode(bVal, pView );
787             }
788         }
789         break;
790         case HANDLE_VIEWSET_HELP_URL :
791         {
792             if ( pView )
793             {
794                 OUString sHelpURL;
795                 if ( ! ( rValue >>= sHelpURL ) )
796                     throw IllegalArgumentException();
797 
798                 INetURLObject aHID( sHelpURL );
799                 if ( aHID.GetProtocol() == INET_PROT_HID )
800                     pView->GetEditWin().SetHelpId( rtl::OUStringToOString( aHID.GetURLPath(), RTL_TEXTENCODING_UTF8 ) );
801                 else
802                     throw IllegalArgumentException ();
803             }
804             else
805                 throw UnknownPropertyException();
806         }
807         break;
808         case HANDLE_VIEWSET_HORI_RULER_METRIC:
809         case HANDLE_VIEWSET_VERT_RULER_METRIC:
810         {
811             sal_Int32 nUnit = -1;
812             if( rValue >>= nUnit )
813             switch( nUnit )
814             {
815                 case FUNIT_MM:
816                 case FUNIT_CM:
817                 case FUNIT_POINT:
818                 case FUNIT_PICA:
819                 case FUNIT_INCH:
820                 if( rInfo.mnHandle == HANDLE_VIEWSET_HORI_RULER_METRIC )
821                 {
822                     eHRulerUnit = nUnit;
823                     mbApplyHRulerMetric = sal_True;
824                 }
825                 else
826                 {
827                     eVRulerUnit = nUnit;
828                     mbApplyVRulerMetric = sal_True;
829                 }
830                 break;
831                 default:
832                     throw IllegalArgumentException();
833             }
834         }
835         break;
836         default:
837             throw UnknownPropertyException();
838     }
839 }
840 
841 void SwXViewSettings::_postSetValues ()
842     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
843 {
844     if( pView )
845     {
846         if(mbApplyZoom )
847             pView->SetZoom( (SvxZoomType)mpViewOption->GetZoomType(),
848                             mpViewOption->GetZoom(), sal_True );
849         if(mbApplyHRulerMetric)
850             pView->ChangeTabMetric((FieldUnit)eHRulerUnit);
851         if(mbApplyVRulerMetric)
852             pView->ChangeVLinealMetric((FieldUnit)eVRulerUnit);
853 
854     }
855     else
856     {
857         if(mbApplyHRulerMetric)
858             SW_MOD()->ApplyRulerMetric( (FieldUnit)eHRulerUnit, sal_True, bWeb );
859         if(mbApplyVRulerMetric)
860             SW_MOD()->ApplyRulerMetric( (FieldUnit)eVRulerUnit, sal_False, bWeb );
861     }
862 
863 
864     SW_MOD()->ApplyUsrPref( *mpViewOption, pView, pView ? VIEWOPT_DEST_VIEW_ONLY
865                                                 : bWeb ? VIEWOPT_DEST_WEB
866                                                        : VIEWOPT_DEST_TEXT );
867 
868 
869     delete mpViewOption;
870     mpViewOption = NULL;
871 }
872 
873 void SwXViewSettings::_preGetValues ()
874     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
875 {
876     if(pView)
877     {
878         if(!IsValid())
879             return;
880         mpConstViewOption = pView->GetWrtShell().GetViewOptions();
881     }
882     else
883         mpConstViewOption = SW_MOD()->GetViewOption(bWeb);
884 }
885 void SwXViewSettings::_getSingleValue( const comphelper::PropertyInfo & rInfo, uno::Any & rValue )
886     throw(UnknownPropertyException, WrappedTargetException )
887 {
888     sal_Bool bBool = sal_True;
889     sal_Bool bBoolVal;
890     switch( rInfo.mnHandle )
891     {
892         case  HANDLE_VIEWSET_SHOW_RULER:                bBoolVal = mpConstViewOption->IsViewAnyRuler();   break;
893         case  HANDLE_VIEWSET_HRULER :                   bBoolVal = mpConstViewOption->IsViewHRuler(sal_True);   break;
894         case  HANDLE_VIEWSET_VRULER :                   bBoolVal = mpConstViewOption->IsViewVRuler(sal_True);break;
895         case  HANDLE_VIEWSET_VRULER_RIGHT          :   bBoolVal = mpConstViewOption->IsVRulerRight();break;
896         case  HANDLE_VIEWSET_HSCROLL:                   bBoolVal = mpConstViewOption->IsViewHScrollBar();break;
897         case  HANDLE_VIEWSET_VSCROLL:                   bBoolVal = mpConstViewOption->IsViewVScrollBar();break;
898         case  HANDLE_VIEWSET_GRAPHICS              :    bBoolVal = mpConstViewOption->IsGraphic();break;
899         case  HANDLE_VIEWSET_TABLES                :   bBoolVal = mpConstViewOption->IsTable(); break;
900         case  HANDLE_VIEWSET_DRAWINGS              :   bBoolVal = mpConstViewOption->IsDraw();  break;
901         case  HANDLE_VIEWSET_FIELD_COMMANDS        :   bBoolVal = mpConstViewOption->IsFldName();   break;
902         case  HANDLE_VIEWSET_ANNOTATIONS           :   bBoolVal = mpConstViewOption->IsPostIts();   break;
903         case  HANDLE_VIEWSET_INDEX_MARK_BACKGROUND :   bBoolVal = SwViewOption::IsFieldShadings();   break;
904         case  HANDLE_VIEWSET_NONPRINTING_CHARACTERS:   bBoolVal = mpConstViewOption->IsViewMetaChars(); break;
905         case  HANDLE_VIEWSET_FOOTNOTE_BACKGROUND   :   bBoolVal = SwViewOption::IsFieldShadings();  break;
906         case  HANDLE_VIEWSET_TEXT_FIELD_BACKGROUND :   bBoolVal = SwViewOption::IsFieldShadings(); break;
907         case  HANDLE_VIEWSET_PARA_BREAKS           :   bBoolVal = mpConstViewOption->IsParagraph(sal_True); break;
908         case  HANDLE_VIEWSET_SOFT_HYPHENS          :   bBoolVal = mpConstViewOption->IsSoftHyph();  break;
909         case  HANDLE_VIEWSET_SPACES                :   bBoolVal = mpConstViewOption->IsBlank(sal_True); break;
910         case  HANDLE_VIEWSET_PROTECTED_SPACES      :   bBoolVal = mpConstViewOption->IsHardBlank(); break;
911         case  HANDLE_VIEWSET_TABSTOPS              :   bBoolVal = mpConstViewOption->IsTab(sal_True);   break;
912         case  HANDLE_VIEWSET_BREAKS                :   bBoolVal = mpConstViewOption->IsLineBreak(sal_True); break;
913         case  HANDLE_VIEWSET_HIDDEN_TEXT           :   bBoolVal = mpConstViewOption->IsShowHiddenField();   break;
914         case  HANDLE_VIEWSET_HIDDEN_CHARACTERS     :   bBoolVal = mpConstViewOption->IsShowHiddenChar(sal_True); break;
915         case  HANDLE_VIEWSET_HIDDEN_PARAGRAPHS     :   bBoolVal = mpConstViewOption->IsShowHiddenPara();    break;
916         case  HANDLE_VIEWSET_TABLE_BOUNDARIES      :   bBoolVal = SwViewOption::IsTableBoundaries(); break;
917         case  HANDLE_VIEWSET_TEXT_BOUNDARIES       :   bBoolVal = SwViewOption::IsDocBoundaries(); break;
918         case  HANDLE_VIEWSET_SMOOTH_SCROLLING      :   bBoolVal = mpConstViewOption->IsSmoothScroll();  break;
919         case  HANDLE_VIEWSET_SOLID_MARK_HANDLES    :   bBoolVal = mpConstViewOption->IsSolidMarkHdl();  break;
920         case  HANDLE_VIEWSET_SHOW_CONTENT_TIPS     :   bBoolVal = mpConstViewOption->IsShowContentTips(); break;
921         case  HANDLE_VIEWSET_IS_RASTER_VISIBLE     : bBoolVal = mpConstViewOption->IsGridVisible(); break;
922         case  HANDLE_VIEWSET_IS_SNAP_TO_RASTER     : bBoolVal = mpConstViewOption->IsSnap(); break;
923         case  HANDLE_VIEWSET_RASTER_RESOLUTION_X   :
924             bBool = sal_False;
925             rValue <<= (sal_Int32) TWIP_TO_MM100(mpConstViewOption->GetSnapSize().Width());
926         break;
927         case  HANDLE_VIEWSET_RASTER_RESOLUTION_Y   :
928             bBool = sal_False;
929             rValue <<= (sal_Int32) TWIP_TO_MM100(mpConstViewOption->GetSnapSize().Height());
930         break;
931         case  HANDLE_VIEWSET_RASTER_SUBDIVISION_X  :
932             bBool = sal_False;
933             rValue <<= (sal_Int32) mpConstViewOption->GetDivisionX();
934         break;
935         case  HANDLE_VIEWSET_RASTER_SUBDIVISION_Y  :
936             bBool = sal_False;
937             rValue <<= (sal_Int32) mpConstViewOption->GetDivisionY();
938         break;
939         case  HANDLE_VIEWSET_ZOOM                   :
940                 bBool = sal_False;
941                 rValue <<= (sal_Int16)mpConstViewOption->GetZoom();
942         break;
943         case HANDLE_VIEWSET_ZOOM_TYPE:
944         {
945             bBool = sal_False;
946             sal_Int16 nRet(0);
947             switch (mpConstViewOption->GetZoomType())
948             {
949                 case SVX_ZOOM_OPTIMAL:
950                     nRet = view::DocumentZoomType::OPTIMAL;
951                 break;
952                 case SVX_ZOOM_PAGEWIDTH:
953                     nRet = view::DocumentZoomType::PAGE_WIDTH;
954                 break;
955                 case SVX_ZOOM_WHOLEPAGE:
956                     nRet = view::DocumentZoomType::ENTIRE_PAGE;
957                 break;
958                 case SVX_ZOOM_PERCENT:
959                     nRet = view::DocumentZoomType::BY_VALUE;
960                 break;
961                 case SVX_ZOOM_PAGEWIDTH_NOBORDER:
962                     nRet = view::DocumentZoomType::PAGE_WIDTH_EXACT;
963                 break;
964                 default:
965                     OSL_ENSURE(false, "SwXViewSettings: invalid zoom type");
966                 break;
967             }
968             rValue <<= nRet;
969         }
970         break;
971         case HANDLE_VIEWSET_ONLINE_LAYOUT:
972             if(pView)
973                 bBoolVal = pView->GetWrtShell().GetViewOptions()->getBrowseMode();
974         break;
975         case HANDLE_VIEWSET_HELP_URL :
976         {
977             if ( pView )
978             {
979                 bBool = sal_False;
980                 OUStringBuffer sHelpURL;
981                 sHelpURL.appendAscii ( INET_HID_SCHEME );
982                 SwEditWin &rEditWin = pView->GetEditWin();
983                 sHelpURL.append( rtl::OStringToOUString( rEditWin.GetHelpId(), RTL_TEXTENCODING_UTF8 ) );
984                 rValue <<= sHelpURL.makeStringAndClear();
985             }
986             else
987                 throw UnknownPropertyException();
988         }
989         break;
990         case HANDLE_VIEWSET_HORI_RULER_METRIC:
991         {
992             if ( pView )
993             {
994                 FieldUnit eUnit;
995                 pView->GetHLinealMetric( eUnit );
996                 rValue <<= (sal_Int32)eUnit;
997             }
998             else
999             {
1000                 const SwMasterUsrPref* pUsrPref = SW_MOD()->GetUsrPref( bWeb );
1001                 rValue <<= (sal_Int32)pUsrPref->GetHScrollMetric();
1002             }
1003             bBool = sal_False;
1004         }
1005         break;
1006         case HANDLE_VIEWSET_VERT_RULER_METRIC:
1007         {
1008             if ( pView )
1009             {
1010                 FieldUnit eUnit;
1011                 pView->GetVLinealMetric( eUnit );
1012                 rValue <<= (sal_Int32)eUnit;
1013             }
1014             else
1015             {
1016                 const SwMasterUsrPref* pUsrPref = SW_MOD()->GetUsrPref( bWeb );
1017                 rValue <<= (sal_Int32)pUsrPref->GetVScrollMetric();
1018             }
1019             bBool = sal_False;
1020         }
1021         break;
1022         default: DBG_ERROR("Diese Id gibt's nicht!");
1023     }
1024     if( bBool )
1025         rValue.setValue(&bBoolVal, ::getBooleanCppuType());
1026 }
1027 void SwXViewSettings::_postGetValues ()
1028     throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException )
1029 {
1030     mpConstViewOption = NULL;
1031 }
1032 
1033 OUString SwXViewSettings::getImplementationName(void) throw( RuntimeException )
1034 {
1035     return C2U("SwXViewSettings");
1036 }
1037 
1038 sal_Bool SwXViewSettings::supportsService(const OUString& rServiceName) throw( RuntimeException )
1039 {
1040     return C2U("com.sun.star.text.ViewSettings") == rServiceName;
1041 }
1042 
1043 Sequence< OUString > SwXViewSettings::getSupportedServiceNames(void) throw( RuntimeException )
1044 {
1045     Sequence< OUString > aRet(1);
1046     OUString* pArray = aRet.getArray();
1047     pArray[0] = C2U("com.sun.star.text.ViewSettings");
1048     return aRet;
1049 }
1050 
1051