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