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