Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <config_features.h>
21 :
22 : #include <unotools/fltrcfg.hxx>
23 : #include <tools/debug.hxx>
24 : #include <tools/solar.h>
25 : #include <osl/diagnose.h>
26 :
27 : #include <com/sun/star/uno/Any.hxx>
28 : #include <com/sun/star/uno/Sequence.hxx>
29 :
30 : using namespace utl;
31 : using namespace com::sun::star::uno;
32 :
33 : #define FILTERCFG_WORD_CODE 0x0001
34 : #define FILTERCFG_WORD_STORAGE 0x0002
35 : #define FILTERCFG_EXCEL_CODE 0x0004
36 : #define FILTERCFG_EXCEL_STORAGE 0x0008
37 : #define FILTERCFG_PPOINT_CODE 0x0010
38 : #define FILTERCFG_PPOINT_STORAGE 0x0020
39 : #define FILTERCFG_MATH_LOAD 0x0100
40 : #define FILTERCFG_MATH_SAVE 0x0200
41 : #define FILTERCFG_WRITER_LOAD 0x0400
42 : #define FILTERCFG_WRITER_SAVE 0x0800
43 : #define FILTERCFG_CALC_LOAD 0x1000
44 : #define FILTERCFG_CALC_SAVE 0x2000
45 : #define FILTERCFG_IMPRESS_LOAD 0x4000
46 : #define FILTERCFG_IMPRESS_SAVE 0x8000
47 : #define FILTERCFG_EXCEL_EXECTBL 0x10000
48 : #define FILTERCFG_ENABLE_PPT_PREVIEW 0x20000
49 : #define FILTERCFG_ENABLE_EXCEL_PREVIEW 0x40000
50 : #define FILTERCFG_ENABLE_WORD_PREVIEW 0x80000
51 : #define FILTERCFG_USE_ENHANCED_FIELDS 0x100000
52 : #define FILTERCFG_WORD_WBCTBL 0x200000
53 : #define FILTERCFG_SMARTART_SHAPE_LOAD 0x400000
54 : #define FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING 0x8000000
55 :
56 : class SvtAppFilterOptions_Impl : public utl::ConfigItem
57 : {
58 : private:
59 : bool bLoadVBA;
60 : bool bSaveVBA;
61 :
62 : protected:
63 : virtual void ImplCommit() SAL_OVERRIDE;
64 :
65 : public:
66 84 : explicit SvtAppFilterOptions_Impl(const OUString& rRoot) :
67 : utl::ConfigItem(rRoot),
68 : bLoadVBA(false),
69 84 : bSaveVBA(false) {}
70 : virtual ~SvtAppFilterOptions_Impl();
71 : virtual void Notify( const com::sun::star::uno::Sequence<OUString>& aPropertyNames) SAL_OVERRIDE;
72 : void Load();
73 :
74 42 : bool IsLoad() const {return bLoadVBA;}
75 0 : void SetLoad(bool bSet)
76 : {
77 0 : if(bSet != bLoadVBA)
78 0 : SetModified();
79 0 : bLoadVBA = bSet;
80 0 : }
81 20 : bool IsSave() const {return bSaveVBA;}
82 0 : void SetSave(bool bSet)
83 : {
84 0 : if(bSet != bSaveVBA)
85 0 : SetModified();
86 0 : bSaveVBA = bSet;
87 0 : }
88 : };
89 :
90 84 : SvtAppFilterOptions_Impl::~SvtAppFilterOptions_Impl()
91 : {
92 : assert(!IsModified()); // should have been committed
93 84 : }
94 :
95 0 : void SvtAppFilterOptions_Impl::ImplCommit()
96 : {
97 0 : Sequence<OUString> aNames(2);
98 0 : OUString* pNames = aNames.getArray();
99 0 : pNames[0] = "Load";
100 0 : pNames[1] = "Save";
101 0 : Sequence<Any> aValues(aNames.getLength());
102 0 : Any* pValues = aValues.getArray();
103 :
104 0 : const Type& rType = cppu::UnoType<bool>::get();
105 0 : pValues[0].setValue(&bLoadVBA, rType);
106 0 : pValues[1].setValue(&bSaveVBA, rType);
107 :
108 0 : PutProperties(aNames, aValues);
109 0 : }
110 :
111 0 : void SvtAppFilterOptions_Impl::Notify( const Sequence< OUString >& )
112 : {
113 : // no listeners supported yet
114 0 : }
115 :
116 168 : void SvtAppFilterOptions_Impl::Load()
117 : {
118 168 : Sequence<OUString> aNames(2);
119 168 : OUString* pNames = aNames.getArray();
120 168 : pNames[0] = "Load";
121 168 : pNames[1] = "Save";
122 :
123 336 : Sequence<Any> aValues = GetProperties(aNames);
124 168 : const Any* pValues = aValues.getConstArray();
125 :
126 168 : if(pValues[0].hasValue())
127 168 : bLoadVBA = *static_cast<sal_Bool const *>(pValues[0].getValue());
128 168 : if(pValues[1].hasValue())
129 336 : bSaveVBA = *static_cast<sal_Bool const *>(pValues[1].getValue());
130 168 : }
131 :
132 28 : class SvtWriterFilterOptions_Impl : public SvtAppFilterOptions_Impl
133 : {
134 : private:
135 : bool bLoadExecutable;
136 :
137 : virtual void ImplCommit() SAL_OVERRIDE;
138 :
139 : public:
140 28 : explicit SvtWriterFilterOptions_Impl(const OUString& rRoot) :
141 : SvtAppFilterOptions_Impl(rRoot),
142 28 : bLoadExecutable(false)
143 28 : {}
144 : void Load();
145 :
146 0 : bool IsLoadExecutable() const {return bLoadExecutable;}
147 0 : void SetLoadExecutable(bool bSet)
148 : {
149 0 : if(bSet != bLoadExecutable)
150 0 : SetModified();
151 0 : bLoadExecutable = bSet;
152 0 : }
153 : };
154 :
155 0 : void SvtWriterFilterOptions_Impl::ImplCommit()
156 : {
157 0 : SvtAppFilterOptions_Impl::ImplCommit();
158 :
159 0 : Sequence<OUString> aNames(1);
160 0 : aNames[0] = "Executable";
161 0 : Sequence<Any> aValues(1);
162 0 : aValues[0] <<= bLoadExecutable;
163 :
164 0 : PutProperties(aNames, aValues);
165 0 : }
166 :
167 56 : void SvtWriterFilterOptions_Impl::Load()
168 : {
169 56 : SvtAppFilterOptions_Impl::Load();
170 :
171 56 : Sequence<OUString> aNames(1);
172 56 : aNames[0] = "Executable";
173 :
174 112 : Sequence<Any> aValues = GetProperties(aNames);
175 56 : const Any* pValues = aValues.getConstArray();
176 56 : if(pValues[0].hasValue())
177 112 : bLoadExecutable = *static_cast<sal_Bool const *>(pValues[0].getValue());
178 56 : }
179 :
180 28 : class SvtCalcFilterOptions_Impl : public SvtAppFilterOptions_Impl
181 : {
182 : private:
183 : bool bLoadExecutable;
184 :
185 : virtual void ImplCommit() SAL_OVERRIDE;
186 :
187 : public:
188 28 : explicit SvtCalcFilterOptions_Impl(const OUString& rRoot) :
189 : SvtAppFilterOptions_Impl(rRoot),
190 28 : bLoadExecutable(false)
191 28 : {}
192 : void Load();
193 :
194 30 : bool IsLoadExecutable() const {return bLoadExecutable;}
195 0 : void SetLoadExecutable(bool bSet)
196 : {
197 0 : if(bSet != bLoadExecutable)
198 0 : SetModified();
199 0 : bLoadExecutable = bSet;
200 0 : }
201 : };
202 :
203 0 : void SvtCalcFilterOptions_Impl::ImplCommit()
204 : {
205 0 : SvtAppFilterOptions_Impl::ImplCommit();
206 :
207 0 : Sequence<OUString> aNames(1);
208 0 : aNames[0] = "Executable";
209 0 : Sequence<Any> aValues(1);
210 0 : aValues[0] <<= bLoadExecutable;
211 :
212 0 : PutProperties(aNames, aValues);
213 0 : }
214 :
215 56 : void SvtCalcFilterOptions_Impl::Load()
216 : {
217 56 : SvtAppFilterOptions_Impl::Load();
218 :
219 56 : Sequence<OUString> aNames(1);
220 56 : aNames[0] = "Executable";
221 :
222 112 : Sequence<Any> aValues = GetProperties(aNames);
223 56 : const Any* pValues = aValues.getConstArray();
224 56 : if(pValues[0].hasValue())
225 112 : bLoadExecutable = *static_cast<sal_Bool const *>(pValues[0].getValue());
226 56 : }
227 :
228 28 : struct SvtFilterOptions_Impl
229 : {
230 : sal_uLong nFlags;
231 : SvtWriterFilterOptions_Impl aWriterCfg;
232 : SvtCalcFilterOptions_Impl aCalcCfg;
233 : SvtAppFilterOptions_Impl aImpressCfg;
234 :
235 28 : SvtFilterOptions_Impl() :
236 : aWriterCfg("Office.Writer/Filter/Import/VBA"),
237 : aCalcCfg("Office.Calc/Filter/Import/VBA"),
238 28 : aImpressCfg("Office.Impress/Filter/Import/VBA")
239 : {
240 : nFlags = FILTERCFG_WORD_CODE |
241 : FILTERCFG_WORD_STORAGE |
242 : FILTERCFG_EXCEL_CODE |
243 : FILTERCFG_EXCEL_STORAGE |
244 : FILTERCFG_PPOINT_CODE |
245 : FILTERCFG_PPOINT_STORAGE |
246 : FILTERCFG_MATH_LOAD |
247 : FILTERCFG_MATH_SAVE |
248 : FILTERCFG_WRITER_LOAD |
249 : FILTERCFG_WRITER_SAVE |
250 : FILTERCFG_CALC_LOAD |
251 : FILTERCFG_CALC_SAVE |
252 : FILTERCFG_IMPRESS_LOAD |
253 : FILTERCFG_IMPRESS_SAVE |
254 : FILTERCFG_USE_ENHANCED_FIELDS |
255 : FILTERCFG_SMARTART_SHAPE_LOAD |
256 28 : FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING;
257 28 : Load();
258 28 : }
259 :
260 : void SetFlag( sal_uLong nFlag, bool bSet );
261 : bool IsFlag( sal_uLong nFlag ) const;
262 56 : void Load()
263 : {
264 56 : aWriterCfg.Load();
265 56 : aCalcCfg.Load();
266 56 : aImpressCfg.Load();
267 56 : }
268 : };
269 :
270 407 : void SvtFilterOptions_Impl::SetFlag( sal_uLong nFlag, bool bSet )
271 : {
272 407 : switch(nFlag)
273 : {
274 0 : case FILTERCFG_WORD_CODE: aWriterCfg.SetLoad(bSet);break;
275 0 : case FILTERCFG_WORD_STORAGE: aWriterCfg.SetSave(bSet);break;
276 0 : case FILTERCFG_WORD_WBCTBL: aWriterCfg.SetLoadExecutable(bSet);break;
277 0 : case FILTERCFG_EXCEL_CODE: aCalcCfg.SetLoad(bSet);break;
278 0 : case FILTERCFG_EXCEL_STORAGE: aCalcCfg.SetSave(bSet);break;
279 0 : case FILTERCFG_EXCEL_EXECTBL: aCalcCfg.SetLoadExecutable(bSet);break;
280 0 : case FILTERCFG_PPOINT_CODE: aImpressCfg.SetLoad(bSet);break;
281 0 : case FILTERCFG_PPOINT_STORAGE: aImpressCfg.SetSave(bSet);break;
282 : default:
283 407 : if( bSet )
284 319 : nFlags |= nFlag;
285 : else
286 88 : nFlags &= ~nFlag;
287 : }
288 407 : }
289 :
290 3862 : bool SvtFilterOptions_Impl::IsFlag( sal_uLong nFlag ) const
291 : {
292 : bool bRet;
293 3862 : switch(nFlag)
294 : {
295 0 : case FILTERCFG_WORD_CODE : bRet = aWriterCfg.IsLoad();break;
296 0 : case FILTERCFG_WORD_STORAGE : bRet = aWriterCfg.IsSave();break;
297 0 : case FILTERCFG_WORD_WBCTBL : bRet = aWriterCfg.IsLoadExecutable();break;
298 30 : case FILTERCFG_EXCEL_CODE : bRet = aCalcCfg.IsLoad();break;
299 17 : case FILTERCFG_EXCEL_STORAGE : bRet = aCalcCfg.IsSave();break;
300 30 : case FILTERCFG_EXCEL_EXECTBL : bRet = aCalcCfg.IsLoadExecutable();break;
301 12 : case FILTERCFG_PPOINT_CODE : bRet = aImpressCfg.IsLoad();break;
302 3 : case FILTERCFG_PPOINT_STORAGE : bRet = aImpressCfg.IsSave();break;
303 : default:
304 3770 : bRet = 0 != (nFlags & nFlag );
305 : }
306 3862 : return bRet;
307 : }
308 :
309 28 : SvtFilterOptions::SvtFilterOptions() :
310 : ConfigItem( "Office.Common/Filter/Microsoft" ),
311 28 : pImp(new SvtFilterOptions_Impl)
312 : {
313 28 : EnableNotification(GetPropertyNames());
314 28 : Load();
315 28 : }
316 :
317 56 : SvtFilterOptions::~SvtFilterOptions()
318 : {
319 28 : delete pImp;
320 28 : }
321 :
322 58 : const Sequence<OUString>& SvtFilterOptions::GetPropertyNames()
323 : {
324 58 : static Sequence<OUString> aNames;
325 58 : if(!aNames.getLength())
326 : {
327 28 : int nCount = 14;
328 28 : aNames.realloc(nCount);
329 : static const char* aPropNames[] =
330 : {
331 : "Import/MathTypeToMath", // 0
332 : "Import/WinWordToWriter", // 1
333 : "Import/PowerPointToImpress", // 2
334 : "Import/ExcelToCalc", // 3
335 : "Export/MathToMathType", // 4
336 : "Export/WriterToWinWord", // 5
337 : "Export/ImpressToPowerPoint", // 6
338 : "Export/CalcToExcel", // 7
339 : "Export/EnablePowerPointPreview", // 8
340 : "Export/EnableExcelPreview", // 9
341 : "Export/EnableWordPreview", // 10
342 : "Import/ImportWWFieldsAsEnhancedFields", // 11
343 : "Import/SmartArtToShapes", // 12
344 : "Export/CharBackgroundToHighlighting" // 13
345 : };
346 28 : OUString* pNames = aNames.getArray();
347 420 : for(int i = 0; i < nCount; i++)
348 392 : pNames[i] = OUString::createFromAscii(aPropNames[i]);
349 : }
350 58 : return aNames;
351 : }
352 :
353 420 : static sal_uLong lcl_GetFlag(sal_Int32 nProp)
354 : {
355 420 : sal_uLong nFlag = 0;
356 420 : switch(nProp)
357 : {
358 30 : case 0: nFlag = FILTERCFG_MATH_LOAD; break;
359 30 : case 1: nFlag = FILTERCFG_WRITER_LOAD; break;
360 30 : case 2: nFlag = FILTERCFG_IMPRESS_LOAD; break;
361 30 : case 3: nFlag = FILTERCFG_CALC_LOAD; break;
362 30 : case 4: nFlag = FILTERCFG_MATH_SAVE; break;
363 30 : case 5: nFlag = FILTERCFG_WRITER_SAVE; break;
364 30 : case 6: nFlag = FILTERCFG_IMPRESS_SAVE; break;
365 30 : case 7: nFlag = FILTERCFG_CALC_SAVE; break;
366 30 : case 8: nFlag = FILTERCFG_ENABLE_PPT_PREVIEW; break;
367 30 : case 9: nFlag = FILTERCFG_ENABLE_EXCEL_PREVIEW; break;
368 30 : case 10: nFlag = FILTERCFG_ENABLE_WORD_PREVIEW; break;
369 30 : case 11: nFlag = FILTERCFG_USE_ENHANCED_FIELDS; break;
370 30 : case 12: nFlag = FILTERCFG_SMARTART_SHAPE_LOAD; break;
371 30 : case 13: nFlag = FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING; break;
372 :
373 : default: OSL_FAIL("illegal value");
374 : }
375 420 : return nFlag;
376 : }
377 :
378 0 : void SvtFilterOptions::Notify( const Sequence<OUString>& )
379 : {
380 0 : Load();
381 0 : }
382 :
383 2 : void SvtFilterOptions::ImplCommit()
384 : {
385 2 : const Sequence<OUString>& aNames = GetPropertyNames();
386 2 : Sequence<Any> aValues(aNames.getLength());
387 2 : Any* pValues = aValues.getArray();
388 :
389 2 : const Type& rType = cppu::UnoType<bool>::get();
390 30 : for(int nProp = 0; nProp < aNames.getLength(); nProp++)
391 : {
392 28 : sal_uLong nFlag = lcl_GetFlag(nProp);
393 28 : sal_Bool bVal = pImp->IsFlag( nFlag);
394 28 : pValues[nProp].setValue(&bVal, rType);
395 :
396 : }
397 2 : PutProperties(aNames, aValues);
398 2 : }
399 :
400 28 : void SvtFilterOptions::Load()
401 : {
402 28 : pImp->Load();
403 28 : const Sequence<OUString>& rNames = GetPropertyNames();
404 28 : Sequence<Any> aValues = GetProperties(rNames);
405 28 : const Any* pValues = aValues.getConstArray();
406 : DBG_ASSERT(aValues.getLength() == rNames.getLength(), "GetProperties failed");
407 28 : if(aValues.getLength() == rNames.getLength())
408 : {
409 420 : for(int nProp = 0; nProp < rNames.getLength(); nProp++)
410 : {
411 392 : if(pValues[nProp].hasValue())
412 : {
413 392 : bool bVal = *static_cast<sal_Bool const *>(pValues[nProp].getValue());
414 392 : sal_uLong nFlag = lcl_GetFlag(nProp);
415 392 : pImp->SetFlag( nFlag, bVal);
416 : }
417 : }
418 28 : }
419 28 : }
420 :
421 0 : void SvtFilterOptions::SetLoadWordBasicCode( bool bFlag )
422 : {
423 0 : pImp->SetFlag( FILTERCFG_WORD_CODE, bFlag );
424 0 : SetModified();
425 0 : }
426 :
427 0 : bool SvtFilterOptions::IsLoadWordBasicCode() const
428 : {
429 0 : return pImp->IsFlag( FILTERCFG_WORD_CODE );
430 : }
431 :
432 0 : void SvtFilterOptions::SetLoadWordBasicExecutable( bool bFlag )
433 : {
434 0 : pImp->SetFlag( FILTERCFG_WORD_WBCTBL, bFlag );
435 0 : SetModified();
436 0 : }
437 :
438 0 : bool SvtFilterOptions::IsLoadWordBasicExecutable() const
439 : {
440 0 : return pImp->IsFlag( FILTERCFG_WORD_WBCTBL );
441 : }
442 :
443 0 : void SvtFilterOptions::SetLoadWordBasicStorage( bool bFlag )
444 : {
445 0 : pImp->SetFlag( FILTERCFG_WORD_STORAGE, bFlag );
446 0 : SetModified();
447 0 : }
448 :
449 0 : bool SvtFilterOptions::IsLoadWordBasicStorage() const
450 : {
451 0 : return pImp->IsFlag( FILTERCFG_WORD_STORAGE );
452 : }
453 :
454 0 : void SvtFilterOptions::SetLoadExcelBasicCode( bool bFlag )
455 : {
456 0 : pImp->SetFlag( FILTERCFG_EXCEL_CODE, bFlag );
457 0 : SetModified();
458 0 : }
459 :
460 30 : bool SvtFilterOptions::IsLoadExcelBasicCode() const
461 : {
462 30 : return pImp->IsFlag( FILTERCFG_EXCEL_CODE );
463 : }
464 :
465 0 : void SvtFilterOptions::SetLoadExcelBasicExecutable( bool bFlag )
466 : {
467 0 : pImp->SetFlag( FILTERCFG_EXCEL_EXECTBL, bFlag );
468 0 : SetModified();
469 0 : }
470 :
471 30 : bool SvtFilterOptions::IsLoadExcelBasicExecutable() const
472 : {
473 30 : return pImp->IsFlag( FILTERCFG_EXCEL_EXECTBL );
474 : }
475 :
476 0 : void SvtFilterOptions::SetLoadExcelBasicStorage( bool bFlag )
477 : {
478 0 : pImp->SetFlag( FILTERCFG_EXCEL_STORAGE, bFlag );
479 0 : SetModified();
480 0 : }
481 :
482 17 : bool SvtFilterOptions::IsLoadExcelBasicStorage() const
483 : {
484 17 : return pImp->IsFlag( FILTERCFG_EXCEL_STORAGE );
485 : }
486 :
487 0 : void SvtFilterOptions::SetLoadPPointBasicCode( bool bFlag )
488 : {
489 0 : pImp->SetFlag( FILTERCFG_PPOINT_CODE, bFlag );
490 0 : SetModified();
491 0 : }
492 :
493 12 : bool SvtFilterOptions::IsLoadPPointBasicCode() const
494 : {
495 12 : return pImp->IsFlag( FILTERCFG_PPOINT_CODE );
496 : }
497 :
498 0 : void SvtFilterOptions::SetLoadPPointBasicStorage( bool bFlag )
499 : {
500 0 : pImp->SetFlag( FILTERCFG_PPOINT_STORAGE, bFlag );
501 0 : SetModified();
502 0 : }
503 :
504 3 : bool SvtFilterOptions::IsLoadPPointBasicStorage() const
505 : {
506 3 : return pImp->IsFlag( FILTERCFG_PPOINT_STORAGE );
507 : }
508 :
509 132 : bool SvtFilterOptions::IsMathType2Math() const
510 : {
511 132 : return pImp->IsFlag( FILTERCFG_MATH_LOAD );
512 : }
513 :
514 0 : void SvtFilterOptions::SetMathType2Math( bool bFlag )
515 : {
516 0 : pImp->SetFlag( FILTERCFG_MATH_LOAD, bFlag );
517 0 : SetModified();
518 0 : }
519 :
520 613 : bool SvtFilterOptions::IsMath2MathType() const
521 : {
522 613 : return pImp->IsFlag( FILTERCFG_MATH_SAVE );
523 : }
524 :
525 0 : void SvtFilterOptions::SetMath2MathType( bool bFlag )
526 : {
527 0 : pImp->SetFlag( FILTERCFG_MATH_SAVE, bFlag );
528 0 : SetModified();
529 0 : }
530 :
531 132 : bool SvtFilterOptions::IsWinWord2Writer() const
532 : {
533 132 : return pImp->IsFlag( FILTERCFG_WRITER_LOAD );
534 : }
535 :
536 0 : void SvtFilterOptions::SetWinWord2Writer( bool bFlag )
537 : {
538 0 : pImp->SetFlag( FILTERCFG_WRITER_LOAD, bFlag );
539 0 : SetModified();
540 0 : }
541 :
542 613 : bool SvtFilterOptions::IsWriter2WinWord() const
543 : {
544 613 : return pImp->IsFlag( FILTERCFG_WRITER_SAVE );
545 : }
546 :
547 0 : void SvtFilterOptions::SetWriter2WinWord( bool bFlag )
548 : {
549 0 : pImp->SetFlag( FILTERCFG_WRITER_SAVE, bFlag );
550 0 : SetModified();
551 0 : }
552 :
553 313 : bool SvtFilterOptions::IsUseEnhancedFields() const
554 : {
555 313 : return pImp->IsFlag( FILTERCFG_USE_ENHANCED_FIELDS );
556 : }
557 :
558 90 : bool SvtFilterOptions::IsExcel2Calc() const
559 : {
560 90 : return pImp->IsFlag( FILTERCFG_CALC_LOAD );
561 : }
562 :
563 0 : void SvtFilterOptions::SetExcel2Calc( bool bFlag )
564 : {
565 0 : pImp->SetFlag( FILTERCFG_CALC_LOAD, bFlag );
566 0 : SetModified();
567 0 : }
568 :
569 613 : bool SvtFilterOptions::IsCalc2Excel() const
570 : {
571 613 : return pImp->IsFlag( FILTERCFG_CALC_SAVE );
572 : }
573 :
574 0 : void SvtFilterOptions::SetCalc2Excel( bool bFlag )
575 : {
576 0 : pImp->SetFlag( FILTERCFG_CALC_SAVE, bFlag );
577 0 : SetModified();
578 0 : }
579 :
580 132 : bool SvtFilterOptions::IsPowerPoint2Impress() const
581 : {
582 132 : return pImp->IsFlag( FILTERCFG_IMPRESS_LOAD );
583 : }
584 :
585 0 : void SvtFilterOptions::SetPowerPoint2Impress( bool bFlag )
586 : {
587 0 : pImp->SetFlag( FILTERCFG_IMPRESS_LOAD, bFlag );
588 0 : SetModified();
589 0 : }
590 :
591 613 : bool SvtFilterOptions::IsImpress2PowerPoint() const
592 : {
593 613 : return pImp->IsFlag( FILTERCFG_IMPRESS_SAVE );
594 : }
595 :
596 0 : void SvtFilterOptions::SetImpress2PowerPoint( bool bFlag )
597 : {
598 0 : pImp->SetFlag( FILTERCFG_IMPRESS_SAVE, bFlag );
599 0 : SetModified();
600 0 : }
601 :
602 38 : bool SvtFilterOptions::IsSmartArt2Shape() const
603 : {
604 38 : return pImp->IsFlag( FILTERCFG_SMARTART_SHAPE_LOAD );
605 : }
606 :
607 6 : void SvtFilterOptions::SetSmartArt2Shape( bool bFlag )
608 : {
609 6 : pImp->SetFlag( FILTERCFG_SMARTART_SHAPE_LOAD, bFlag );
610 6 : SetModified();
611 6 : }
612 :
613 : namespace
614 : {
615 : class theFilterOptions
616 : : public rtl::Static<SvtFilterOptions, theFilterOptions>
617 : {
618 : };
619 : }
620 :
621 1610 : SvtFilterOptions& SvtFilterOptions::Get()
622 : {
623 1610 : return theFilterOptions::get();
624 : }
625 :
626 3 : bool SvtFilterOptions::IsEnablePPTPreview() const
627 : {
628 3 : return pImp->IsFlag( FILTERCFG_ENABLE_PPT_PREVIEW );
629 : }
630 :
631 17 : bool SvtFilterOptions::IsEnableCalcPreview() const
632 : {
633 17 : return pImp->IsFlag( FILTERCFG_ENABLE_EXCEL_PREVIEW );
634 : }
635 :
636 32 : bool SvtFilterOptions::IsEnableWordPreview() const
637 : {
638 32 : return pImp->IsFlag( FILTERCFG_ENABLE_WORD_PREVIEW );
639 : }
640 :
641 :
642 0 : bool SvtFilterOptions::IsCharBackground2Highlighting() const
643 : {
644 0 : return pImp->IsFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING );
645 : }
646 :
647 401 : bool SvtFilterOptions::IsCharBackground2Shading() const
648 : {
649 401 : return !pImp->IsFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING );
650 : }
651 :
652 8 : void SvtFilterOptions::SetCharBackground2Highlighting()
653 : {
654 8 : pImp->SetFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING, true );
655 8 : SetModified();
656 8 : }
657 :
658 1 : void SvtFilterOptions::SetCharBackground2Shading()
659 : {
660 1 : pImp->SetFlag( FILTERCFG_CHAR_BACKGROUND_TO_HIGHLIGHTING, false );
661 1 : SetModified();
662 1 : }
663 :
664 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|