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_cui.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski #include <tools/shl.hxx>
29*b1cdbd2cSJim Jagielski #include <svl/eitem.hxx>
30*b1cdbd2cSJim Jagielski #include <svl/intitem.hxx>
31*b1cdbd2cSJim Jagielski #define _SVX_OPTSAVE_CXX
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski #include "optsave.hrc"
34*b1cdbd2cSJim Jagielski #include <cuires.hrc>
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski #include "optsave.hxx"
37*b1cdbd2cSJim Jagielski #include <dialmgr.hxx>
38*b1cdbd2cSJim Jagielski #include <comphelper/processfactory.hxx>
39*b1cdbd2cSJim Jagielski #include <comphelper/sequenceasvector.hxx>
40*b1cdbd2cSJim Jagielski #include <comphelper/sequenceashashmap.hxx>
41*b1cdbd2cSJim Jagielski #include <unotools/moduleoptions.hxx>
42*b1cdbd2cSJim Jagielski #include <unotools/saveopt.hxx>
43*b1cdbd2cSJim Jagielski #include <comphelper/sequenceasvector.hxx>
44*b1cdbd2cSJim Jagielski #include <comphelper/sequenceashashmap.hxx>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XContainerQuery.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XEnumeration.hpp>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XMultiServiceFactory.hpp>
48*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameContainer.hpp>
49*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XContainerQuery.hpp>
50*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XEnumeration.hpp>
51*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyValue.hpp>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/util/XFlushable.hpp>
53*b1cdbd2cSJim Jagielski #include <sfx2/docfilt.hxx>
54*b1cdbd2cSJim Jagielski #include <svtools/stdctrl.hxx>
55*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx>
56*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
57*b1cdbd2cSJim Jagielski #include <unotools/configitem.hxx>
58*b1cdbd2cSJim Jagielski #include <unotools/optionsdlg.hxx>
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx>
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski using namespace com::sun::star::uno;
63*b1cdbd2cSJim Jagielski using namespace com::sun::star::util;
64*b1cdbd2cSJim Jagielski using namespace com::sun::star::lang;
65*b1cdbd2cSJim Jagielski using namespace com::sun::star::beans;
66*b1cdbd2cSJim Jagielski using namespace com::sun::star::container;
67*b1cdbd2cSJim Jagielski using namespace comphelper;
68*b1cdbd2cSJim Jagielski using rtl::OUString;
69*b1cdbd2cSJim Jagielski
70*b1cdbd2cSJim Jagielski #define C2U(cChar) OUString::createFromAscii(cChar)
71*b1cdbd2cSJim Jagielski #define C2S(cChar) String( RTL_CONSTASCII_STRINGPARAM(cChar) )
72*b1cdbd2cSJim Jagielski #define CFG_PAGE_AND_GROUP C2S("General"), C2S("LoadSave")
73*b1cdbd2cSJim Jagielski // !! you have to update these index, if you changed the list of the child windows !!
74*b1cdbd2cSJim Jagielski #define WININDEX_AUTOSAVE ((sal_uInt16)6)
75*b1cdbd2cSJim Jagielski #define WININDEX_SAVEURL_RELFSYS ((sal_uInt16)9)
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------
78*b1cdbd2cSJim Jagielski #ifdef FILTER_WARNING_ENABLED
79*b1cdbd2cSJim Jagielski class SvxAlienFilterWarningConfig_Impl : public utl::ConfigItem
80*b1cdbd2cSJim Jagielski {
81*b1cdbd2cSJim Jagielski sal_Bool bWarning;
82*b1cdbd2cSJim Jagielski com::sun::star::uno::Sequence< OUString > aPropNames;
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski public:
85*b1cdbd2cSJim Jagielski SvxAlienFilterWarningConfig_Impl();
86*b1cdbd2cSJim Jagielski ~SvxAlienFilterWarningConfig_Impl();
87*b1cdbd2cSJim Jagielski
88*b1cdbd2cSJim Jagielski virtual void Commit();
89*b1cdbd2cSJim Jagielski
ResetWarning()90*b1cdbd2cSJim Jagielski void ResetWarning()
91*b1cdbd2cSJim Jagielski {
92*b1cdbd2cSJim Jagielski if(bWarning)
93*b1cdbd2cSJim Jagielski {
94*b1cdbd2cSJim Jagielski bWarning = sal_False;
95*b1cdbd2cSJim Jagielski ConfigItem::SetModified();
96*b1cdbd2cSJim Jagielski }
97*b1cdbd2cSJim Jagielski
98*b1cdbd2cSJim Jagielski }
IsWarning() const99*b1cdbd2cSJim Jagielski sal_Bool IsWarning()const{return bWarning;}
100*b1cdbd2cSJim Jagielski };
101*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------
SvxAlienFilterWarningConfig_Impl()102*b1cdbd2cSJim Jagielski SvxAlienFilterWarningConfig_Impl::SvxAlienFilterWarningConfig_Impl() :
103*b1cdbd2cSJim Jagielski ConfigItem(C2U("TypeDetection.Misc/Defaults"),
104*b1cdbd2cSJim Jagielski CONFIG_MODE_IMMEDIATE_UPDATE),
105*b1cdbd2cSJim Jagielski aPropNames(1),
106*b1cdbd2cSJim Jagielski bWarning(sal_True)
107*b1cdbd2cSJim Jagielski {
108*b1cdbd2cSJim Jagielski aPropNames.getArray()[0] = C2U("ShowAlienFilterWarning");
109*b1cdbd2cSJim Jagielski Sequence<Any> aValues = GetProperties(aPropNames);
110*b1cdbd2cSJim Jagielski const Any* pValues = aValues.getConstArray();
111*b1cdbd2cSJim Jagielski DBG_ASSERT(aValues.getLength() == aPropNames.getLength(), "GetProperties failed");
112*b1cdbd2cSJim Jagielski if(aValues.getLength() == aPropNames.getLength() &&
113*b1cdbd2cSJim Jagielski pValues[0].hasValue() &&
114*b1cdbd2cSJim Jagielski pValues[0].getValueType() == ::getBooleanCppuType())
115*b1cdbd2cSJim Jagielski bWarning = *(sal_Bool*)pValues[0].getValue();
116*b1cdbd2cSJim Jagielski }
117*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------
~SvxAlienFilterWarningConfig_Impl()118*b1cdbd2cSJim Jagielski SvxAlienFilterWarningConfig_Impl::~SvxAlienFilterWarningConfig_Impl()
119*b1cdbd2cSJim Jagielski {
120*b1cdbd2cSJim Jagielski if(IsModified())
121*b1cdbd2cSJim Jagielski Commit();
122*b1cdbd2cSJim Jagielski }
123*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------
Commit()124*b1cdbd2cSJim Jagielski void SvxAlienFilterWarningConfig_Impl::Commit()
125*b1cdbd2cSJim Jagielski {
126*b1cdbd2cSJim Jagielski Sequence<Any> aValues(aPropNames.getLength());
127*b1cdbd2cSJim Jagielski Any* pValues = aValues.getArray();
128*b1cdbd2cSJim Jagielski pValues[0].setValue(&bWarning, ::getBooleanCppuType());
129*b1cdbd2cSJim Jagielski PutProperties(aPropNames, aValues);
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski #endif // FILTER_WARNING_ENABLED
132*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------
133*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------
134*b1cdbd2cSJim Jagielski
135*b1cdbd2cSJim Jagielski struct SvxSaveTabPage_Impl
136*b1cdbd2cSJim Jagielski {
137*b1cdbd2cSJim Jagielski Reference< XNameContainer > xFact;
138*b1cdbd2cSJim Jagielski Sequence< OUString > aFilterArr[APP_COUNT];
139*b1cdbd2cSJim Jagielski Sequence< sal_Bool > aAlienArr[APP_COUNT];
140*b1cdbd2cSJim Jagielski Sequence< sal_Bool > aODFArr[APP_COUNT];
141*b1cdbd2cSJim Jagielski Sequence< OUString > aUIFilterArr[APP_COUNT];
142*b1cdbd2cSJim Jagielski OUString aDefaultArr[APP_COUNT];
143*b1cdbd2cSJim Jagielski sal_Bool aDefaultReadonlyArr[APP_COUNT];
144*b1cdbd2cSJim Jagielski sal_Bool bInitialized;
145*b1cdbd2cSJim Jagielski
146*b1cdbd2cSJim Jagielski SvxSaveTabPage_Impl();
147*b1cdbd2cSJim Jagielski ~SvxSaveTabPage_Impl();
148*b1cdbd2cSJim Jagielski };
149*b1cdbd2cSJim Jagielski
SvxSaveTabPage_Impl()150*b1cdbd2cSJim Jagielski SvxSaveTabPage_Impl::SvxSaveTabPage_Impl() : bInitialized( sal_False )
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski }
153*b1cdbd2cSJim Jagielski
~SvxSaveTabPage_Impl()154*b1cdbd2cSJim Jagielski SvxSaveTabPage_Impl::~SvxSaveTabPage_Impl()
155*b1cdbd2cSJim Jagielski {
156*b1cdbd2cSJim Jagielski }
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski // class SvxSaveTabPage --------------------------------------------------
159*b1cdbd2cSJim Jagielski
SfxSaveTabPage(Window * pParent,const SfxItemSet & rCoreSet)160*b1cdbd2cSJim Jagielski SfxSaveTabPage::SfxSaveTabPage( Window* pParent, const SfxItemSet& rCoreSet ) :
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski SfxTabPage( pParent, CUI_RES( RID_SFXPAGE_SAVE ), rCoreSet ),
163*b1cdbd2cSJim Jagielski
164*b1cdbd2cSJim Jagielski aLoadFL ( this, CUI_RES( LB_LOAD ) ),
165*b1cdbd2cSJim Jagielski aLoadUserSettingsCB ( this, CUI_RES( CB_LOAD_SETTINGS ) ),
166*b1cdbd2cSJim Jagielski aLoadDocPrinterCB ( this, CUI_RES( CB_LOAD_DOCPRINTER ) ),
167*b1cdbd2cSJim Jagielski
168*b1cdbd2cSJim Jagielski aSaveFL ( this, CUI_RES( GB_SAVE ) ),
169*b1cdbd2cSJim Jagielski aDocInfoCB ( this, CUI_RES( BTN_DOCINFO ) ),
170*b1cdbd2cSJim Jagielski aBackupFI ( this, CUI_RES( FI_BACKUP ) ),
171*b1cdbd2cSJim Jagielski aBackupCB ( this, CUI_RES( BTN_BACKUP ) ),
172*b1cdbd2cSJim Jagielski aAutoSaveCB ( this, CUI_RES( BTN_AUTOSAVE ) ),
173*b1cdbd2cSJim Jagielski aAutoSaveEdit ( this, CUI_RES( ED_AUTOSAVE ) ),
174*b1cdbd2cSJim Jagielski aMinuteFT ( this, CUI_RES( FT_MINUTE ) ),
175*b1cdbd2cSJim Jagielski aRelativeFsysCB ( this, CUI_RES( BTN_RELATIVE_FSYS ) ),
176*b1cdbd2cSJim Jagielski aRelativeInetCB ( this, CUI_RES( BTN_RELATIVE_INET ) ),
177*b1cdbd2cSJim Jagielski
178*b1cdbd2cSJim Jagielski aDefaultFormatFL ( this, CUI_RES( FL_FILTER ) ),
179*b1cdbd2cSJim Jagielski aODFVersionFT ( this, CUI_RES( FT_ODF_VERSION ) ),
180*b1cdbd2cSJim Jagielski aODFVersionLB ( this, CUI_RES( LB_ODF_VERSION ) ),
181*b1cdbd2cSJim Jagielski aSizeOptimizationCB ( this, CUI_RES( BTN_NOPRETTYPRINTING ) ),
182*b1cdbd2cSJim Jagielski aWarnAlienFormatCB ( this, CUI_RES( BTN_WARNALIENFORMAT ) ),
183*b1cdbd2cSJim Jagielski aDocTypeFT ( this, CUI_RES( FT_APP ) ),
184*b1cdbd2cSJim Jagielski aDocTypeLB ( this, CUI_RES( LB_APP ) ),
185*b1cdbd2cSJim Jagielski aSaveAsFT ( this, CUI_RES( FT_FILTER ) ),
186*b1cdbd2cSJim Jagielski aSaveAsFI ( this, CUI_RES( FI_FILTER ) ),
187*b1cdbd2cSJim Jagielski aSaveAsLB ( this, CUI_RES( LB_FILTER ) ),
188*b1cdbd2cSJim Jagielski aODFWarningFI ( this, CUI_RES( FI_ODF_WARNING ) ),
189*b1cdbd2cSJim Jagielski aODFWarningFT ( this, CUI_RES( FT_WARN ) ),
190*b1cdbd2cSJim Jagielski
191*b1cdbd2cSJim Jagielski pImpl ( new SvxSaveTabPage_Impl )
192*b1cdbd2cSJim Jagielski
193*b1cdbd2cSJim Jagielski {
194*b1cdbd2cSJim Jagielski sal_Bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
195*b1cdbd2cSJim Jagielski aODFWarningFI.SetImage(
196*b1cdbd2cSJim Jagielski Image( CUI_RES( bHighContrast ? IMG_ODF_WARNING_HC : IMG_ODF_WARNING ) ) );
197*b1cdbd2cSJim Jagielski
198*b1cdbd2cSJim Jagielski FreeResource();
199*b1cdbd2cSJim Jagielski
200*b1cdbd2cSJim Jagielski Link aLink = LINK( this, SfxSaveTabPage, AutoClickHdl_Impl );
201*b1cdbd2cSJim Jagielski aAutoSaveCB.SetClickHdl( aLink );
202*b1cdbd2cSJim Jagielski aAutoSaveEdit.SetMaxTextLen( 2 );
203*b1cdbd2cSJim Jagielski
204*b1cdbd2cSJim Jagielski SvtModuleOptions aModuleOpt;
205*b1cdbd2cSJim Jagielski if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SMATH ) )
206*b1cdbd2cSJim Jagielski {
207*b1cdbd2cSJim Jagielski aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_MATH ));
208*b1cdbd2cSJim Jagielski aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_MATH ));
209*b1cdbd2cSJim Jagielski }
210*b1cdbd2cSJim Jagielski else
211*b1cdbd2cSJim Jagielski {
212*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_MATH] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_MATH);
213*b1cdbd2cSJim Jagielski pImpl->aDefaultReadonlyArr[APP_MATH] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_MATH);
214*b1cdbd2cSJim Jagielski }
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SDRAW ) )
217*b1cdbd2cSJim Jagielski {
218*b1cdbd2cSJim Jagielski aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_DRAW ));
219*b1cdbd2cSJim Jagielski aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_DRAW ));
220*b1cdbd2cSJim Jagielski }
221*b1cdbd2cSJim Jagielski else
222*b1cdbd2cSJim Jagielski {
223*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_DRAW] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_DRAW);
224*b1cdbd2cSJim Jagielski pImpl->aDefaultReadonlyArr[APP_DRAW] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_DRAW);
225*b1cdbd2cSJim Jagielski }
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SIMPRESS ) )
228*b1cdbd2cSJim Jagielski {
229*b1cdbd2cSJim Jagielski aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_IMPRESS ));
230*b1cdbd2cSJim Jagielski aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_IMPRESS ));
231*b1cdbd2cSJim Jagielski }
232*b1cdbd2cSJim Jagielski else
233*b1cdbd2cSJim Jagielski {
234*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_IMPRESS] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_IMPRESS);
235*b1cdbd2cSJim Jagielski pImpl->aDefaultReadonlyArr[APP_IMPRESS] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_IMPRESS);
236*b1cdbd2cSJim Jagielski }
237*b1cdbd2cSJim Jagielski
238*b1cdbd2cSJim Jagielski if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SCALC ) )
239*b1cdbd2cSJim Jagielski {
240*b1cdbd2cSJim Jagielski aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_CALC ));
241*b1cdbd2cSJim Jagielski aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_CALC ));
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski else
244*b1cdbd2cSJim Jagielski {
245*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_CALC] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_CALC);
246*b1cdbd2cSJim Jagielski pImpl->aDefaultReadonlyArr[APP_CALC] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_CALC);
247*b1cdbd2cSJim Jagielski }
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielski if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SWRITER ) )
250*b1cdbd2cSJim Jagielski {
251*b1cdbd2cSJim Jagielski aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_WRITER ));
252*b1cdbd2cSJim Jagielski aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_WRITER_WEB ));
253*b1cdbd2cSJim Jagielski aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_WRITER_GLOBAL ));
254*b1cdbd2cSJim Jagielski aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_WRITER ));
255*b1cdbd2cSJim Jagielski aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_WRITER_WEB ));
256*b1cdbd2cSJim Jagielski aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_WRITER_GLOBAL ));
257*b1cdbd2cSJim Jagielski }
258*b1cdbd2cSJim Jagielski else
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_WRITER] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITER);
261*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_WRITER_WEB] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERWEB);
262*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_WRITER_GLOBAL] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERGLOBAL);
263*b1cdbd2cSJim Jagielski pImpl->aDefaultReadonlyArr[APP_WRITER] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_WRITER);
264*b1cdbd2cSJim Jagielski pImpl->aDefaultReadonlyArr[APP_WRITER_WEB] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_WRITERWEB);
265*b1cdbd2cSJim Jagielski pImpl->aDefaultReadonlyArr[APP_WRITER_GLOBAL] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_WRITERGLOBAL);
266*b1cdbd2cSJim Jagielski }
267*b1cdbd2cSJim Jagielski
268*b1cdbd2cSJim Jagielski aLink = LINK( this, SfxSaveTabPage, ODFVersionHdl_Impl );
269*b1cdbd2cSJim Jagielski aODFVersionLB.SetSelectHdl( aLink );
270*b1cdbd2cSJim Jagielski aLink = LINK( this, SfxSaveTabPage, FilterHdl_Impl );
271*b1cdbd2cSJim Jagielski aDocTypeLB.SetSelectHdl( aLink );
272*b1cdbd2cSJim Jagielski aSaveAsLB.SetSelectHdl( aLink );
273*b1cdbd2cSJim Jagielski
274*b1cdbd2cSJim Jagielski DetectHiddenControls();
275*b1cdbd2cSJim Jagielski }
276*b1cdbd2cSJim Jagielski
277*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
278*b1cdbd2cSJim Jagielski
~SfxSaveTabPage()279*b1cdbd2cSJim Jagielski SfxSaveTabPage::~SfxSaveTabPage()
280*b1cdbd2cSJim Jagielski {
281*b1cdbd2cSJim Jagielski delete pImpl;
282*b1cdbd2cSJim Jagielski }
283*b1cdbd2cSJim Jagielski
284*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
285*b1cdbd2cSJim Jagielski
Create(Window * pParent,const SfxItemSet & rAttrSet)286*b1cdbd2cSJim Jagielski SfxTabPage* SfxSaveTabPage::Create( Window* pParent,
287*b1cdbd2cSJim Jagielski const SfxItemSet& rAttrSet )
288*b1cdbd2cSJim Jagielski {
289*b1cdbd2cSJim Jagielski return ( new SfxSaveTabPage( pParent, rAttrSet ) );
290*b1cdbd2cSJim Jagielski }
291*b1cdbd2cSJim Jagielski
292*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
AcceptFilter(sal_uInt16 nPos)293*b1cdbd2cSJim Jagielski bool SfxSaveTabPage::AcceptFilter( sal_uInt16 nPos )
294*b1cdbd2cSJim Jagielski {
295*b1cdbd2cSJim Jagielski const OUString* pFilters = pImpl->aFilterArr[nPos].getConstArray();
296*b1cdbd2cSJim Jagielski sal_Bool bAlien = sal_False, bODF = sal_False;
297*b1cdbd2cSJim Jagielski OUString* pUIFilters = pImpl->aUIFilterArr[nPos].getArray();
298*b1cdbd2cSJim Jagielski OUString sUIName;
299*b1cdbd2cSJim Jagielski for(int nFilter = 0; nFilter < pImpl->aFilterArr[nPos].getLength(); nFilter++)
300*b1cdbd2cSJim Jagielski {
301*b1cdbd2cSJim Jagielski if( pImpl->aDefaultArr[nPos] == pFilters[nFilter] )
302*b1cdbd2cSJim Jagielski {
303*b1cdbd2cSJim Jagielski bAlien = pImpl->aAlienArr[nPos][nFilter];
304*b1cdbd2cSJim Jagielski bODF = pImpl->aODFArr[nPos][nFilter];
305*b1cdbd2cSJim Jagielski sUIName = pUIFilters[nFilter];;
306*b1cdbd2cSJim Jagielski break;
307*b1cdbd2cSJim Jagielski }
308*b1cdbd2cSJim Jagielski }
309*b1cdbd2cSJim Jagielski bool bSet = true;
310*b1cdbd2cSJim Jagielski return bSet;
311*b1cdbd2cSJim Jagielski }
312*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
DetectHiddenControls()313*b1cdbd2cSJim Jagielski void SfxSaveTabPage::DetectHiddenControls()
314*b1cdbd2cSJim Jagielski {
315*b1cdbd2cSJim Jagielski long nDelta = 0;
316*b1cdbd2cSJim Jagielski // the index of the first child window which perhaps have to move upwards
317*b1cdbd2cSJim Jagielski sal_uInt16 nWinIndex = WININDEX_SAVEURL_RELFSYS;
318*b1cdbd2cSJim Jagielski SvtOptionsDialogOptions aOptionsDlgOpt;
319*b1cdbd2cSJim Jagielski
320*b1cdbd2cSJim Jagielski if ( aOptionsDlgOpt.IsOptionHidden( C2S("Backup"), CFG_PAGE_AND_GROUP ) )
321*b1cdbd2cSJim Jagielski {
322*b1cdbd2cSJim Jagielski // hide controls of "Backup"
323*b1cdbd2cSJim Jagielski aBackupFI.Hide();
324*b1cdbd2cSJim Jagielski aBackupCB.Hide();
325*b1cdbd2cSJim Jagielski // the other controls have to move upwards the height of checkbox + space
326*b1cdbd2cSJim Jagielski nDelta = aAutoSaveCB.GetPosPixel().Y() - aBackupCB.GetPosPixel().Y();
327*b1cdbd2cSJim Jagielski }
328*b1cdbd2cSJim Jagielski
329*b1cdbd2cSJim Jagielski if ( aOptionsDlgOpt.IsOptionHidden( C2S("AutoSave"), CFG_PAGE_AND_GROUP ) )
330*b1cdbd2cSJim Jagielski {
331*b1cdbd2cSJim Jagielski // hide controls of "AutoSave"
332*b1cdbd2cSJim Jagielski aAutoSaveCB.Hide();
333*b1cdbd2cSJim Jagielski aAutoSaveEdit.Hide();
334*b1cdbd2cSJim Jagielski aMinuteFT.Hide();
335*b1cdbd2cSJim Jagielski // the other controls have to move upwards the height of checkbox + space
336*b1cdbd2cSJim Jagielski nDelta += aRelativeFsysCB.GetPosPixel().Y() - aAutoSaveCB.GetPosPixel().Y();
337*b1cdbd2cSJim Jagielski }
338*b1cdbd2cSJim Jagielski else if ( nDelta > 0 )
339*b1cdbd2cSJim Jagielski // the "AutoSave" controls have to move upwards too
340*b1cdbd2cSJim Jagielski nWinIndex = WININDEX_AUTOSAVE;
341*b1cdbd2cSJim Jagielski
342*b1cdbd2cSJim Jagielski if ( nDelta > 0 )
343*b1cdbd2cSJim Jagielski {
344*b1cdbd2cSJim Jagielski sal_uInt16 i, nChildCount = GetChildCount();
345*b1cdbd2cSJim Jagielski for ( i = nWinIndex; i < nChildCount; ++i )
346*b1cdbd2cSJim Jagielski {
347*b1cdbd2cSJim Jagielski Window* pWin = GetChild(i);
348*b1cdbd2cSJim Jagielski Point aPos = pWin->GetPosPixel();
349*b1cdbd2cSJim Jagielski aPos.Y() -= nDelta;
350*b1cdbd2cSJim Jagielski pWin->SetPosPixel( aPos );
351*b1cdbd2cSJim Jagielski }
352*b1cdbd2cSJim Jagielski }
353*b1cdbd2cSJim Jagielski }
354*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
FillItemSet(SfxItemSet & rSet)355*b1cdbd2cSJim Jagielski sal_Bool SfxSaveTabPage::FillItemSet( SfxItemSet& rSet )
356*b1cdbd2cSJim Jagielski {
357*b1cdbd2cSJim Jagielski sal_Bool bModified = sal_False;
358*b1cdbd2cSJim Jagielski SvtSaveOptions aSaveOpt;
359*b1cdbd2cSJim Jagielski if(aLoadUserSettingsCB.IsChecked() != aLoadUserSettingsCB.GetSavedValue())
360*b1cdbd2cSJim Jagielski {
361*b1cdbd2cSJim Jagielski aSaveOpt.SetLoadUserSettings(aLoadUserSettingsCB.IsChecked());
362*b1cdbd2cSJim Jagielski }
363*b1cdbd2cSJim Jagielski
364*b1cdbd2cSJim Jagielski if ( aLoadDocPrinterCB.IsChecked() != aLoadDocPrinterCB.GetSavedValue() )
365*b1cdbd2cSJim Jagielski aSaveOpt.SetLoadDocumentPrinter( aLoadDocPrinterCB.IsChecked() );
366*b1cdbd2cSJim Jagielski
367*b1cdbd2cSJim Jagielski if ( aODFVersionLB.GetSelectEntryPos() != aODFVersionLB.GetSavedValue() )
368*b1cdbd2cSJim Jagielski {
369*b1cdbd2cSJim Jagielski long nVersion = long( aODFVersionLB.GetEntryData( aODFVersionLB.GetSelectEntryPos() ) );
370*b1cdbd2cSJim Jagielski aSaveOpt.SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion( nVersion ) );
371*b1cdbd2cSJim Jagielski }
372*b1cdbd2cSJim Jagielski
373*b1cdbd2cSJim Jagielski if ( aDocInfoCB.IsChecked() != aDocInfoCB.GetSavedValue() )
374*b1cdbd2cSJim Jagielski {
375*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_DOCINFO ),
376*b1cdbd2cSJim Jagielski aDocInfoCB.IsChecked() ) );
377*b1cdbd2cSJim Jagielski bModified |= sal_True;
378*b1cdbd2cSJim Jagielski }
379*b1cdbd2cSJim Jagielski
380*b1cdbd2cSJim Jagielski if ( aBackupCB.IsEnabled() && aBackupCB.IsChecked() != aBackupCB.GetSavedValue() )
381*b1cdbd2cSJim Jagielski {
382*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_BACKUP ),
383*b1cdbd2cSJim Jagielski aBackupCB.IsChecked() ) );
384*b1cdbd2cSJim Jagielski bModified |= sal_True;
385*b1cdbd2cSJim Jagielski }
386*b1cdbd2cSJim Jagielski
387*b1cdbd2cSJim Jagielski if ( aSizeOptimizationCB.IsChecked() != aSizeOptimizationCB.GetSavedValue() )
388*b1cdbd2cSJim Jagielski {
389*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_PRETTYPRINTING ), !aSizeOptimizationCB.IsChecked() ) );
390*b1cdbd2cSJim Jagielski bModified |= sal_True;
391*b1cdbd2cSJim Jagielski }
392*b1cdbd2cSJim Jagielski
393*b1cdbd2cSJim Jagielski if ( aAutoSaveCB.IsChecked() != aAutoSaveCB.GetSavedValue() )
394*b1cdbd2cSJim Jagielski {
395*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_AUTOSAVE ),
396*b1cdbd2cSJim Jagielski aAutoSaveCB.IsChecked() ) );
397*b1cdbd2cSJim Jagielski bModified |= sal_True;
398*b1cdbd2cSJim Jagielski }
399*b1cdbd2cSJim Jagielski if ( aWarnAlienFormatCB.IsChecked() != aWarnAlienFormatCB.GetSavedValue() )
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_WARNALIENFORMAT ),
402*b1cdbd2cSJim Jagielski aWarnAlienFormatCB.IsChecked() ) );
403*b1cdbd2cSJim Jagielski bModified |= sal_True;
404*b1cdbd2cSJim Jagielski }
405*b1cdbd2cSJim Jagielski
406*b1cdbd2cSJim Jagielski if ( aAutoSaveEdit.GetText() != aAutoSaveEdit.GetSavedValue() )
407*b1cdbd2cSJim Jagielski {
408*b1cdbd2cSJim Jagielski rSet.Put( SfxUInt16Item( GetWhich( SID_ATTR_AUTOSAVEMINUTE ),
409*b1cdbd2cSJim Jagielski (sal_uInt16)aAutoSaveEdit.GetValue() ) );
410*b1cdbd2cSJim Jagielski bModified |= sal_True;
411*b1cdbd2cSJim Jagielski }
412*b1cdbd2cSJim Jagielski // relativ speichern
413*b1cdbd2cSJim Jagielski if ( aRelativeFsysCB.IsChecked() != aRelativeFsysCB.GetSavedValue() )
414*b1cdbd2cSJim Jagielski {
415*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( GetWhich( SID_SAVEREL_FSYS ),
416*b1cdbd2cSJim Jagielski aRelativeFsysCB.IsChecked() ) );
417*b1cdbd2cSJim Jagielski bModified |= sal_True;
418*b1cdbd2cSJim Jagielski }
419*b1cdbd2cSJim Jagielski
420*b1cdbd2cSJim Jagielski if ( aRelativeInetCB.IsChecked() != aRelativeInetCB.GetSavedValue() )
421*b1cdbd2cSJim Jagielski {
422*b1cdbd2cSJim Jagielski rSet.Put( SfxBoolItem( GetWhich( SID_SAVEREL_INET ),
423*b1cdbd2cSJim Jagielski aRelativeInetCB.IsChecked() ) );
424*b1cdbd2cSJim Jagielski bModified |= sal_True;
425*b1cdbd2cSJim Jagielski }
426*b1cdbd2cSJim Jagielski
427*b1cdbd2cSJim Jagielski SvtModuleOptions aModuleOpt;
428*b1cdbd2cSJim Jagielski if(pImpl->aDefaultArr[APP_MATH].getLength() &&
429*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_MATH] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_MATH) &&
430*b1cdbd2cSJim Jagielski AcceptFilter( APP_MATH ))
431*b1cdbd2cSJim Jagielski aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_MATH, pImpl->aDefaultArr[APP_MATH]);
432*b1cdbd2cSJim Jagielski
433*b1cdbd2cSJim Jagielski if( pImpl->aDefaultArr[APP_DRAW].getLength() &&
434*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_DRAW] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_DRAW) &&
435*b1cdbd2cSJim Jagielski AcceptFilter( APP_DRAW ))
436*b1cdbd2cSJim Jagielski aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_DRAW, pImpl->aDefaultArr[APP_DRAW]);
437*b1cdbd2cSJim Jagielski
438*b1cdbd2cSJim Jagielski if(pImpl->aDefaultArr[APP_IMPRESS].getLength() &&
439*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_IMPRESS] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_IMPRESS)&&
440*b1cdbd2cSJim Jagielski AcceptFilter( APP_IMPRESS ))
441*b1cdbd2cSJim Jagielski aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_IMPRESS, pImpl->aDefaultArr[APP_IMPRESS]);
442*b1cdbd2cSJim Jagielski
443*b1cdbd2cSJim Jagielski if(pImpl->aDefaultArr[APP_CALC].getLength() &&
444*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_CALC] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_CALC)&&
445*b1cdbd2cSJim Jagielski AcceptFilter( APP_CALC ))
446*b1cdbd2cSJim Jagielski aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_CALC, pImpl->aDefaultArr[APP_CALC]);
447*b1cdbd2cSJim Jagielski
448*b1cdbd2cSJim Jagielski if(pImpl->aDefaultArr[APP_WRITER].getLength() &&
449*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_WRITER] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITER)&&
450*b1cdbd2cSJim Jagielski AcceptFilter( APP_WRITER))
451*b1cdbd2cSJim Jagielski aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_WRITER, pImpl->aDefaultArr[APP_WRITER]);
452*b1cdbd2cSJim Jagielski
453*b1cdbd2cSJim Jagielski if(pImpl->aDefaultArr[APP_WRITER_WEB].getLength() &&
454*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_WRITER_WEB] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERWEB)&&
455*b1cdbd2cSJim Jagielski AcceptFilter( APP_WRITER_WEB ))
456*b1cdbd2cSJim Jagielski aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_WRITERWEB, pImpl->aDefaultArr[APP_WRITER_WEB]);
457*b1cdbd2cSJim Jagielski
458*b1cdbd2cSJim Jagielski if(pImpl->aDefaultArr[APP_WRITER_GLOBAL].getLength() &&
459*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[APP_WRITER_GLOBAL] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERGLOBAL)&&
460*b1cdbd2cSJim Jagielski AcceptFilter( APP_WRITER_GLOBAL ))
461*b1cdbd2cSJim Jagielski aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_WRITERGLOBAL, pImpl->aDefaultArr[APP_WRITER_GLOBAL]);
462*b1cdbd2cSJim Jagielski
463*b1cdbd2cSJim Jagielski return bModified;
464*b1cdbd2cSJim Jagielski }
465*b1cdbd2cSJim Jagielski
466*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
467*b1cdbd2cSJim Jagielski
isODFFormat(OUString sFilter)468*b1cdbd2cSJim Jagielski sal_Bool isODFFormat( OUString sFilter )
469*b1cdbd2cSJim Jagielski {
470*b1cdbd2cSJim Jagielski static const char* aODFFormats[] =
471*b1cdbd2cSJim Jagielski {
472*b1cdbd2cSJim Jagielski "writer8",
473*b1cdbd2cSJim Jagielski "writer8_template",
474*b1cdbd2cSJim Jagielski "writerglobal8",
475*b1cdbd2cSJim Jagielski "writerglobal8_writer",
476*b1cdbd2cSJim Jagielski "calc8",
477*b1cdbd2cSJim Jagielski "calc8_template",
478*b1cdbd2cSJim Jagielski "draw8",
479*b1cdbd2cSJim Jagielski "draw8_template",
480*b1cdbd2cSJim Jagielski "impress8",
481*b1cdbd2cSJim Jagielski "impress8_template",
482*b1cdbd2cSJim Jagielski "impress8_draw",
483*b1cdbd2cSJim Jagielski "chart8",
484*b1cdbd2cSJim Jagielski "math8",
485*b1cdbd2cSJim Jagielski NULL
486*b1cdbd2cSJim Jagielski };
487*b1cdbd2cSJim Jagielski
488*b1cdbd2cSJim Jagielski sal_Bool bRet = sal_False;
489*b1cdbd2cSJim Jagielski int i = 0;
490*b1cdbd2cSJim Jagielski while ( aODFFormats[i] != NULL )
491*b1cdbd2cSJim Jagielski {
492*b1cdbd2cSJim Jagielski if ( sFilter.equalsAscii( aODFFormats[i++] ) )
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski bRet = sal_True;
495*b1cdbd2cSJim Jagielski break;
496*b1cdbd2cSJim Jagielski }
497*b1cdbd2cSJim Jagielski }
498*b1cdbd2cSJim Jagielski
499*b1cdbd2cSJim Jagielski return bRet;
500*b1cdbd2cSJim Jagielski }
501*b1cdbd2cSJim Jagielski
Reset(const SfxItemSet &)502*b1cdbd2cSJim Jagielski void SfxSaveTabPage::Reset( const SfxItemSet& )
503*b1cdbd2cSJim Jagielski {
504*b1cdbd2cSJim Jagielski SvtSaveOptions aSaveOpt;
505*b1cdbd2cSJim Jagielski aLoadUserSettingsCB.Check(aSaveOpt.IsLoadUserSettings());
506*b1cdbd2cSJim Jagielski aLoadUserSettingsCB.SaveValue();
507*b1cdbd2cSJim Jagielski aLoadDocPrinterCB.Check( aSaveOpt.IsLoadDocumentPrinter() );
508*b1cdbd2cSJim Jagielski aLoadDocPrinterCB.SaveValue();
509*b1cdbd2cSJim Jagielski
510*b1cdbd2cSJim Jagielski if ( !pImpl->bInitialized )
511*b1cdbd2cSJim Jagielski {
512*b1cdbd2cSJim Jagielski try
513*b1cdbd2cSJim Jagielski {
514*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > xMSF = comphelper::getProcessServiceFactory();
515*b1cdbd2cSJim Jagielski pImpl->xFact = Reference<XNameContainer>(
516*b1cdbd2cSJim Jagielski xMSF->createInstance(C2U("com.sun.star.document.FilterFactory")), UNO_QUERY);
517*b1cdbd2cSJim Jagielski
518*b1cdbd2cSJim Jagielski DBG_ASSERT(pImpl->xFact.is(), "service com.sun.star.document.FilterFactory unavailable");
519*b1cdbd2cSJim Jagielski Reference< XContainerQuery > xQuery(pImpl->xFact, UNO_QUERY);
520*b1cdbd2cSJim Jagielski if(xQuery.is())
521*b1cdbd2cSJim Jagielski {
522*b1cdbd2cSJim Jagielski for(sal_uInt16 n = 0; n < aDocTypeLB.GetEntryCount(); n++)
523*b1cdbd2cSJim Jagielski {
524*b1cdbd2cSJim Jagielski long nData = (long) aDocTypeLB.GetEntryData(n);
525*b1cdbd2cSJim Jagielski OUString sCommand;
526*b1cdbd2cSJim Jagielski sCommand = C2U("matchByDocumentService=%1:iflags=");
527*b1cdbd2cSJim Jagielski sCommand += String::CreateFromInt32(SFX_FILTER_IMPORT|SFX_FILTER_EXPORT);
528*b1cdbd2cSJim Jagielski sCommand += C2U(":eflags=");
529*b1cdbd2cSJim Jagielski sCommand += String::CreateFromInt32(SFX_FILTER_NOTINFILEDLG);
530*b1cdbd2cSJim Jagielski sCommand += C2U(":default_first");
531*b1cdbd2cSJim Jagielski String sReplace;
532*b1cdbd2cSJim Jagielski switch(nData)
533*b1cdbd2cSJim Jagielski {
534*b1cdbd2cSJim Jagielski case APP_WRITER : sReplace = C2U("com.sun.star.text.TextDocument"); break;
535*b1cdbd2cSJim Jagielski case APP_WRITER_WEB : sReplace = C2U("com.sun.star.text.WebDocument"); break;
536*b1cdbd2cSJim Jagielski case APP_WRITER_GLOBAL : sReplace = C2U("com.sun.star.text.GlobalDocument"); break;
537*b1cdbd2cSJim Jagielski case APP_CALC : sReplace = C2U("com.sun.star.sheet.SpreadsheetDocument");break;
538*b1cdbd2cSJim Jagielski case APP_IMPRESS : sReplace = C2U("com.sun.star.presentation.PresentationDocument");break;
539*b1cdbd2cSJim Jagielski case APP_DRAW : sReplace = C2U("com.sun.star.drawing.DrawingDocument");break;
540*b1cdbd2cSJim Jagielski case APP_MATH : sReplace = C2U("com.sun.star.formula.FormulaProperties");break;
541*b1cdbd2cSJim Jagielski default: DBG_ERROR("illegal user data");
542*b1cdbd2cSJim Jagielski }
543*b1cdbd2cSJim Jagielski String sTmp(sCommand);
544*b1cdbd2cSJim Jagielski sTmp.SearchAndReplaceAscii("%1", sReplace);
545*b1cdbd2cSJim Jagielski sCommand = sTmp;
546*b1cdbd2cSJim Jagielski Reference< XEnumeration > xList = xQuery->createSubSetEnumerationByQuery(sCommand);
547*b1cdbd2cSJim Jagielski SequenceAsVector< OUString > lList;
548*b1cdbd2cSJim Jagielski SequenceAsVector< sal_Bool > lAlienList;
549*b1cdbd2cSJim Jagielski SequenceAsVector< sal_Bool > lODFList;
550*b1cdbd2cSJim Jagielski while(xList->hasMoreElements())
551*b1cdbd2cSJim Jagielski {
552*b1cdbd2cSJim Jagielski SequenceAsHashMap aFilter(xList->nextElement());
553*b1cdbd2cSJim Jagielski OUString sFilter = aFilter.getUnpackedValueOrDefault(OUString::createFromAscii("Name"),OUString());
554*b1cdbd2cSJim Jagielski if (sFilter.getLength())
555*b1cdbd2cSJim Jagielski {
556*b1cdbd2cSJim Jagielski sal_Int32 nFlags = aFilter.getUnpackedValueOrDefault(OUString::createFromAscii("Flags"),sal_Int32());
557*b1cdbd2cSJim Jagielski lList.push_back(sFilter);
558*b1cdbd2cSJim Jagielski lAlienList.push_back(0 != (nFlags & SFX_FILTER_ALIEN));
559*b1cdbd2cSJim Jagielski lODFList.push_back( isODFFormat( sFilter ) );
560*b1cdbd2cSJim Jagielski }
561*b1cdbd2cSJim Jagielski }
562*b1cdbd2cSJim Jagielski pImpl->aFilterArr[nData] = lList.getAsConstList();
563*b1cdbd2cSJim Jagielski pImpl->aAlienArr[nData] = lAlienList.getAsConstList();
564*b1cdbd2cSJim Jagielski pImpl->aODFArr[nData] = lODFList.getAsConstList();
565*b1cdbd2cSJim Jagielski }
566*b1cdbd2cSJim Jagielski }
567*b1cdbd2cSJim Jagielski aDocTypeLB.SelectEntryPos(0);
568*b1cdbd2cSJim Jagielski FilterHdl_Impl(&aDocTypeLB);
569*b1cdbd2cSJim Jagielski }
570*b1cdbd2cSJim Jagielski catch(Exception& e)
571*b1cdbd2cSJim Jagielski {
572*b1cdbd2cSJim Jagielski (void) e;
573*b1cdbd2cSJim Jagielski DBG_ERROR(
574*b1cdbd2cSJim Jagielski rtl::OUStringToOString(
575*b1cdbd2cSJim Jagielski (rtl::OUString(
576*b1cdbd2cSJim Jagielski RTL_CONSTASCII_USTRINGPARAM(
577*b1cdbd2cSJim Jagielski "exception in FilterFactory access: ")) +
578*b1cdbd2cSJim Jagielski e.Message),
579*b1cdbd2cSJim Jagielski RTL_TEXTENCODING_UTF8).
580*b1cdbd2cSJim Jagielski getStr());
581*b1cdbd2cSJim Jagielski }
582*b1cdbd2cSJim Jagielski
583*b1cdbd2cSJim Jagielski pImpl->bInitialized = sal_True;
584*b1cdbd2cSJim Jagielski }
585*b1cdbd2cSJim Jagielski
586*b1cdbd2cSJim Jagielski aDocInfoCB.Check(aSaveOpt.IsDocInfoSave());
587*b1cdbd2cSJim Jagielski // aDocInfoCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_DOCINFSAVE));
588*b1cdbd2cSJim Jagielski
589*b1cdbd2cSJim Jagielski aBackupCB.Check(aSaveOpt.IsBackup());
590*b1cdbd2cSJim Jagielski sal_Bool bBackupRO = aSaveOpt.IsReadOnly(SvtSaveOptions::E_BACKUP);
591*b1cdbd2cSJim Jagielski aBackupCB.Enable(!bBackupRO);
592*b1cdbd2cSJim Jagielski aBackupFI.Show(bBackupRO);
593*b1cdbd2cSJim Jagielski
594*b1cdbd2cSJim Jagielski aAutoSaveCB.Check(aSaveOpt.IsAutoSave());
595*b1cdbd2cSJim Jagielski aWarnAlienFormatCB.Check(aSaveOpt.IsWarnAlienFormat());
596*b1cdbd2cSJim Jagielski aWarnAlienFormatCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_WARNALIENFORMAT));
597*b1cdbd2cSJim Jagielski // aAutoSaveCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_AUTOSAVE));
598*b1cdbd2cSJim Jagielski
599*b1cdbd2cSJim Jagielski // the pretty printing
600*b1cdbd2cSJim Jagielski aSizeOptimizationCB.Check( !aSaveOpt.IsPrettyPrinting());
601*b1cdbd2cSJim Jagielski // aSizeOptimizationCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_DOPRETTYPRINTING ));
602*b1cdbd2cSJim Jagielski
603*b1cdbd2cSJim Jagielski
604*b1cdbd2cSJim Jagielski aAutoSaveEdit.SetValue( aSaveOpt.GetAutoSaveTime() );
605*b1cdbd2cSJim Jagielski // aAutoSaveEdit.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_AUTOSAVETIME));
606*b1cdbd2cSJim Jagielski
607*b1cdbd2cSJim Jagielski // relativ speichern
608*b1cdbd2cSJim Jagielski aRelativeFsysCB.Check( aSaveOpt.IsSaveRelFSys() );
609*b1cdbd2cSJim Jagielski // aRelativeFsysCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_SAVERELFSYS));
610*b1cdbd2cSJim Jagielski
611*b1cdbd2cSJim Jagielski aRelativeInetCB.Check( aSaveOpt.IsSaveRelINet() );
612*b1cdbd2cSJim Jagielski // aRelativeInetCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_SAVERELINET));
613*b1cdbd2cSJim Jagielski
614*b1cdbd2cSJim Jagielski void* pDefaultVersion = (void*)long( aSaveOpt.GetODFDefaultVersion() );
615*b1cdbd2cSJim Jagielski aODFVersionLB.SelectEntryPos( aODFVersionLB.GetEntryPos( pDefaultVersion ) );
616*b1cdbd2cSJim Jagielski
617*b1cdbd2cSJim Jagielski AutoClickHdl_Impl( &aAutoSaveCB );
618*b1cdbd2cSJim Jagielski ODFVersionHdl_Impl( &aODFVersionLB );
619*b1cdbd2cSJim Jagielski
620*b1cdbd2cSJim Jagielski aDocInfoCB.SaveValue();
621*b1cdbd2cSJim Jagielski aBackupCB.SaveValue();
622*b1cdbd2cSJim Jagielski aWarnAlienFormatCB.SaveValue();
623*b1cdbd2cSJim Jagielski aSizeOptimizationCB.SaveValue();
624*b1cdbd2cSJim Jagielski aAutoSaveCB.SaveValue();
625*b1cdbd2cSJim Jagielski aAutoSaveEdit.SaveValue();
626*b1cdbd2cSJim Jagielski // aAutoSavePromptBtn.SaveValue();
627*b1cdbd2cSJim Jagielski
628*b1cdbd2cSJim Jagielski aRelativeFsysCB.SaveValue();
629*b1cdbd2cSJim Jagielski aRelativeInetCB.SaveValue();
630*b1cdbd2cSJim Jagielski aODFVersionLB.SaveValue();
631*b1cdbd2cSJim Jagielski }
632*b1cdbd2cSJim Jagielski
633*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
634*b1cdbd2cSJim Jagielski
IMPL_LINK(SfxSaveTabPage,AutoClickHdl_Impl,CheckBox *,pBox)635*b1cdbd2cSJim Jagielski IMPL_LINK( SfxSaveTabPage, AutoClickHdl_Impl, CheckBox *, pBox )
636*b1cdbd2cSJim Jagielski {
637*b1cdbd2cSJim Jagielski if ( pBox == &aAutoSaveCB )
638*b1cdbd2cSJim Jagielski {
639*b1cdbd2cSJim Jagielski if ( aAutoSaveCB.IsChecked() )
640*b1cdbd2cSJim Jagielski {
641*b1cdbd2cSJim Jagielski aAutoSaveEdit.Enable();
642*b1cdbd2cSJim Jagielski aMinuteFT.Enable();
643*b1cdbd2cSJim Jagielski // aAutoSavePromptBtn.Enable();
644*b1cdbd2cSJim Jagielski aAutoSaveEdit.GrabFocus();
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski else
647*b1cdbd2cSJim Jagielski {
648*b1cdbd2cSJim Jagielski aAutoSaveEdit.Disable();
649*b1cdbd2cSJim Jagielski aMinuteFT.Disable();
650*b1cdbd2cSJim Jagielski // aAutoSavePromptBtn.Disable();
651*b1cdbd2cSJim Jagielski }
652*b1cdbd2cSJim Jagielski }
653*b1cdbd2cSJim Jagielski return 0;
654*b1cdbd2cSJim Jagielski }
655*b1cdbd2cSJim Jagielski /* -----------------------------05.04.01 13:10--------------------------------
656*b1cdbd2cSJim Jagielski
657*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
lcl_ExtracUIName(const Sequence<PropertyValue> & rProperties)658*b1cdbd2cSJim Jagielski OUString lcl_ExtracUIName(const Sequence<PropertyValue> &rProperties)
659*b1cdbd2cSJim Jagielski {
660*b1cdbd2cSJim Jagielski OUString sName;
661*b1cdbd2cSJim Jagielski const PropertyValue* pPropVal = rProperties.getConstArray();
662*b1cdbd2cSJim Jagielski const PropertyValue* const pEnd = pPropVal + rProperties.getLength();
663*b1cdbd2cSJim Jagielski for( ; pPropVal != pEnd; pPropVal++ )
664*b1cdbd2cSJim Jagielski {
665*b1cdbd2cSJim Jagielski const OUString &rName = pPropVal->Name;
666*b1cdbd2cSJim Jagielski if( rName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "UIName" ) ) )
667*b1cdbd2cSJim Jagielski {
668*b1cdbd2cSJim Jagielski OUString sUIName;
669*b1cdbd2cSJim Jagielski if ( ( pPropVal->Value >>= sUIName ) && sUIName.getLength() )
670*b1cdbd2cSJim Jagielski return sUIName;
671*b1cdbd2cSJim Jagielski }
672*b1cdbd2cSJim Jagielski else if( rName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Name" ) ) )
673*b1cdbd2cSJim Jagielski {
674*b1cdbd2cSJim Jagielski pPropVal->Value >>= sName;
675*b1cdbd2cSJim Jagielski }
676*b1cdbd2cSJim Jagielski }
677*b1cdbd2cSJim Jagielski
678*b1cdbd2cSJim Jagielski OSL_ENSURE( false, "Filter without UIName!" );
679*b1cdbd2cSJim Jagielski
680*b1cdbd2cSJim Jagielski return sName;
681*b1cdbd2cSJim Jagielski }
682*b1cdbd2cSJim Jagielski /* -----------------------------05.04.01 13:37--------------------------------
683*b1cdbd2cSJim Jagielski
684*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
IMPL_LINK(SfxSaveTabPage,FilterHdl_Impl,ListBox *,pBox)685*b1cdbd2cSJim Jagielski IMPL_LINK( SfxSaveTabPage, FilterHdl_Impl, ListBox *, pBox )
686*b1cdbd2cSJim Jagielski {
687*b1cdbd2cSJim Jagielski sal_uInt16 nCurPos = aDocTypeLB.GetSelectEntryPos();
688*b1cdbd2cSJim Jagielski
689*b1cdbd2cSJim Jagielski long nData = -1;
690*b1cdbd2cSJim Jagielski if(nCurPos < APP_COUNT)
691*b1cdbd2cSJim Jagielski nData = (long) aDocTypeLB.GetEntryData(nCurPos);
692*b1cdbd2cSJim Jagielski
693*b1cdbd2cSJim Jagielski if ( nData >= 0 && nData < APP_COUNT )
694*b1cdbd2cSJim Jagielski {
695*b1cdbd2cSJim Jagielski if(&aDocTypeLB == pBox)
696*b1cdbd2cSJim Jagielski {
697*b1cdbd2cSJim Jagielski aSaveAsLB.Clear();
698*b1cdbd2cSJim Jagielski const OUString* pFilters = pImpl->aFilterArr[nData].getConstArray();
699*b1cdbd2cSJim Jagielski if(!pImpl->aUIFilterArr[nData].getLength())
700*b1cdbd2cSJim Jagielski {
701*b1cdbd2cSJim Jagielski pImpl->aUIFilterArr[nData].realloc(pImpl->aFilterArr[nData].getLength());
702*b1cdbd2cSJim Jagielski OUString* pUIFilters = pImpl->aUIFilterArr[nData].getArray();
703*b1cdbd2cSJim Jagielski for(int nFilter = 0; nFilter < pImpl->aFilterArr[nData].getLength(); nFilter++)
704*b1cdbd2cSJim Jagielski {
705*b1cdbd2cSJim Jagielski Any aProps = pImpl->xFact->getByName(pFilters[nFilter]);
706*b1cdbd2cSJim Jagielski Sequence<PropertyValue> aProperties;
707*b1cdbd2cSJim Jagielski aProps >>= aProperties;
708*b1cdbd2cSJim Jagielski pUIFilters[nFilter] = lcl_ExtracUIName(aProperties);
709*b1cdbd2cSJim Jagielski }
710*b1cdbd2cSJim Jagielski }
711*b1cdbd2cSJim Jagielski const OUString* pUIFilters = pImpl->aUIFilterArr[nData].getConstArray();
712*b1cdbd2cSJim Jagielski OUString sSelect;
713*b1cdbd2cSJim Jagielski for(int i = 0; i < pImpl->aUIFilterArr[nData].getLength(); i++)
714*b1cdbd2cSJim Jagielski {
715*b1cdbd2cSJim Jagielski sal_uInt16 nEntryPos = aSaveAsLB.InsertEntry(pUIFilters[i]);
716*b1cdbd2cSJim Jagielski if ( pImpl->aODFArr[nData][i] )
717*b1cdbd2cSJim Jagielski aSaveAsLB.SetEntryData( nEntryPos, (void*)pImpl );
718*b1cdbd2cSJim Jagielski if(pFilters[i] == pImpl->aDefaultArr[nData])
719*b1cdbd2cSJim Jagielski sSelect = pUIFilters[i];
720*b1cdbd2cSJim Jagielski }
721*b1cdbd2cSJim Jagielski if(sSelect.getLength())
722*b1cdbd2cSJim Jagielski aSaveAsLB.SelectEntry(sSelect);
723*b1cdbd2cSJim Jagielski aSaveAsFI.Show(pImpl->aDefaultReadonlyArr[nData]);
724*b1cdbd2cSJim Jagielski aSaveAsFT.Enable(!pImpl->aDefaultReadonlyArr[nData]);
725*b1cdbd2cSJim Jagielski aSaveAsLB.Enable(!pImpl->aDefaultReadonlyArr[nData]);
726*b1cdbd2cSJim Jagielski }
727*b1cdbd2cSJim Jagielski else
728*b1cdbd2cSJim Jagielski {
729*b1cdbd2cSJim Jagielski OUString sSelect = pBox->GetSelectEntry();
730*b1cdbd2cSJim Jagielski const OUString* pFilters = pImpl->aFilterArr[nData].getConstArray();
731*b1cdbd2cSJim Jagielski OUString* pUIFilters = pImpl->aUIFilterArr[nData].getArray();
732*b1cdbd2cSJim Jagielski for(int i = 0; i < pImpl->aUIFilterArr[nData].getLength(); i++)
733*b1cdbd2cSJim Jagielski if(pUIFilters[i] == sSelect)
734*b1cdbd2cSJim Jagielski {
735*b1cdbd2cSJim Jagielski sSelect = pFilters[i];
736*b1cdbd2cSJim Jagielski break;
737*b1cdbd2cSJim Jagielski }
738*b1cdbd2cSJim Jagielski
739*b1cdbd2cSJim Jagielski pImpl->aDefaultArr[nData] = sSelect;
740*b1cdbd2cSJim Jagielski }
741*b1cdbd2cSJim Jagielski }
742*b1cdbd2cSJim Jagielski
743*b1cdbd2cSJim Jagielski ODFVersionHdl_Impl( &aSaveAsLB );
744*b1cdbd2cSJim Jagielski return 0;
745*b1cdbd2cSJim Jagielski };
746*b1cdbd2cSJim Jagielski
IMPL_LINK(SfxSaveTabPage,ODFVersionHdl_Impl,ListBox *,EMPTYARG)747*b1cdbd2cSJim Jagielski IMPL_LINK( SfxSaveTabPage, ODFVersionHdl_Impl, ListBox *, EMPTYARG )
748*b1cdbd2cSJim Jagielski {
749*b1cdbd2cSJim Jagielski long nVersion = long( aODFVersionLB.GetEntryData( aODFVersionLB.GetSelectEntryPos() ) );
750*b1cdbd2cSJim Jagielski bool bShown = SvtSaveOptions::ODFDefaultVersion( nVersion ) != SvtSaveOptions::ODFVER_LATEST;
751*b1cdbd2cSJim Jagielski if ( bShown )
752*b1cdbd2cSJim Jagielski {
753*b1cdbd2cSJim Jagielski bool bHasODFFormat = false;
754*b1cdbd2cSJim Jagielski sal_uInt16 i = 0, nCount = aSaveAsLB.GetEntryCount();
755*b1cdbd2cSJim Jagielski for ( ; i < nCount; ++ i )
756*b1cdbd2cSJim Jagielski {
757*b1cdbd2cSJim Jagielski if ( aSaveAsLB.GetEntryData(i) != NULL )
758*b1cdbd2cSJim Jagielski {
759*b1cdbd2cSJim Jagielski bHasODFFormat = true;
760*b1cdbd2cSJim Jagielski break;
761*b1cdbd2cSJim Jagielski }
762*b1cdbd2cSJim Jagielski }
763*b1cdbd2cSJim Jagielski
764*b1cdbd2cSJim Jagielski bShown = !bHasODFFormat
765*b1cdbd2cSJim Jagielski || ( aSaveAsLB.GetEntryData( aSaveAsLB.GetSelectEntryPos() ) != NULL );
766*b1cdbd2cSJim Jagielski }
767*b1cdbd2cSJim Jagielski
768*b1cdbd2cSJim Jagielski aODFWarningFI.Show( bShown );
769*b1cdbd2cSJim Jagielski aODFWarningFT.Show( bShown );
770*b1cdbd2cSJim Jagielski
771*b1cdbd2cSJim Jagielski return 0;
772*b1cdbd2cSJim Jagielski }
773*b1cdbd2cSJim Jagielski
774