summaryrefslogtreecommitdiff
path: root/svx/source/cui/optsave.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/cui/optsave.cxx')
-rw-r--r--svx/source/cui/optsave.cxx826
1 files changed, 0 insertions, 826 deletions
diff --git a/svx/source/cui/optsave.cxx b/svx/source/cui/optsave.cxx
deleted file mode 100644
index e076c66e1d..0000000000
--- a/svx/source/cui/optsave.cxx
+++ /dev/null
@@ -1,826 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: optsave.cxx,v $
- * $Revision: 1.21 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svx.hxx"
-
-#ifdef SVX_DLLIMPLEMENTATION
-#undef SVX_DLLIMPLEMENTATION
-#endif
-
-// include ---------------------------------------------------------------
-#include <tools/shl.hxx>
-#include <svtools/eitem.hxx>
-#include <svtools/intitem.hxx>
-#define _SVX_OPTSAVE_CXX
-
-#include "optsave.hrc"
-#include <svx/dialogs.hrc>
-
-#include "optsave.hxx"
-#include <svx/dialmgr.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/sequenceasvector.hxx>
-#include <comphelper/sequenceashashmap.hxx>
-#include <svtools/moduleoptions.hxx>
-#include <svtools/saveopt.hxx>
-#include <comphelper/sequenceasvector.hxx>
-#include <comphelper/sequenceashashmap.hxx>
-#include <com/sun/star/container/XContainerQuery.hpp>
-#include <com/sun/star/container/XEnumeration.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XContainerQuery.hpp>
-#include <com/sun/star/container/XEnumeration.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/util/XFlushable.hpp>
-#include <sfx2/docfilt.hxx>
-#include <svtools/stdctrl.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/msgbox.hxx>
-#include <unotools/configitem.hxx>
-#include <svtools/optionsdlg.hxx>
-
-#include <vcl/msgbox.hxx>
-
-using namespace com::sun::star::uno;
-using namespace com::sun::star::util;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::container;
-using namespace comphelper;
-using rtl::OUString;
-
-#define C2U(cChar) OUString::createFromAscii(cChar)
-#define C2S(cChar) String( RTL_CONSTASCII_STRINGPARAM(cChar) )
-#define CFG_PAGE_AND_GROUP C2S("General"), C2S("LoadSave")
-// !! you have to update these index, if you changed the list of the child windows !!
-#define WININDEX_AUTOSAVE ((USHORT)6)
-#define WININDEX_SAVEURL_RELFSYS ((USHORT)9)
-
-// -------------------- --------------------------------------------------
-class FilterWarningDialog_Impl : public ModalDialog
-{
- OKButton aOk;
- CancelButton aCancel;
- FixedImage aImage;
- FixedInfo aFilterWarningFT;
-
- public:
- FilterWarningDialog_Impl(Window* pParent);
-
- void SetFilterName(const String& rFilterUIName);
-};
-// ----------------------------------------------------------------------
-FilterWarningDialog_Impl::FilterWarningDialog_Impl(Window* pParent) :
- ModalDialog(pParent, SVX_RES( RID_SVXDLG_FILTER_WARNING ) ),
- aOk( this, SVX_RES(PB_OK )),
- aCancel( this, SVX_RES(PB_CANCEL )),
- aImage( this, SVX_RES(IMG_WARNING )),
- aFilterWarningFT( this, SVX_RES(FT_FILTER_WARNING ))
-{
- FreeResource();
- aImage.SetImage(WarningBox::GetStandardImage());
-}
-// ----------------------------------------------------------------------
-void FilterWarningDialog_Impl::SetFilterName(const String& rFilterUIName)
-{
- String sTmp(aFilterWarningFT.GetText());
- sTmp.SearchAndReplaceAscii("%1", rFilterUIName);
- aFilterWarningFT.SetText(sTmp);
-}
-// ----------------------------------------------------------------------
-#ifdef FILTER_WARNING_ENABLED
-class SvxAlienFilterWarningConfig_Impl : public utl::ConfigItem
-{
- sal_Bool bWarning;
- com::sun::star::uno::Sequence< OUString > aPropNames;
-
- public:
- SvxAlienFilterWarningConfig_Impl();
- ~SvxAlienFilterWarningConfig_Impl();
-
- virtual void Commit();
-
- void ResetWarning()
- {
- if(bWarning)
- {
- bWarning = sal_False;
- ConfigItem::SetModified();
- }
-
- }
- sal_Bool IsWarning()const{return bWarning;}
-};
-// ----------------------------------------------------------------------
-SvxAlienFilterWarningConfig_Impl::SvxAlienFilterWarningConfig_Impl() :
- ConfigItem(C2U("TypeDetection.Misc/Defaults"),
- CONFIG_MODE_IMMEDIATE_UPDATE),
- aPropNames(1),
- bWarning(sal_True)
-{
- aPropNames.getArray()[0] = C2U("ShowAlienFilterWarning");
- Sequence<Any> aValues = GetProperties(aPropNames);
- const Any* pValues = aValues.getConstArray();
- DBG_ASSERT(aValues.getLength() == aPropNames.getLength(), "GetProperties failed");
- if(aValues.getLength() == aPropNames.getLength() &&
- pValues[0].hasValue() &&
- pValues[0].getValueType() == ::getBooleanCppuType())
- bWarning = *(sal_Bool*)pValues[0].getValue();
-}
-// ----------------------------------------------------------------------
-SvxAlienFilterWarningConfig_Impl::~SvxAlienFilterWarningConfig_Impl()
-{
- if(IsModified())
- Commit();
-}
-// ----------------------------------------------------------------------
-void SvxAlienFilterWarningConfig_Impl::Commit()
-{
- Sequence<Any> aValues(aPropNames.getLength());
- Any* pValues = aValues.getArray();
- pValues[0].setValue(&bWarning, ::getBooleanCppuType());
- PutProperties(aPropNames, aValues);
-}
-#endif // FILTER_WARNING_ENABLED
-// ----------------------------------------------------------------------
-// ----------------------------------------------------------------------
-
-struct SvxSaveTabPage_Impl
-{
- Reference< XNameContainer > xFact;
- Sequence< OUString > aFilterArr[APP_COUNT];
- Sequence< sal_Bool > aAlienArr[APP_COUNT];
- Sequence< sal_Bool > aODFArr[APP_COUNT];
- Sequence< OUString > aUIFilterArr[APP_COUNT];
- OUString aDefaultArr[APP_COUNT];
- sal_Bool aDefaultReadonlyArr[APP_COUNT];
- sal_Bool bInitialized;
-
- SvxSaveTabPage_Impl();
- ~SvxSaveTabPage_Impl();
-};
-
-SvxSaveTabPage_Impl::SvxSaveTabPage_Impl() : bInitialized( sal_False )
-{
-}
-
-SvxSaveTabPage_Impl::~SvxSaveTabPage_Impl()
-{
-}
-
-// class SvxSaveTabPage --------------------------------------------------
-
-SfxSaveTabPage::SfxSaveTabPage( Window* pParent, const SfxItemSet& rCoreSet ) :
-
- SfxTabPage( pParent, SVX_RES( RID_SFXPAGE_SAVE ), rCoreSet ),
-
- aLoadFL ( this, SVX_RES( LB_LOAD ) ),
- aLoadUserSettingsCB ( this, SVX_RES( CB_LOAD_SETTINGS ) ),
- aLoadDocPrinterCB ( this, SVX_RES( CB_LOAD_DOCPRINTER ) ),
-
- aSaveFL ( this, SVX_RES( GB_SAVE ) ),
- aDocInfoCB ( this, SVX_RES( BTN_DOCINFO ) ),
- aBackupFI ( this, SVX_RES( FI_BACKUP ) ),
- aBackupCB ( this, SVX_RES( BTN_BACKUP ) ),
- aAutoSaveCB ( this, SVX_RES( BTN_AUTOSAVE ) ),
- aAutoSaveEdit ( this, SVX_RES( ED_AUTOSAVE ) ),
- aMinuteFT ( this, SVX_RES( FT_MINUTE ) ),
- aRelativeFsysCB ( this, SVX_RES( BTN_RELATIVE_FSYS ) ),
- aRelativeInetCB ( this, SVX_RES( BTN_RELATIVE_INET ) ),
-
- aDefaultFormatFL ( this, SVX_RES( FL_FILTER ) ),
- aODFVersionFT ( this, SVX_RES( FT_ODF_VERSION ) ),
- aODFVersionLB ( this, SVX_RES( LB_ODF_VERSION ) ),
- aSizeOptimizationCB ( this, SVX_RES( BTN_NOPRETTYPRINTING ) ),
- aWarnAlienFormatCB ( this, SVX_RES( BTN_WARNALIENFORMAT ) ),
- aDocTypeFT ( this, SVX_RES( FT_APP ) ),
- aDocTypeLB ( this, SVX_RES( LB_APP ) ),
- aSaveAsFT ( this, SVX_RES( FT_FILTER ) ),
- aSaveAsFI ( this, SVX_RES( FI_FILTER ) ),
- aSaveAsLB ( this, SVX_RES( LB_FILTER ) ),
- aODFWarningFI ( this, SVX_RES( FI_ODF_WARNING ) ),
- aODFWarningFT ( this, SVX_RES( FT_WARN ) ),
-
- pImpl ( new SvxSaveTabPage_Impl )
-
-{
- sal_Bool bHighContrast = GetSettings().GetStyleSettings().GetHighContrastMode();
- aODFWarningFI.SetImage(
- Image( SVX_RES( bHighContrast ? IMG_ODF_WARNING_HC : IMG_ODF_WARNING ) ) );
-
- FreeResource();
-
- Link aLink = LINK( this, SfxSaveTabPage, AutoClickHdl_Impl );
- aAutoSaveCB.SetClickHdl( aLink );
- aAutoSaveEdit.SetMaxTextLen( 2 );
-
- SvtModuleOptions aModuleOpt;
- if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SMATH ) )
- {
- aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_MATH ));
- aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_MATH ));
- }
- else
- {
- pImpl->aDefaultArr[APP_MATH] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_MATH);
- pImpl->aDefaultReadonlyArr[APP_MATH] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_MATH);
- }
-
- if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SDRAW ) )
- {
- aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_DRAW ));
- aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_DRAW ));
- }
- else
- {
- pImpl->aDefaultArr[APP_DRAW] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_DRAW);
- pImpl->aDefaultReadonlyArr[APP_DRAW] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_DRAW);
- }
-
- if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SIMPRESS ) )
- {
- aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_IMPRESS ));
- aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_IMPRESS ));
- }
- else
- {
- pImpl->aDefaultArr[APP_IMPRESS] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_IMPRESS);
- pImpl->aDefaultReadonlyArr[APP_IMPRESS] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_IMPRESS);
- }
-
- if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SCALC ) )
- {
- aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_CALC ));
- aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_CALC ));
- }
- else
- {
- pImpl->aDefaultArr[APP_CALC] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_CALC);
- pImpl->aDefaultReadonlyArr[APP_CALC] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_CALC);
- }
-
- if ( !aModuleOpt.IsModuleInstalled( SvtModuleOptions::E_SWRITER ) )
- {
- aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_WRITER ));
- aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_WRITER_WEB ));
- aSaveAsLB.RemoveEntry(aSaveAsLB.GetEntryPos( (void*) APP_WRITER_GLOBAL ));
- aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_WRITER ));
- aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_WRITER_WEB ));
- aDocTypeLB.RemoveEntry(aDocTypeLB.GetEntryPos( (void*) APP_WRITER_GLOBAL ));
- }
- else
- {
- pImpl->aDefaultArr[APP_WRITER] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITER);
- pImpl->aDefaultArr[APP_WRITER_WEB] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERWEB);
- pImpl->aDefaultArr[APP_WRITER_GLOBAL] = aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERGLOBAL);
- pImpl->aDefaultReadonlyArr[APP_WRITER] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_WRITER);
- pImpl->aDefaultReadonlyArr[APP_WRITER_WEB] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_WRITERWEB);
- pImpl->aDefaultReadonlyArr[APP_WRITER_GLOBAL] = aModuleOpt.IsDefaultFilterReadonly(SvtModuleOptions::E_WRITERGLOBAL);
- }
-
- aLink = LINK( this, SfxSaveTabPage, ODFVersionHdl_Impl );
- aODFVersionLB.SetSelectHdl( aLink );
- aLink = LINK( this, SfxSaveTabPage, FilterHdl_Impl );
- aDocTypeLB.SetSelectHdl( aLink );
- aSaveAsLB.SetSelectHdl( aLink );
-
- DetectHiddenControls();
-}
-
-// -----------------------------------------------------------------------
-
-SfxSaveTabPage::~SfxSaveTabPage()
-{
- delete pImpl;
-}
-
-// -----------------------------------------------------------------------
-
-SfxTabPage* SfxSaveTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet )
-{
- return ( new SfxSaveTabPage( pParent, rAttrSet ) );
-}
-
-/* -----------------------------05.04.01 13:10--------------------------------
-
- ---------------------------------------------------------------------------*/
-OUString lcl_ExtractUIName(const Sequence<PropertyValue> rProperties)
-{
- OUString sRet;
- const PropertyValue* pProperties = rProperties.getConstArray();
- for(int nProp = 0; nProp < rProperties.getLength(); nProp++)
- {
- if(!pProperties[nProp].Name.compareToAscii("UIName"))
- {
- pProperties[nProp].Value >>= sRet;
- break;
- }
- }
- return sRet;
-}
-// -----------------------------------------------------------------------
-bool SfxSaveTabPage::AcceptFilter( USHORT nPos )
-{
- const OUString* pFilters = pImpl->aFilterArr[nPos].getConstArray();
- sal_Bool bAlien = sal_False, bODF = sal_False;
- OUString* pUIFilters = pImpl->aUIFilterArr[nPos].getArray();
- OUString sUIName;
- for(int nFilter = 0; nFilter < pImpl->aFilterArr[nPos].getLength(); nFilter++)
- {
- if( pImpl->aDefaultArr[nPos] == pFilters[nFilter] )
- {
- bAlien = pImpl->aAlienArr[nPos][nFilter];
- bODF = pImpl->aODFArr[nPos][nFilter];
- sUIName = pUIFilters[nFilter];;
- break;
- }
- }
- bool bSet = true;
- return bSet;
-}
-// -----------------------------------------------------------------------
-void SfxSaveTabPage::DetectHiddenControls()
-{
- long nDelta = 0;
- // the index of the first child window which perhaps have to move upwards
- USHORT nWinIndex = WININDEX_SAVEURL_RELFSYS;
- SvtOptionsDialogOptions aOptionsDlgOpt;
-
- if ( aOptionsDlgOpt.IsOptionHidden( C2S("Backup"), CFG_PAGE_AND_GROUP ) )
- {
- // hide controls of "Backup"
- aBackupFI.Hide();
- aBackupCB.Hide();
- // the other controls have to move upwards the height of checkbox + space
- nDelta = aAutoSaveCB.GetPosPixel().Y() - aBackupCB.GetPosPixel().Y();
- }
-
- if ( aOptionsDlgOpt.IsOptionHidden( C2S("AutoSave"), CFG_PAGE_AND_GROUP ) )
- {
- // hide controls of "AutoSave"
- aAutoSaveCB.Hide();
- aAutoSaveEdit.Hide();
- aMinuteFT.Hide();
- // the other controls have to move upwards the height of checkbox + space
- nDelta += aRelativeFsysCB.GetPosPixel().Y() - aAutoSaveCB.GetPosPixel().Y();
- }
- else if ( nDelta > 0 )
- // the "AutoSave" controls have to move upwards too
- nWinIndex = WININDEX_AUTOSAVE;
-
- if ( nDelta > 0 )
- {
- USHORT i, nChildCount = GetChildCount();
- for ( i = nWinIndex; i < nChildCount; ++i )
- {
- Window* pWin = GetChild(i);
- Point aPos = pWin->GetPosPixel();
- aPos.Y() -= nDelta;
- pWin->SetPosPixel( aPos );
- }
- }
-}
-// -----------------------------------------------------------------------
-BOOL SfxSaveTabPage::FillItemSet( SfxItemSet& rSet )
-{
- BOOL bModified = FALSE;
- SvtSaveOptions aSaveOpt;
- if(aLoadUserSettingsCB.IsChecked() != aLoadUserSettingsCB.GetSavedValue())
- {
- aSaveOpt.SetLoadUserSettings(aLoadUserSettingsCB.IsChecked());
- }
-
- if ( aLoadDocPrinterCB.IsChecked() != aLoadDocPrinterCB.GetSavedValue() )
- aSaveOpt.SetLoadDocumentPrinter( aLoadDocPrinterCB.IsChecked() );
-
- if ( aODFVersionLB.GetSelectEntryPos() != aODFVersionLB.GetSavedValue() )
- {
- long nVersion = long( aODFVersionLB.GetEntryData( aODFVersionLB.GetSelectEntryPos() ) );
- aSaveOpt.SetODFDefaultVersion( SvtSaveOptions::ODFDefaultVersion( nVersion ) );
- }
-
- if ( aDocInfoCB.IsChecked() != aDocInfoCB.GetSavedValue() )
- {
- rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_DOCINFO ),
- aDocInfoCB.IsChecked() ) );
- bModified |= TRUE;
- }
-
- if ( aBackupCB.IsEnabled() && aBackupCB.IsChecked() != aBackupCB.GetSavedValue() )
- {
- rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_BACKUP ),
- aBackupCB.IsChecked() ) );
- bModified |= TRUE;
- }
-
- if ( aSizeOptimizationCB.IsChecked() != aSizeOptimizationCB.GetSavedValue() )
- {
- rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_PRETTYPRINTING ), !aSizeOptimizationCB.IsChecked() ) );
- bModified |= TRUE;
- }
-
- if ( aAutoSaveCB.IsChecked() != aAutoSaveCB.GetSavedValue() )
- {
- rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_AUTOSAVE ),
- aAutoSaveCB.IsChecked() ) );
- bModified |= TRUE;
- }
- if ( aWarnAlienFormatCB.IsChecked() != aWarnAlienFormatCB.GetSavedValue() )
- {
- rSet.Put( SfxBoolItem( GetWhich( SID_ATTR_WARNALIENFORMAT ),
- aWarnAlienFormatCB.IsChecked() ) );
- bModified |= TRUE;
- }
-
- if ( aAutoSaveEdit.GetText() != aAutoSaveEdit.GetSavedValue() )
- {
- rSet.Put( SfxUInt16Item( GetWhich( SID_ATTR_AUTOSAVEMINUTE ),
- (UINT16)aAutoSaveEdit.GetValue() ) );
- bModified |= TRUE;
- }
- // relativ speichern
- if ( aRelativeFsysCB.IsChecked() != aRelativeFsysCB.GetSavedValue() )
- {
- rSet.Put( SfxBoolItem( GetWhich( SID_SAVEREL_FSYS ),
- aRelativeFsysCB.IsChecked() ) );
- bModified |= TRUE;
- }
-
- if ( aRelativeInetCB.IsChecked() != aRelativeInetCB.GetSavedValue() )
- {
- rSet.Put( SfxBoolItem( GetWhich( SID_SAVEREL_INET ),
- aRelativeInetCB.IsChecked() ) );
- bModified |= TRUE;
- }
-
- SvtModuleOptions aModuleOpt;
- if(pImpl->aDefaultArr[APP_MATH].getLength() &&
- pImpl->aDefaultArr[APP_MATH] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_MATH) &&
- AcceptFilter( APP_MATH ))
- aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_MATH, pImpl->aDefaultArr[APP_MATH]);
-
- if( pImpl->aDefaultArr[APP_DRAW].getLength() &&
- pImpl->aDefaultArr[APP_DRAW] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_DRAW) &&
- AcceptFilter( APP_DRAW ))
- aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_DRAW, pImpl->aDefaultArr[APP_DRAW]);
-
- if(pImpl->aDefaultArr[APP_IMPRESS].getLength() &&
- pImpl->aDefaultArr[APP_IMPRESS] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_IMPRESS)&&
- AcceptFilter( APP_IMPRESS ))
- aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_IMPRESS, pImpl->aDefaultArr[APP_IMPRESS]);
-
- if(pImpl->aDefaultArr[APP_CALC].getLength() &&
- pImpl->aDefaultArr[APP_CALC] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_CALC)&&
- AcceptFilter( APP_CALC ))
- aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_CALC, pImpl->aDefaultArr[APP_CALC]);
-
- if(pImpl->aDefaultArr[APP_WRITER].getLength() &&
- pImpl->aDefaultArr[APP_WRITER] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITER)&&
- AcceptFilter( APP_WRITER))
- aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_WRITER, pImpl->aDefaultArr[APP_WRITER]);
-
- if(pImpl->aDefaultArr[APP_WRITER_WEB].getLength() &&
- pImpl->aDefaultArr[APP_WRITER_WEB] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERWEB)&&
- AcceptFilter( APP_WRITER_WEB ))
- aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_WRITERWEB, pImpl->aDefaultArr[APP_WRITER_WEB]);
-
- if(pImpl->aDefaultArr[APP_WRITER_GLOBAL].getLength() &&
- pImpl->aDefaultArr[APP_WRITER_GLOBAL] != aModuleOpt.GetFactoryDefaultFilter(SvtModuleOptions::E_WRITERGLOBAL)&&
- AcceptFilter( APP_WRITER_GLOBAL ))
- aModuleOpt.SetFactoryDefaultFilter(SvtModuleOptions::E_WRITERGLOBAL, pImpl->aDefaultArr[APP_WRITER_GLOBAL]);
-
- return bModified;
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool isODFFormat( OUString sFilter )
-{
- static const char* aODFFormats[] =
- {
- "writer8",
- "writer8_template",
- "writerglobal8",
- "writerglobal8_writer",
- "calc8",
- "calc8_template",
- "draw8",
- "draw8_template",
- "impress8",
- "impress8_template",
- "impress8_draw",
- "chart8",
- "math8",
- NULL
- };
-
- sal_Bool bRet = sal_False;
- int i = 0;
- while ( aODFFormats[i] != NULL )
- {
- if ( sFilter.equalsAscii( aODFFormats[i++] ) )
- {
- bRet = sal_True;
- break;
- }
- }
-
- return bRet;
-}
-
-void SfxSaveTabPage::Reset( const SfxItemSet& )
-{
- SvtSaveOptions aSaveOpt;
- aLoadUserSettingsCB.Check(aSaveOpt.IsLoadUserSettings());
- aLoadUserSettingsCB.SaveValue();
- aLoadDocPrinterCB.Check( aSaveOpt.IsLoadDocumentPrinter() );
- aLoadDocPrinterCB.SaveValue();
-
- if ( !pImpl->bInitialized )
- {
- try
- {
- Reference< XMultiServiceFactory > xMSF = comphelper::getProcessServiceFactory();
- pImpl->xFact = Reference<XNameContainer>(
- xMSF->createInstance(C2U("com.sun.star.document.FilterFactory")), UNO_QUERY);
-
- DBG_ASSERT(pImpl->xFact.is(), "service com.sun.star.document.FilterFactory unavailable");
- Reference< XContainerQuery > xQuery(pImpl->xFact, UNO_QUERY);
- if(xQuery.is())
- {
- for(USHORT n = 0; n < aDocTypeLB.GetEntryCount(); n++)
- {
- long nData = (long) aDocTypeLB.GetEntryData(n);
- OUString sCommand;
- sCommand = C2U("matchByDocumentService=%1:iflags=");
- sCommand += String::CreateFromInt32(SFX_FILTER_IMPORT|SFX_FILTER_EXPORT);
- sCommand += C2U(":eflags=");
- sCommand += String::CreateFromInt32(SFX_FILTER_NOTINFILEDLG);
- sCommand += C2U(":default_first");
- String sReplace;
- switch(nData)
- {
- case APP_WRITER : sReplace = C2U("com.sun.star.text.TextDocument"); break;
- case APP_WRITER_WEB : sReplace = C2U("com.sun.star.text.WebDocument"); break;
- case APP_WRITER_GLOBAL : sReplace = C2U("com.sun.star.text.GlobalDocument"); break;
- case APP_CALC : sReplace = C2U("com.sun.star.sheet.SpreadsheetDocument");break;
- case APP_IMPRESS : sReplace = C2U("com.sun.star.presentation.PresentationDocument");break;
- case APP_DRAW : sReplace = C2U("com.sun.star.drawing.DrawingDocument");break;
- case APP_MATH : sReplace = C2U("com.sun.star.formula.FormulaProperties");break;
- default: DBG_ERROR("illegal user data");
- }
- String sTmp(sCommand);
- sTmp.SearchAndReplaceAscii("%1", sReplace);
- sCommand = sTmp;
- Reference< XEnumeration > xList = xQuery->createSubSetEnumerationByQuery(sCommand);
- SequenceAsVector< OUString > lList;
- SequenceAsVector< sal_Bool > lAlienList;
- SequenceAsVector< sal_Bool > lODFList;
- while(xList->hasMoreElements())
- {
- SequenceAsHashMap aFilter(xList->nextElement());
- OUString sFilter = aFilter.getUnpackedValueOrDefault(OUString::createFromAscii("Name"),OUString());
- if (sFilter.getLength())
- {
- sal_Int32 nFlags = aFilter.getUnpackedValueOrDefault(OUString::createFromAscii("Flags"),sal_Int32());
- lList.push_back(sFilter);
- lAlienList.push_back(0 != (nFlags & SFX_FILTER_ALIEN));
- lODFList.push_back( isODFFormat( sFilter ) );
- }
- }
- pImpl->aFilterArr[nData] = lList.getAsConstList();
- pImpl->aAlienArr[nData] = lAlienList.getAsConstList();
- pImpl->aODFArr[nData] = lODFList.getAsConstList();
- }
- }
- aDocTypeLB.SelectEntryPos(0);
- FilterHdl_Impl(&aDocTypeLB);
- }
- catch(Exception& )
- {
- DBG_ERROR("exception in FilterFactory access");
- }
-
- pImpl->bInitialized = sal_True;
- }
-
- aDocInfoCB.Check(aSaveOpt.IsDocInfoSave());
-// aDocInfoCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_DOCINFSAVE));
-
- aBackupCB.Check(aSaveOpt.IsBackup());
- BOOL bBackupRO = aSaveOpt.IsReadOnly(SvtSaveOptions::E_BACKUP);
- aBackupCB.Enable(!bBackupRO);
- aBackupFI.Show(bBackupRO);
-
- aAutoSaveCB.Check(aSaveOpt.IsAutoSave());
- aWarnAlienFormatCB.Check(aSaveOpt.IsWarnAlienFormat());
- aWarnAlienFormatCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_WARNALIENFORMAT));
-// aAutoSaveCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_AUTOSAVE));
-
- // the pretty printing
- aSizeOptimizationCB.Check( !aSaveOpt.IsPrettyPrinting());
-// aSizeOptimizationCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_DOPRETTYPRINTING ));
-
-
- aAutoSaveEdit.SetValue( aSaveOpt.GetAutoSaveTime() );
-// aAutoSaveEdit.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_AUTOSAVETIME));
-
- // relativ speichern
- aRelativeFsysCB.Check( aSaveOpt.IsSaveRelFSys() );
-// aRelativeFsysCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_SAVERELFSYS));
-
- aRelativeInetCB.Check( aSaveOpt.IsSaveRelINet() );
-// aRelativeInetCB.Enable(!aSaveOpt.IsReadOnly(SvtSaveOptions::E_SAVERELINET));
-
- void* pDefaultVersion = (void*)long( aSaveOpt.GetODFDefaultVersion() );
- aODFVersionLB.SelectEntryPos( aODFVersionLB.GetEntryPos( pDefaultVersion ) );
-
- AutoClickHdl_Impl( &aAutoSaveCB );
- ODFVersionHdl_Impl( &aODFVersionLB );
-
- aDocInfoCB.SaveValue();
- aBackupCB.SaveValue();
- aWarnAlienFormatCB.SaveValue();
- aSizeOptimizationCB.SaveValue();
- aAutoSaveCB.SaveValue();
- aAutoSaveEdit.SaveValue();
-// aAutoSavePromptBtn.SaveValue();
-
- aRelativeFsysCB.SaveValue();
- aRelativeInetCB.SaveValue();
- aODFVersionLB.SaveValue();
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_LINK( SfxSaveTabPage, AutoClickHdl_Impl, CheckBox *, pBox )
-{
- if ( pBox == &aAutoSaveCB )
- {
- if ( aAutoSaveCB.IsChecked() )
- {
- aAutoSaveEdit.Enable();
- aMinuteFT.Enable();
-// aAutoSavePromptBtn.Enable();
- aAutoSaveEdit.GrabFocus();
- }
- else
- {
- aAutoSaveEdit.Disable();
- aMinuteFT.Disable();
-// aAutoSavePromptBtn.Disable();
- }
- }
- return 0;
-}
-/* -----------------------------05.04.01 13:10--------------------------------
-
- ---------------------------------------------------------------------------*/
-OUString lcl_ExtracUIName(const Sequence<PropertyValue> rProperties)
-{
- OUString sRet;
- sal_Int32 nFlags;
- const PropertyValue* pProperties = rProperties.getConstArray();
- for(int nProp = 0; nProp < rProperties.getLength(); nProp++)
- {
- if(!pProperties[nProp].Name.compareToAscii("UIName"))
- {
- pProperties[nProp].Value >>= sRet;
-//! break;
- }
- else if(!pProperties[nProp].Name.compareToAscii("Flags"))
- {
- if ( pProperties[nProp].Value >>= nFlags )
- {
- nFlags &= 0x100;
- }
- }
- else if(!pProperties[nProp].Name.compareToAscii("Name"))
- {
- pProperties[nProp].Value >>= sRet;
- }
- }
- return sRet;
-}
-/* -----------------------------05.04.01 13:37--------------------------------
-
- ---------------------------------------------------------------------------*/
-IMPL_LINK( SfxSaveTabPage, FilterHdl_Impl, ListBox *, pBox )
-{
- USHORT nCurPos = aDocTypeLB.GetSelectEntryPos();
-
- long nData = -1;
- if(nCurPos < APP_COUNT)
- nData = (long) aDocTypeLB.GetEntryData(nCurPos);
-
- if ( nData >= 0 && nData < APP_COUNT )
- {
- if(&aDocTypeLB == pBox)
- {
- aSaveAsLB.Clear();
- const OUString* pFilters = pImpl->aFilterArr[nData].getConstArray();
- if(!pImpl->aUIFilterArr[nData].getLength())
- {
- pImpl->aUIFilterArr[nData].realloc(pImpl->aFilterArr[nData].getLength());
- OUString* pUIFilters = pImpl->aUIFilterArr[nData].getArray();
- for(int nFilter = 0; nFilter < pImpl->aFilterArr[nData].getLength(); nFilter++)
- {
- Any aProps = pImpl->xFact->getByName(pFilters[nFilter]);
- Sequence<PropertyValue> aProperties;
- aProps >>= aProperties;
- pUIFilters[nFilter] = lcl_ExtracUIName(aProperties);
- }
- }
- const OUString* pUIFilters = pImpl->aUIFilterArr[nData].getConstArray();
- OUString sSelect;
- for(int i = 0; i < pImpl->aUIFilterArr[nData].getLength(); i++)
- {
- USHORT nEntryPos = aSaveAsLB.InsertEntry(pUIFilters[i]);
- if ( pImpl->aODFArr[nData][i] )
- aSaveAsLB.SetEntryData( nEntryPos, (void*)pImpl );
- if(pFilters[i] == pImpl->aDefaultArr[nData])
- sSelect = pUIFilters[i];
- }
- if(sSelect.getLength())
- aSaveAsLB.SelectEntry(sSelect);
- aSaveAsFI.Show(pImpl->aDefaultReadonlyArr[nData]);
- aSaveAsFT.Enable(!pImpl->aDefaultReadonlyArr[nData]);
- aSaveAsLB.Enable(!pImpl->aDefaultReadonlyArr[nData]);
- }
- else
- {
- OUString sSelect = pBox->GetSelectEntry();
- const OUString* pFilters = pImpl->aFilterArr[nData].getConstArray();
- OUString* pUIFilters = pImpl->aUIFilterArr[nData].getArray();
- for(int i = 0; i < pImpl->aUIFilterArr[nData].getLength(); i++)
- if(pUIFilters[i] == sSelect)
- {
- sSelect = pFilters[i];
- break;
- }
-
- pImpl->aDefaultArr[nData] = sSelect;
- }
- }
-
- ODFVersionHdl_Impl( &aSaveAsLB );
- return 0;
-};
-
-IMPL_LINK( SfxSaveTabPage, ODFVersionHdl_Impl, ListBox *, EMPTYARG )
-{
- long nVersion = long( aODFVersionLB.GetEntryData( aODFVersionLB.GetSelectEntryPos() ) );
- bool bShown = SvtSaveOptions::ODFDefaultVersion( nVersion ) != SvtSaveOptions::ODFVER_LATEST;
- if ( bShown )
- {
- bool bHasODFFormat = false;
- USHORT i = 0, nCount = aSaveAsLB.GetEntryCount();
- for ( ; i < nCount; ++ i )
- {
- if ( aSaveAsLB.GetEntryData(i) != NULL )
- {
- bHasODFFormat = true;
- break;
- }
- }
-
- bShown = !bHasODFFormat
- || ( aSaveAsLB.GetEntryData( aSaveAsLB.GetSelectEntryPos() ) != NULL );
- }
-
- aODFWarningFI.Show( bShown );
- aODFWarningFT.Show( bShown );
-
- return 0;
-}
-