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