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