Branch data 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 <unotools/saveopt.hxx>
21 : : #include "rtl/instance.hxx"
22 : : #include <unotools/configmgr.hxx>
23 : : #include <unotools/configitem.hxx>
24 : : #include <tools/debug.hxx>
25 : : #include <com/sun/star/uno/Any.hxx>
26 : : #include <com/sun/star/uno/Sequence.hxx>
27 : :
28 : : #include <osl/mutex.hxx>
29 : : #include <comphelper/configurationhelper.hxx>
30 : : #include <comphelper/processfactory.hxx>
31 : : #include <rtl/logfile.hxx>
32 : : #include "itemholder1.hxx"
33 : :
34 : : using namespace utl;
35 : : using namespace com::sun::star::uno;
36 : :
37 : : using ::rtl::OUString;
38 : :
39 : : namespace css = ::com::sun::star;
40 : :
41 : : class SvtSaveOptions_Impl;
42 : : class SvtLoadOptions_Impl;
43 : :
44 : : #define CFG_READONLY_DEFAULT sal_False
45 : :
46 : : struct SvtLoadSaveOptions_Impl
47 : : {
48 : : SvtSaveOptions_Impl* pSaveOpt;
49 : : SvtLoadOptions_Impl* pLoadOpt;
50 : : };
51 : :
52 : : static SvtLoadSaveOptions_Impl* pOptions = NULL;
53 : : static sal_Int32 nRefCount = 0;
54 : :
55 : : class SvtSaveOptions_Impl : public utl::ConfigItem
56 : : {
57 : : sal_Int32 nAutoSaveTime;
58 : : sal_Bool bUseUserData,
59 : : bBackup,
60 : : bAutoSave,
61 : : bAutoSavePrompt,
62 : : bDocInfSave,
63 : : bSaveWorkingSet,
64 : : bSaveDocView,
65 : : bSaveRelINet,
66 : : bSaveRelFSys,
67 : : bSaveUnpacked,
68 : : bDoPrettyPrinting,
69 : : bWarnAlienFormat,
70 : : bLoadDocPrinter,
71 : : bUseSHA1InODF12,
72 : : bUseBlowfishInODF12;
73 : :
74 : : SvtSaveOptions::ODFDefaultVersion eODFDefaultVersion;
75 : :
76 : : sal_Bool bROAutoSaveTime,
77 : : bROUseUserData,
78 : : bROBackup,
79 : : bROAutoSave,
80 : : bROAutoSavePrompt,
81 : : bRODocInfSave,
82 : : bROSaveWorkingSet,
83 : : bROSaveDocView,
84 : : bROSaveRelINet,
85 : : bROSaveRelFSys,
86 : : bROSaveUnpacked,
87 : : bROWarnAlienFormat,
88 : : bRODoPrettyPrinting,
89 : : bROLoadDocPrinter,
90 : : bROODFDefaultVersion,
91 : : bROUseSHA1InODF12,
92 : : bROUseBlowfishInODF12;
93 : :
94 : : public:
95 : : SvtSaveOptions_Impl();
96 : : ~SvtSaveOptions_Impl();
97 : :
98 : : virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames );
99 : : virtual void Commit();
100 : :
101 : 0 : sal_Int32 GetAutoSaveTime() const { return nAutoSaveTime; }
102 : 0 : sal_Bool IsUseUserData() const { return bUseUserData; }
103 : 0 : sal_Bool IsBackup() const { return bBackup; }
104 : 0 : sal_Bool IsAutoSave() const { return bAutoSave; }
105 : 0 : sal_Bool IsAutoSavePrompt() const { return bAutoSavePrompt; }
106 : 0 : sal_Bool IsDocInfoSave() const { return bDocInfSave; }
107 : 0 : sal_Bool IsSaveWorkingSet() const { return bSaveWorkingSet; }
108 : 0 : sal_Bool IsSaveDocView() const { return bSaveDocView; }
109 : 0 : sal_Bool IsSaveRelINet() const { return bSaveRelINet; }
110 : 1206 : sal_Bool IsSaveRelFSys() const { return bSaveRelFSys; }
111 : 177 : sal_Bool IsSaveUnpacked() const { return bSaveUnpacked; }
112 : 1074 : sal_Bool IsPrettyPrintingEnabled( ) const { return bDoPrettyPrinting; }
113 : 0 : sal_Bool IsWarnAlienFormat() const { return bWarnAlienFormat; }
114 : 0 : sal_Bool IsLoadDocPrinter() const { return bLoadDocPrinter; }
115 : 3754 : sal_Bool IsUseSHA1InODF12() const { return bUseSHA1InODF12; }
116 : 3754 : sal_Bool IsUseBlowfishInODF12() const { return bUseBlowfishInODF12; }
117 : :
118 : : SvtSaveOptions::ODFDefaultVersion
119 : 64557 : GetODFDefaultVersion() const { return eODFDefaultVersion; }
120 : :
121 : : void SetAutoSaveTime( sal_Int32 n );
122 : : void SetUseUserData( sal_Bool b );
123 : : void SetBackup( sal_Bool b );
124 : : void SetAutoSave( sal_Bool b );
125 : : void SetAutoSavePrompt( sal_Bool b );
126 : : void SetDocInfoSave( sal_Bool b );
127 : : void SetSaveWorkingSet( sal_Bool b );
128 : : void SetSaveDocView( sal_Bool b );
129 : : void SetSaveRelINet( sal_Bool b );
130 : : void SetSaveRelFSys( sal_Bool b );
131 : : void EnablePrettyPrinting( sal_Bool _bDoPP );
132 : : void SetWarnAlienFormat( sal_Bool _bDoPP );
133 : : void SetLoadDocPrinter( sal_Bool bNew );
134 : : void SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion eNew );
135 : :
136 : : sal_Bool IsReadOnly( SvtSaveOptions::EOption eOption ) const;
137 : : };
138 : :
139 : 0 : void SvtSaveOptions_Impl::SetAutoSaveTime( sal_Int32 n )
140 : : {
141 [ # # ][ # # ]: 0 : if (!bROAutoSaveTime && nAutoSaveTime!=n)
142 : : {
143 : 0 : nAutoSaveTime = n;
144 : 0 : SetModified();
145 : 0 : Commit();
146 : : }
147 : 0 : }
148 : :
149 : 0 : void SvtSaveOptions_Impl::SetUseUserData( sal_Bool b )
150 : : {
151 [ # # ][ # # ]: 0 : if (!bROUseUserData && bUseUserData!=b)
152 : : {
153 : 0 : bUseUserData = b;
154 : 0 : SetModified();
155 : : }
156 : 0 : }
157 : :
158 : 0 : void SvtSaveOptions_Impl::SetBackup( sal_Bool b )
159 : : {
160 [ # # ][ # # ]: 0 : if (!bROBackup && bBackup!=b)
161 : : {
162 : 0 : bBackup = b;
163 : 0 : SetModified();
164 : : }
165 : 0 : }
166 : :
167 : 0 : void SvtSaveOptions_Impl::SetAutoSave( sal_Bool b )
168 : : {
169 [ # # ][ # # ]: 0 : if (!bROAutoSave && bAutoSave!=b)
170 : : {
171 : 0 : bAutoSave = b;
172 : 0 : SetModified();
173 : 0 : Commit();
174 : : }
175 : 0 : }
176 : :
177 : 0 : void SvtSaveOptions_Impl::SetAutoSavePrompt( sal_Bool b )
178 : : {
179 [ # # ][ # # ]: 0 : if (!bROAutoSavePrompt && bAutoSavePrompt!=b)
180 : : {
181 : 0 : bAutoSavePrompt = b;
182 : 0 : SetModified();
183 : : }
184 : 0 : }
185 : :
186 : 0 : void SvtSaveOptions_Impl::SetDocInfoSave(sal_Bool b)
187 : : {
188 [ # # ][ # # ]: 0 : if (!bRODocInfSave && bDocInfSave!=b)
189 : : {
190 : 0 : bDocInfSave = b;
191 : 0 : SetModified();
192 : : }
193 : 0 : }
194 : :
195 : 0 : void SvtSaveOptions_Impl::SetSaveWorkingSet( sal_Bool b )
196 : : {
197 [ # # ][ # # ]: 0 : if (!bROSaveWorkingSet && bSaveWorkingSet!=b)
198 : : {
199 : 0 : bSaveWorkingSet = b;
200 : 0 : SetModified();
201 : : }
202 : 0 : }
203 : :
204 : 0 : void SvtSaveOptions_Impl::SetSaveDocView( sal_Bool b )
205 : : {
206 [ # # ][ # # ]: 0 : if (!bROSaveDocView && bSaveDocView!=b)
207 : : {
208 : 0 : bSaveDocView = b;
209 : 0 : SetModified();
210 : : }
211 : 0 : }
212 : :
213 : 0 : void SvtSaveOptions_Impl::SetSaveRelINet( sal_Bool b )
214 : : {
215 [ # # ][ # # ]: 0 : if (!bROSaveRelINet && bSaveRelINet!=b)
216 : : {
217 : 0 : bSaveRelINet = b;
218 : 0 : SetModified();
219 : : }
220 : 0 : }
221 : :
222 : 0 : void SvtSaveOptions_Impl::SetSaveRelFSys( sal_Bool b )
223 : : {
224 [ # # ][ # # ]: 0 : if (!bROSaveRelFSys && bSaveRelFSys!=b)
225 : : {
226 : 0 : bSaveRelFSys = b;
227 : 0 : SetModified();
228 : : }
229 : 0 : }
230 : :
231 : 0 : void SvtSaveOptions_Impl::EnablePrettyPrinting( sal_Bool _bDoPP )
232 : : {
233 [ # # ][ # # ]: 0 : if (!bRODoPrettyPrinting && bDoPrettyPrinting!=_bDoPP)
234 : : {
235 : 0 : bDoPrettyPrinting = _bDoPP;
236 : 0 : SetModified();
237 : : }
238 : 0 : }
239 : :
240 : 0 : void SvtSaveOptions_Impl::SetWarnAlienFormat( sal_Bool _bDoPP )
241 : : {
242 [ # # ][ # # ]: 0 : if (!bROWarnAlienFormat && bWarnAlienFormat!=_bDoPP)
243 : : {
244 : 0 : bWarnAlienFormat = _bDoPP;
245 : 0 : SetModified();
246 : : }
247 : 0 : }
248 : :
249 : 0 : void SvtSaveOptions_Impl::SetLoadDocPrinter( sal_Bool bNew )
250 : : {
251 [ # # ][ # # ]: 0 : if ( !bROLoadDocPrinter && bLoadDocPrinter != bNew )
252 : : {
253 : 0 : bLoadDocPrinter = bNew;
254 : 0 : SetModified();
255 : : }
256 : 0 : }
257 : :
258 : 0 : void SvtSaveOptions_Impl::SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion eNew )
259 : : {
260 [ # # ][ # # ]: 0 : if ( !bROODFDefaultVersion && eODFDefaultVersion != eNew )
261 : : {
262 : 0 : eODFDefaultVersion = eNew;
263 : 0 : SetModified();
264 : : }
265 : 0 : }
266 : :
267 : 0 : sal_Bool SvtSaveOptions_Impl::IsReadOnly( SvtSaveOptions::EOption eOption ) const
268 : : {
269 : 0 : sal_Bool bReadOnly = CFG_READONLY_DEFAULT;
270 [ # # # # : 0 : switch(eOption)
# # # # #
# # # # #
# # # # ]
271 : : {
272 : : case SvtSaveOptions::E_AUTOSAVETIME :
273 : 0 : bReadOnly = bROAutoSaveTime;
274 : 0 : break;
275 : : case SvtSaveOptions::E_USEUSERDATA :
276 : 0 : bReadOnly = bROUseUserData;
277 : 0 : break;
278 : : case SvtSaveOptions::E_BACKUP :
279 : 0 : bReadOnly = bROBackup;
280 : 0 : break;
281 : : case SvtSaveOptions::E_AUTOSAVE :
282 : 0 : bReadOnly = bROAutoSave;
283 : 0 : break;
284 : : case SvtSaveOptions::E_AUTOSAVEPROMPT :
285 : 0 : bReadOnly = bROAutoSavePrompt;
286 : 0 : break;
287 : : case SvtSaveOptions::E_DOCINFSAVE :
288 : 0 : bReadOnly = bRODocInfSave;
289 : 0 : break;
290 : : case SvtSaveOptions::E_SAVEWORKINGSET :
291 : 0 : bReadOnly = bROSaveWorkingSet;
292 : 0 : break;
293 : : case SvtSaveOptions::E_SAVEDOCVIEW :
294 : 0 : bReadOnly = bROSaveDocView;
295 : 0 : break;
296 : : case SvtSaveOptions::E_SAVERELINET :
297 : 0 : bReadOnly = bROSaveRelINet;
298 : 0 : break;
299 : : case SvtSaveOptions::E_SAVERELFSYS :
300 : 0 : bReadOnly = bROSaveRelFSys;
301 : 0 : break;
302 : : case SvtSaveOptions::E_SAVEUNPACKED :
303 : 0 : bReadOnly = bROSaveUnpacked;
304 : 0 : break;
305 : : case SvtSaveOptions::E_DOPRETTYPRINTING :
306 : 0 : bReadOnly = bRODoPrettyPrinting;
307 : 0 : break;
308 : : case SvtSaveOptions::E_WARNALIENFORMAT :
309 : 0 : bReadOnly = bROWarnAlienFormat;
310 : 0 : break;
311 : : case SvtSaveOptions::E_LOADDOCPRINTER :
312 : 0 : bReadOnly = bROLoadDocPrinter;
313 : 0 : break;
314 : : case SvtSaveOptions::E_ODFDEFAULTVERSION :
315 : 0 : bReadOnly = bROLoadDocPrinter;
316 : 0 : break;
317 : : case SvtSaveOptions::E_USESHA1INODF12:
318 : 0 : bReadOnly = bROUseSHA1InODF12;
319 : 0 : break;
320 : : case SvtSaveOptions::E_USEBLOWFISHINODF12:
321 : 0 : bReadOnly = bROUseBlowfishInODF12;
322 : 0 : break;
323 : : }
324 : 0 : return bReadOnly;
325 : : }
326 : :
327 : : #define FORMAT 0
328 : : #define TIMEINTERVALL 1
329 : : #define USEUSERDATA 2
330 : : #define CREATEBACKUP 3
331 : : #define AUTOSAVE 4
332 : : #define PROMPT 5
333 : : #define EDITPROPERTY 6
334 : : #define SAVEVIEWINFO 7
335 : : #define UNPACKED 8
336 : : #define PRETTYPRINTING 9
337 : : #define WARNALIENFORMAT 10
338 : : #define LOADDOCPRINTER 11
339 : : #define FILESYSTEM 12
340 : : #define INTERNET 13
341 : : #define SAVEWORKINGSET 14
342 : : #define ODFDEFAULTVERSION 15
343 : : #define USESHA1INODF12 16
344 : : #define USEBLOWFISHINODF12 17
345 : :
346 : 119 : Sequence< OUString > GetPropertyNames()
347 : : {
348 : : static const char* aPropNames[] =
349 : : {
350 : : "Graphic/Format",
351 : : "Document/AutoSaveTimeIntervall",
352 : : "Document/UseUserData",
353 : : "Document/CreateBackup",
354 : : "Document/AutoSave",
355 : : "Document/AutoSavePrompt",
356 : : "Document/EditProperty",
357 : : "Document/ViewInfo",
358 : : "Document/Unpacked",
359 : : "Document/PrettyPrinting",
360 : : "Document/WarnAlienFormat",
361 : : "Document/LoadPrinter",
362 : : "URL/FileSystem",
363 : : "URL/Internet",
364 : : "WorkingSet",
365 : : "ODF/DefaultVersion",
366 : : "ODF/UseSHA1InODF12",
367 : : "ODF/UseBlowfishInODF12"
368 : : };
369 : :
370 : 119 : const int nCount = sizeof( aPropNames ) / sizeof( const char* );
371 : 119 : Sequence< OUString > aNames( nCount );
372 [ + - ]: 119 : OUString* pNames = aNames.getArray();
373 [ + + ]: 2261 : for ( int i = 0; i < nCount; i++ )
374 : 2142 : pNames[i] = OUString::createFromAscii( aPropNames[i] );
375 : :
376 : 119 : return aNames;
377 : : }
378 : :
379 : : // -----------------------------------------------------------------------
380 : :
381 : 119 : SvtSaveOptions_Impl::SvtSaveOptions_Impl()
382 : : : ConfigItem( OUString("Office.Common/Save") )
383 : : , nAutoSaveTime( 0 )
384 : : , bUseUserData( sal_False )
385 : : , bBackup( sal_False )
386 : : , bAutoSave( sal_False )
387 : : , bAutoSavePrompt( sal_False )
388 : : , bDocInfSave( sal_False )
389 : : , bSaveWorkingSet( sal_False )
390 : : , bSaveDocView( sal_False )
391 : : , bSaveRelINet( sal_False )
392 : : , bSaveRelFSys( sal_False )
393 : : , bSaveUnpacked( sal_False )
394 : : , bDoPrettyPrinting( sal_False )
395 : : , bWarnAlienFormat( sal_True )
396 : : , bLoadDocPrinter( sal_True )
397 : : , bUseSHA1InODF12( sal_False )
398 : : , bUseBlowfishInODF12( sal_False )
399 : : , eODFDefaultVersion( SvtSaveOptions::ODFVER_LATEST )
400 : : , bROAutoSaveTime( CFG_READONLY_DEFAULT )
401 : : , bROUseUserData( CFG_READONLY_DEFAULT )
402 : : , bROBackup( CFG_READONLY_DEFAULT )
403 : : , bROAutoSave( CFG_READONLY_DEFAULT )
404 : : , bROAutoSavePrompt( CFG_READONLY_DEFAULT )
405 : : , bRODocInfSave( CFG_READONLY_DEFAULT )
406 : : , bROSaveWorkingSet( CFG_READONLY_DEFAULT )
407 : : , bROSaveDocView( CFG_READONLY_DEFAULT )
408 : : , bROSaveRelINet( CFG_READONLY_DEFAULT )
409 : : , bROSaveRelFSys( CFG_READONLY_DEFAULT )
410 : : , bROSaveUnpacked( CFG_READONLY_DEFAULT )
411 : : , bROWarnAlienFormat( CFG_READONLY_DEFAULT )
412 : : , bRODoPrettyPrinting( CFG_READONLY_DEFAULT )
413 : : , bROLoadDocPrinter( CFG_READONLY_DEFAULT )
414 : : , bROODFDefaultVersion( CFG_READONLY_DEFAULT )
415 : : , bROUseSHA1InODF12( CFG_READONLY_DEFAULT )
416 [ + - ]: 119 : , bROUseBlowfishInODF12( CFG_READONLY_DEFAULT )
417 : : {
418 [ + - ]: 119 : Sequence< OUString > aNames = GetPropertyNames();
419 [ + - ]: 119 : Sequence< Any > aValues = GetProperties( aNames );
420 [ + - ]: 119 : Sequence< sal_Bool > aROStates = GetReadOnlyStates( aNames );
421 [ + - ]: 119 : EnableNotification( aNames );
422 : 119 : const Any* pValues = aValues.getConstArray();
423 : 119 : const sal_Bool* pROStates = aROStates.getConstArray();
424 : : DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" );
425 : : DBG_ASSERT( aROStates.getLength() == aNames.getLength(), "GetReadOnlyStates failed" );
426 [ + - ][ + - ]: 119 : if ( aValues.getLength() == aNames.getLength() && aROStates.getLength() == aNames.getLength() )
[ + - ]
427 : : {
428 [ + + ]: 2261 : for ( int nProp = 0; nProp < aNames.getLength(); nProp++ )
429 : : {
430 [ + - ]: 2142 : if ( pValues[nProp].hasValue() )
431 : : {
432 : 2142 : sal_Int32 nTemp = 0;
433 [ + + + + ]: 2142 : switch ( nProp )
434 : : {
435 : : case FORMAT:
436 : : // not supported anymore
437 : 119 : break;
438 : :
439 : : case TIMEINTERVALL :
440 [ + - ]: 119 : if ( pValues[nProp] >>= nTemp )
441 : 119 : nAutoSaveTime = nTemp;
442 : : else {
443 : : OSL_FAIL( "Wrong Type!" );
444 : : };
445 : 119 : bROAutoSaveTime = pROStates[nProp];
446 : 119 : break;
447 : :
448 : : case ODFDEFAULTVERSION :
449 : : {
450 : 119 : sal_Int16 nTmp = 0;
451 [ + - ]: 119 : if ( pValues[nProp] >>= nTmp )
452 : : {
453 [ + - ]: 119 : if( nTmp == 3 )
454 : 119 : eODFDefaultVersion = SvtSaveOptions::ODFVER_LATEST;
455 : : else
456 : 0 : eODFDefaultVersion = SvtSaveOptions::ODFDefaultVersion( nTmp );
457 : : }
458 : : else {
459 : : SAL_WARN( "unotools.config", "SvtSaveOptions_Impl::SvtSaveOptions_Impl(): Wrong Type!" );
460 : : };
461 : 119 : bROODFDefaultVersion = pROStates[nProp];
462 : : break;
463 : : }
464 : :
465 : : default:
466 : : {
467 : 1785 : sal_Bool bTemp = sal_Bool();
468 [ + - ]: 1785 : if ( pValues[nProp] >>= bTemp )
469 : : {
470 [ + + + + : 1785 : switch ( nProp )
+ + + + +
+ + + + +
+ - ]
471 : : {
472 : : case USEUSERDATA :
473 : 119 : bUseUserData = bTemp;
474 : 119 : bROUseUserData = pROStates[nProp];
475 : 119 : break;
476 : : case CREATEBACKUP :
477 : 119 : bBackup = bTemp;
478 : 119 : bROBackup = pROStates[nProp];
479 : 119 : break;
480 : : case AUTOSAVE :
481 : 119 : bAutoSave = bTemp;
482 : 119 : bROAutoSave = pROStates[nProp];
483 : 119 : break;
484 : : case PROMPT :
485 : 119 : bAutoSavePrompt = bTemp;
486 : 119 : bROAutoSavePrompt = pROStates[nProp];
487 : 119 : break;
488 : : case EDITPROPERTY :
489 : 119 : bDocInfSave = bTemp;
490 : 119 : bRODocInfSave = pROStates[nProp];
491 : 119 : break;
492 : : case SAVEWORKINGSET :
493 : 119 : bSaveWorkingSet = bTemp;
494 : 119 : bROSaveWorkingSet = pROStates[nProp];
495 : 119 : break;
496 : : case SAVEVIEWINFO :
497 : 119 : bSaveDocView = bTemp;
498 : 119 : bROSaveDocView = pROStates[nProp];
499 : 119 : break;
500 : : case FILESYSTEM :
501 : 119 : bSaveRelFSys = bTemp;
502 : 119 : bROSaveRelFSys = pROStates[nProp];
503 : 119 : break;
504 : : case INTERNET :
505 : 119 : bSaveRelINet = bTemp;
506 : 119 : bROSaveRelINet = pROStates[nProp];
507 : 119 : break;
508 : : case UNPACKED :
509 : 119 : bSaveUnpacked = bTemp;
510 : 119 : bROSaveUnpacked = pROStates[nProp];
511 : 119 : break;
512 : :
513 : : case PRETTYPRINTING:
514 : 119 : bDoPrettyPrinting = bTemp;
515 : 119 : bRODoPrettyPrinting = pROStates[nProp];
516 : 119 : break;
517 : :
518 : : case WARNALIENFORMAT:
519 : 119 : bWarnAlienFormat = bTemp;
520 : 119 : bROWarnAlienFormat = pROStates[nProp];
521 : 119 : break;
522 : :
523 : : case LOADDOCPRINTER:
524 : 119 : bLoadDocPrinter = bTemp;
525 : 119 : bROLoadDocPrinter = pROStates[nProp];
526 : 119 : break;
527 : :
528 : : case USESHA1INODF12:
529 : 119 : bUseSHA1InODF12 = bTemp;
530 : 119 : bROUseSHA1InODF12 = pROStates[nProp];
531 : 119 : break;
532 : :
533 : : case USEBLOWFISHINODF12:
534 : 119 : bUseBlowfishInODF12 = bTemp;
535 : 119 : bROUseBlowfishInODF12 = pROStates[nProp];
536 : 2142 : break;
537 : :
538 : : default :
539 : : SAL_WARN( "unotools.config", "invalid index to load a path" );
540 : : }
541 : : }
542 : : else
543 : : {
544 : : OSL_FAIL( "Wrong Type!" );
545 : : }
546 : : }
547 : : }
548 : : }
549 : : }
550 : : }
551 : :
552 : : try
553 : : {
554 : : css::uno::Reference< css::uno::XInterface > xCFG = ::comphelper::ConfigurationHelper::openConfig(
555 : : ::comphelper::getProcessServiceFactory(),
556 : : ::rtl::OUString("org.openoffice.Office.Recovery"),
557 [ + - ][ + - ]: 119 : ::comphelper::ConfigurationHelper::E_READONLY);
558 : :
559 : : ::comphelper::ConfigurationHelper::readRelativeKey(
560 : : xCFG,
561 : : ::rtl::OUString("AutoSave"),
562 [ + - ]: 119 : ::rtl::OUString("Enabled")) >>= bAutoSave;
563 : :
564 : : ::comphelper::ConfigurationHelper::readRelativeKey(
565 : : xCFG,
566 : : ::rtl::OUString("AutoSave"),
567 [ # # ][ + - ]: 119 : ::rtl::OUString("TimeIntervall")) >>= nAutoSaveTime;
568 : : }
569 [ # # ]: 0 : catch(const css::uno::Exception&)
570 [ + - ][ + - ]: 119 : { OSL_FAIL("Could not find needed informations for AutoSave feature."); }
[ + - ]
571 : 119 : }
572 : :
573 : 119 : SvtSaveOptions_Impl::~SvtSaveOptions_Impl()
574 [ - + ]: 238 : {}
575 : :
576 : 0 : void SvtSaveOptions_Impl::Commit()
577 : : {
578 [ # # ]: 0 : Sequence< OUString > aOrgNames = GetPropertyNames();
579 [ # # ]: 0 : OUString* pOrgNames = aOrgNames.getArray();
580 : 0 : sal_Int32 nOrgCount = aOrgNames.getLength();
581 : :
582 [ # # ]: 0 : Sequence< OUString > aNames( nOrgCount );
583 [ # # ]: 0 : Sequence< Any > aValues( nOrgCount );
584 [ # # ]: 0 : OUString* pNames = aNames.getArray();
585 [ # # ]: 0 : Any* pValues = aValues.getArray();
586 : 0 : sal_Int32 nRealCount = 0;
587 : :
588 [ # # ]: 0 : for (sal_Int32 i=0; i<nOrgCount; ++i)
589 : : {
590 [ # # # # : 0 : switch (i)
# # # # #
# # # # #
# # # #
# ]
591 : : {
592 : : case FORMAT:
593 : : // not supported anymore
594 : 0 : break;
595 : : case TIMEINTERVALL :
596 [ # # ]: 0 : if (!bROAutoSaveTime)
597 : : {
598 [ # # ]: 0 : pValues[nRealCount] <<= nAutoSaveTime;
599 : 0 : pNames[nRealCount] = pOrgNames[i];
600 : 0 : ++nRealCount;
601 : : }
602 : 0 : break;
603 : : case USEUSERDATA :
604 [ # # ]: 0 : if (!bROUseUserData)
605 : : {
606 [ # # ]: 0 : pValues[nRealCount] <<= bUseUserData;
607 : 0 : pNames[nRealCount] = pOrgNames[i];
608 : 0 : ++nRealCount;
609 : : }
610 : 0 : break;
611 : : case CREATEBACKUP :
612 [ # # ]: 0 : if (!bROBackup)
613 : : {
614 [ # # ]: 0 : pValues[nRealCount] <<= bBackup;
615 : 0 : pNames[nRealCount] = pOrgNames[i];
616 : 0 : ++nRealCount;
617 : : }
618 : 0 : break;
619 : : case AUTOSAVE :
620 [ # # ]: 0 : if (!bROAutoSave)
621 : : {
622 [ # # ]: 0 : pValues[nRealCount] <<= bAutoSave;
623 : 0 : pNames[nRealCount] = pOrgNames[i];
624 : 0 : ++nRealCount;
625 : : }
626 : 0 : break;
627 : : case PROMPT :
628 [ # # ]: 0 : if (!bROAutoSavePrompt)
629 : : {
630 [ # # ]: 0 : pValues[nRealCount] <<= bAutoSavePrompt;
631 : 0 : pNames[nRealCount] = pOrgNames[i];
632 : 0 : ++nRealCount;
633 : : }
634 : 0 : break;
635 : : case EDITPROPERTY :
636 [ # # ]: 0 : if (!bRODocInfSave)
637 : : {
638 [ # # ]: 0 : pValues[nRealCount] <<= bDocInfSave;
639 : 0 : pNames[nRealCount] = pOrgNames[i];
640 : 0 : ++nRealCount;
641 : : }
642 : 0 : break;
643 : : case SAVEWORKINGSET :
644 [ # # ]: 0 : if (!bROSaveWorkingSet)
645 : : {
646 [ # # ]: 0 : pValues[nRealCount] <<= bSaveWorkingSet;
647 : 0 : pNames[nRealCount] = pOrgNames[i];
648 : 0 : ++nRealCount;
649 : : }
650 : 0 : break;
651 : : case SAVEVIEWINFO :
652 [ # # ]: 0 : if (!bROSaveDocView)
653 : : {
654 [ # # ]: 0 : pValues[nRealCount] <<= bSaveDocView;
655 : 0 : pNames[nRealCount] = pOrgNames[i];
656 : 0 : ++nRealCount;
657 : : }
658 : 0 : break;
659 : : case FILESYSTEM :
660 [ # # ]: 0 : if (!bROSaveRelFSys)
661 : : {
662 [ # # ]: 0 : pValues[nRealCount] <<= bSaveRelFSys;
663 : 0 : pNames[nRealCount] = pOrgNames[i];
664 : 0 : ++nRealCount;
665 : : }
666 : 0 : break;
667 : : case INTERNET :
668 [ # # ]: 0 : if (!bROSaveRelINet)
669 : : {
670 [ # # ]: 0 : pValues[nRealCount] <<= bSaveRelINet;
671 : 0 : pNames[nRealCount] = pOrgNames[i];
672 : 0 : ++nRealCount;
673 : : }
674 : 0 : break;
675 : : case UNPACKED :
676 [ # # ]: 0 : if (!bROSaveUnpacked)
677 : : {
678 [ # # ]: 0 : pValues[nRealCount] <<= bSaveUnpacked;
679 : 0 : pNames[nRealCount] = pOrgNames[i];
680 : 0 : ++nRealCount;
681 : : }
682 : 0 : break;
683 : : case PRETTYPRINTING:
684 [ # # ]: 0 : if (!bRODoPrettyPrinting)
685 : : {
686 [ # # ]: 0 : pValues[nRealCount] <<= bDoPrettyPrinting;
687 : 0 : pNames[nRealCount] = pOrgNames[i];
688 : 0 : ++nRealCount;
689 : : }
690 : 0 : break;
691 : : case WARNALIENFORMAT:
692 [ # # ]: 0 : if (!bROWarnAlienFormat)
693 : : {
694 [ # # ]: 0 : pValues[nRealCount] <<= bWarnAlienFormat;
695 : 0 : pNames[nRealCount] = pOrgNames[i];
696 : 0 : ++nRealCount;
697 : : }
698 : 0 : break;
699 : : case LOADDOCPRINTER:
700 [ # # ]: 0 : if (!bROLoadDocPrinter)
701 : : {
702 [ # # ]: 0 : pValues[nRealCount] <<= bLoadDocPrinter;
703 : 0 : pNames[nRealCount] = pOrgNames[i];
704 : 0 : ++nRealCount;
705 : : }
706 : 0 : break;
707 : : case ODFDEFAULTVERSION:
708 [ # # ]: 0 : if (!bROODFDefaultVersion)
709 : : {
710 [ # # ][ # # ]: 0 : pValues[nRealCount] <<= (eODFDefaultVersion == SvtSaveOptions::ODFVER_LATEST) ? sal_Int16( 3 ) : sal_Int16( eODFDefaultVersion );
711 : 0 : pNames[nRealCount] = pOrgNames[i];
712 : 0 : ++nRealCount;
713 : : }
714 : 0 : break;
715 : : case USESHA1INODF12:
716 [ # # ]: 0 : if (!bROUseSHA1InODF12)
717 : : {
718 [ # # ]: 0 : pValues[nRealCount] <<= bUseSHA1InODF12;
719 : 0 : pNames[nRealCount] = pOrgNames[i];
720 : 0 : ++nRealCount;
721 : : }
722 : 0 : break;
723 : : case USEBLOWFISHINODF12:
724 [ # # ]: 0 : if (!bROUseBlowfishInODF12)
725 : : {
726 [ # # ]: 0 : pValues[nRealCount] <<= bUseBlowfishInODF12;
727 : 0 : pNames[nRealCount] = pOrgNames[i];
728 : 0 : ++nRealCount;
729 : : }
730 : 0 : break;
731 : :
732 : : default:
733 : : SAL_WARN( "unotools.config", "invalid index to save a path" );
734 : : }
735 : : }
736 : :
737 [ # # ]: 0 : aNames.realloc(nRealCount);
738 [ # # ]: 0 : aValues.realloc(nRealCount);
739 [ # # ]: 0 : PutProperties( aNames, aValues );
740 : :
741 : : css::uno::Reference< css::uno::XInterface > xCFG = ::comphelper::ConfigurationHelper::openConfig(
742 : : ::comphelper::getProcessServiceFactory(),
743 : : ::rtl::OUString("org.openoffice.Office.Recovery"),
744 [ # # ][ # # ]: 0 : ::comphelper::ConfigurationHelper::E_STANDARD);
745 : :
746 : : ::comphelper::ConfigurationHelper::writeRelativeKey(
747 : : xCFG,
748 : : ::rtl::OUString("AutoSave"),
749 : : ::rtl::OUString("TimeIntervall"),
750 [ # # ][ # # ]: 0 : css::uno::makeAny(nAutoSaveTime));
751 : :
752 : : ::comphelper::ConfigurationHelper::writeRelativeKey(
753 : : xCFG,
754 : : ::rtl::OUString("AutoSave"),
755 : : ::rtl::OUString("Enabled"),
756 [ # # ][ # # ]: 0 : css::uno::makeAny(bAutoSave));
757 : :
758 [ # # ][ # # ]: 0 : ::comphelper::ConfigurationHelper::flush(xCFG);
[ # # ][ # # ]
759 : 0 : }
760 : :
761 : : // -----------------------------------------------------------------------
762 : :
763 : 0 : void SvtSaveOptions_Impl::Notify( const Sequence<rtl::OUString>& )
764 : : {
765 : 0 : }
766 : :
767 : :
768 : : class SvtLoadOptions_Impl : public utl::ConfigItem
769 : : {
770 : :
771 : : sal_Bool bLoadUserDefinedSettings;
772 : :
773 : : public:
774 : : SvtLoadOptions_Impl();
775 : : ~SvtLoadOptions_Impl();
776 : :
777 : : virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& aPropertyNames );
778 : : virtual void Commit();
779 : :
780 : 0 : void SetLoadUserSettings(sal_Bool b){bLoadUserDefinedSettings = b; SetModified();}
781 : 63 : sal_Bool IsLoadUserSettings() const {return bLoadUserDefinedSettings;}
782 : : };
783 : : // -----------------------------------------------------------------------
784 : : const sal_Char cUserDefinedSettings[] = "UserDefinedSettings";
785 : :
786 : 119 : SvtLoadOptions_Impl::SvtLoadOptions_Impl()
787 : : : ConfigItem( OUString("Office.Common/Load") )
788 [ + - ]: 119 : , bLoadUserDefinedSettings( sal_False )
789 : : {
790 [ + - ]: 119 : Sequence< OUString > aNames(1);
791 [ + - ]: 119 : aNames[0] = OUString::createFromAscii(cUserDefinedSettings);
792 [ + - ]: 119 : Sequence< Any > aValues = GetProperties( aNames );
793 [ + - ]: 119 : EnableNotification( aNames );
794 : 119 : const Any* pValues = aValues.getConstArray();
795 : : DBG_ASSERT( aValues.getLength() == aNames.getLength(), "GetProperties failed" );
796 [ + - ]: 119 : if (pValues[0].getValueTypeClass() == ::com::sun::star::uno::TypeClass_BOOLEAN)
797 [ + - ][ + - ]: 119 : bLoadUserDefinedSettings = *(sal_Bool *)pValues[0].getValue();
798 : 119 : }
799 : : // -----------------------------------------------------------------------
800 : 119 : SvtLoadOptions_Impl::~SvtLoadOptions_Impl()
801 : : {
802 [ - + ]: 238 : }
803 : : // -----------------------------------------------------------------------
804 : 0 : void SvtLoadOptions_Impl::Commit()
805 : : {
806 [ # # ]: 0 : Sequence< OUString > aNames(1);
807 [ # # ]: 0 : aNames[0] = OUString::createFromAscii(cUserDefinedSettings);
808 [ # # ]: 0 : Sequence< Any > aValues( 1 );
809 [ # # ][ # # ]: 0 : aValues[0].setValue(&bLoadUserDefinedSettings, ::getBooleanCppuType());
810 [ # # ][ # # ]: 0 : PutProperties( aNames, aValues );
[ # # ]
811 : 0 : }
812 : : // -----------------------------------------------------------------------
813 : 0 : void SvtLoadOptions_Impl::Notify( const Sequence<rtl::OUString>& )
814 : : {
815 : : SAL_WARN( "unotools.config", "properties have been changed" );
816 : 0 : }
817 : : // -----------------------------------------------------------------------
818 : :
819 : : namespace
820 : : {
821 : : class LocalSingleton : public rtl::Static< osl::Mutex, LocalSingleton >
822 : : {
823 : : };
824 : : }
825 : :
826 : : // -----------------------------------------------------------------------
827 : 59017 : SvtSaveOptions::SvtSaveOptions()
828 : : {
829 : : // Global access, must be guarded (multithreading)
830 [ + - ][ + - ]: 59017 : ::osl::MutexGuard aGuard( LocalSingleton::get() );
831 [ + + ]: 59017 : if ( !pOptions )
832 : : {
833 : : RTL_LOGFILE_CONTEXT(aLog, "unotools ( ??? ) ::SvtSaveOptions_Impl::ctor()");
834 [ + - ]: 119 : pOptions = new SvtLoadSaveOptions_Impl;
835 [ + - ][ + - ]: 119 : pOptions->pSaveOpt = new SvtSaveOptions_Impl;
836 [ + - ][ + - ]: 119 : pOptions->pLoadOpt = new SvtLoadOptions_Impl;
837 : :
838 [ + - ]: 119 : ItemHolder1::holdConfigItem(E_SAVEOPTIONS);
839 : : }
840 : 59017 : ++nRefCount;
841 [ + - ]: 59017 : pImp = pOptions;
842 : 59017 : }
843 : :
844 : : // -----------------------------------------------------------------------
845 : :
846 : 59017 : SvtSaveOptions::~SvtSaveOptions()
847 : : {
848 : : // Global access, must be guarded (multithreading)
849 [ + - ][ + - ]: 59017 : ::osl::MutexGuard aGuard( LocalSingleton::get() );
850 [ + + ]: 59017 : if ( !--nRefCount )
851 : : {
852 [ + - ][ - + ]: 119 : if ( pOptions->pSaveOpt->IsModified() )
853 [ # # ]: 0 : pOptions->pSaveOpt->Commit();
854 [ + - ][ - + ]: 119 : if ( pOptions->pLoadOpt->IsModified() )
855 [ # # ]: 0 : pOptions->pLoadOpt->Commit();
856 : :
857 [ + - ][ + - ]: 119 : DELETEZ( pOptions->pLoadOpt );
858 [ + - ][ + - ]: 119 : DELETEZ( pOptions->pSaveOpt );
859 : 119 : DELETEZ( pOptions );
860 [ + - ]: 59017 : }
861 [ - + ]: 59136 : }
862 : :
863 : 0 : void SvtSaveOptions::SetAutoSaveTime( sal_Int32 n )
864 : : {
865 : 0 : pImp->pSaveOpt->SetAutoSaveTime( n );
866 : 0 : }
867 : :
868 : 0 : sal_Int32 SvtSaveOptions::GetAutoSaveTime() const
869 : : {
870 : 0 : return pImp->pSaveOpt->GetAutoSaveTime();
871 : : }
872 : :
873 : 0 : void SvtSaveOptions::SetUseUserData( sal_Bool b )
874 : : {
875 : 0 : pImp->pSaveOpt->SetUseUserData( b );
876 : 0 : }
877 : :
878 : 0 : sal_Bool SvtSaveOptions::IsUseUserData() const
879 : : {
880 : 0 : return pImp->pSaveOpt->IsUseUserData();
881 : : }
882 : :
883 : 0 : void SvtSaveOptions::SetBackup( sal_Bool b )
884 : : {
885 : 0 : pImp->pSaveOpt->SetBackup( b );
886 : 0 : }
887 : :
888 : 0 : sal_Bool SvtSaveOptions::IsBackup() const
889 : : {
890 : 0 : return pImp->pSaveOpt->IsBackup();
891 : : }
892 : :
893 : 0 : void SvtSaveOptions::SetAutoSave( sal_Bool b )
894 : : {
895 : 0 : pImp->pSaveOpt->SetAutoSave( b );
896 : 0 : }
897 : :
898 : 0 : sal_Bool SvtSaveOptions::IsAutoSave() const
899 : : {
900 : 0 : return pImp->pSaveOpt->IsAutoSave();
901 : : }
902 : :
903 : 0 : void SvtSaveOptions::SetAutoSavePrompt( sal_Bool b )
904 : : {
905 : 0 : pImp->pSaveOpt->SetAutoSavePrompt( b );
906 : 0 : }
907 : :
908 : 0 : sal_Bool SvtSaveOptions::IsAutoSavePrompt() const
909 : : {
910 : 0 : return pImp->pSaveOpt->IsAutoSavePrompt();
911 : : }
912 : :
913 : 0 : void SvtSaveOptions::SetDocInfoSave(sal_Bool b)
914 : : {
915 : 0 : pImp->pSaveOpt->SetDocInfoSave( b );
916 : 0 : }
917 : :
918 : 0 : sal_Bool SvtSaveOptions::IsDocInfoSave() const
919 : : {
920 : 0 : return pImp->pSaveOpt->IsDocInfoSave();
921 : : }
922 : :
923 : 0 : void SvtSaveOptions::SetSaveWorkingSet( sal_Bool b )
924 : : {
925 : 0 : pImp->pSaveOpt->SetSaveWorkingSet( b );
926 : 0 : }
927 : :
928 : 0 : sal_Bool SvtSaveOptions::IsSaveWorkingSet() const
929 : : {
930 : 0 : return pImp->pSaveOpt->IsSaveWorkingSet();
931 : : }
932 : :
933 : 0 : void SvtSaveOptions::SetSaveDocView( sal_Bool b )
934 : : {
935 : 0 : pImp->pSaveOpt->SetSaveDocView( b );
936 : 0 : }
937 : :
938 : 0 : sal_Bool SvtSaveOptions::IsSaveDocView() const
939 : : {
940 : 0 : return pImp->pSaveOpt->IsSaveDocView();
941 : : }
942 : :
943 : 0 : void SvtSaveOptions::SetSaveRelINet( sal_Bool b )
944 : : {
945 : 0 : pImp->pSaveOpt->SetSaveRelINet( b );
946 : 0 : }
947 : :
948 : 0 : sal_Bool SvtSaveOptions::IsSaveRelINet() const
949 : : {
950 : 0 : return pImp->pSaveOpt->IsSaveRelINet();
951 : : }
952 : :
953 : 0 : void SvtSaveOptions::SetSaveRelFSys( sal_Bool b )
954 : : {
955 : 0 : pImp->pSaveOpt->SetSaveRelFSys( b );
956 : 0 : }
957 : :
958 : 1206 : sal_Bool SvtSaveOptions::IsSaveRelFSys() const
959 : : {
960 : 1206 : return pImp->pSaveOpt->IsSaveRelFSys();
961 : : }
962 : :
963 : 177 : sal_Bool SvtSaveOptions::IsSaveUnpacked() const
964 : : {
965 : 177 : return pImp->pSaveOpt->IsSaveUnpacked();
966 : : }
967 : :
968 : 0 : void SvtSaveOptions::SetLoadUserSettings(sal_Bool b)
969 : : {
970 : 0 : pImp->pLoadOpt->SetLoadUserSettings(b);
971 : 0 : }
972 : :
973 : 63 : sal_Bool SvtSaveOptions::IsLoadUserSettings() const
974 : : {
975 : 63 : return pImp->pLoadOpt->IsLoadUserSettings();
976 : : }
977 : :
978 : 0 : void SvtSaveOptions::SetPrettyPrinting( sal_Bool _bEnable )
979 : : {
980 : 0 : pImp->pSaveOpt->EnablePrettyPrinting( _bEnable );
981 : 0 : }
982 : :
983 : 1074 : sal_Bool SvtSaveOptions::IsPrettyPrinting() const
984 : : {
985 : 1074 : return pImp->pSaveOpt->IsPrettyPrintingEnabled();
986 : : }
987 : :
988 : 0 : void SvtSaveOptions::SetWarnAlienFormat( sal_Bool _bEnable )
989 : : {
990 : 0 : pImp->pSaveOpt->SetWarnAlienFormat( _bEnable );
991 : 0 : }
992 : :
993 : 0 : sal_Bool SvtSaveOptions::IsWarnAlienFormat() const
994 : : {
995 : 0 : return pImp->pSaveOpt->IsWarnAlienFormat();
996 : : }
997 : :
998 : 0 : void SvtSaveOptions::SetLoadDocumentPrinter( sal_Bool _bEnable )
999 : : {
1000 : 0 : pImp->pSaveOpt->SetLoadDocPrinter( _bEnable );
1001 : 0 : }
1002 : :
1003 : 0 : sal_Bool SvtSaveOptions::IsLoadDocumentPrinter() const
1004 : : {
1005 : 0 : return pImp->pSaveOpt->IsLoadDocPrinter();
1006 : : }
1007 : :
1008 : 0 : void SvtSaveOptions::SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion eVersion )
1009 : : {
1010 : 0 : pImp->pSaveOpt->SetODFDefaultVersion( eVersion );
1011 : 0 : }
1012 : :
1013 : 64557 : SvtSaveOptions::ODFDefaultVersion SvtSaveOptions::GetODFDefaultVersion() const
1014 : : {
1015 : 64557 : return pImp->pSaveOpt->GetODFDefaultVersion();
1016 : : }
1017 : :
1018 : 3754 : sal_Bool SvtSaveOptions::IsUseSHA1InODF12() const
1019 : : {
1020 : 3754 : return pImp->pSaveOpt->IsUseSHA1InODF12();
1021 : : }
1022 : :
1023 : 3754 : sal_Bool SvtSaveOptions::IsUseBlowfishInODF12() const
1024 : : {
1025 : 3754 : return pImp->pSaveOpt->IsUseBlowfishInODF12();
1026 : : }
1027 : :
1028 : 0 : sal_Bool SvtSaveOptions::IsReadOnly( SvtSaveOptions::EOption eOption ) const
1029 : : {
1030 : 0 : return pImp->pSaveOpt->IsReadOnly(eOption);
1031 : : }
1032 : :
1033 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|