diff options
-rw-r--r-- | sd/inc/sddll.hxx | 3 | ||||
-rw-r--r-- | sd/source/core/drawdoc.cxx | 10 | ||||
-rw-r--r-- | sd/source/filter/ppt/pptin.cxx | 46 | ||||
-rw-r--r-- | sd/source/ui/app/sddll.cxx | 15 | ||||
-rw-r--r-- | sfx2/source/doc/docfile.cxx | 3 | ||||
-rw-r--r-- | svtools/source/config/accessibilityoptions.cxx | 5 | ||||
-rw-r--r-- | svtools/source/config/colorcfg.cxx | 12 | ||||
-rw-r--r-- | vcl/workben/fftester.cxx | 14 |
8 files changed, 84 insertions, 24 deletions
diff --git a/sd/inc/sddll.hxx b/sd/inc/sddll.hxx index 22e8e61fbe1b..6f8a04957f4f 100644 --- a/sd/inc/sddll.hxx +++ b/sd/inc/sddll.hxx @@ -21,6 +21,7 @@ #define INCLUDED_SD_INC_SDDLL_HXX #include <sfx2/module.hxx> +#include "sddllapi.h" /************************************************************************* |* @@ -32,7 +33,7 @@ |* \************************************************************************/ -class SdDLL +class SD_DLLPUBLIC SdDLL { protected: #ifdef ENABLE_SDREMOTE diff --git a/sd/source/core/drawdoc.cxx b/sd/source/core/drawdoc.cxx index 5fbeec97a9a7..f31528b8abf7 100644 --- a/sd/source/core/drawdoc.cxx +++ b/sd/source/core/drawdoc.cxx @@ -30,6 +30,7 @@ #include <editeng/eeitem.hxx> #include <editeng/scriptspaceitem.hxx> +#include <unotools/configmgr.hxx> #include <unotools/useroptions.hxx> #include <officecfg/Office/Impress.hxx> @@ -149,7 +150,7 @@ PresentationSettings::PresentationSettings( const PresentationSettings& r ) } SdDrawDocument::SdDrawDocument(DocumentType eType, SfxObjectShell* pDrDocSh) -: FmFormModel( SvtPathOptions().GetPalettePath(), NULL, pDrDocSh ) +: FmFormModel( !utl::ConfigManager::IsAvoidConfig() ? SvtPathOptions().GetPalettePath() : OUString(), NULL, pDrDocSh ) , bReadOnly(false) , mpOutliner(NULL) , mpInternalOutliner(NULL) @@ -217,6 +218,7 @@ SdDrawDocument::SdDrawDocument(DocumentType eType, SfxObjectShell* pDrDocSh) SetCalcFieldValueHdl( &rOutliner ); // set linguistic options + if (!utl::ConfigManager::IsAvoidConfig()) { const SvtLinguConfig aLinguConfig; SvtLinguOptions aOptions; @@ -980,6 +982,9 @@ sal_uInt16 SdDrawDocument::GetAnnotationAuthorIndex( const OUString& rAuthor ) void SdDrawDocument::InitLayoutVector() { + if (utl::ConfigManager::IsAvoidConfig()) + return; + const Reference<css::uno::XComponentContext> xContext( ::comphelper::getProcessComponentContext() ); @@ -1016,6 +1021,9 @@ void SdDrawDocument::InitLayoutVector() void SdDrawDocument::InitObjectVector() { + if (utl::ConfigManager::IsAvoidConfig()) + return; + const Reference<css::uno::XComponentContext> xContext( ::comphelper::getProcessComponentContext() ); diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx index a5a8a61b2d33..af1588f6bcf7 100644 --- a/sd/source/filter/ppt/pptin.cxx +++ b/sd/source/filter/ppt/pptin.cxx @@ -19,6 +19,7 @@ #include <editeng/numitem.hxx> #include <osl/file.hxx> +#include <unotools/configmgr.hxx> #include <unotools/ucbstreamhelper.hxx> #include <vcl/wrkwin.hxx> #include <svl/urihelper.hxx> @@ -68,6 +69,7 @@ #include <cusshow.hxx> #include <vcl/bmpacc.hxx> #include "customshowlist.hxx" +#include "sddll.hxx" #include "../../ui/inc/DrawDocShell.hxx" #include "../../ui/inc/FrameView.hxx" @@ -539,8 +541,14 @@ bool ImplSdPPTImport::Import() // create master pages: - SfxProgress* pStbMgr = new SfxProgress( pDocShell, SD_RESSTR( STR_POWERPOINT_IMPORT ), - m_pMasterPages->size() + m_pSlidePages->size() + m_pNotePages->size() ); + std::unique_ptr<SfxProgress> xStbMgr; + if (!utl::ConfigManager::IsAvoidConfig()) + { + xStbMgr.reset(new SfxProgress(pDocShell, + SD_RESSTR( STR_POWERPOINT_IMPORT), + m_pMasterPages->size() + + m_pSlidePages->size() + m_pNotePages->size())); + } sal_uInt32 nImportedPages = 0; { @@ -852,7 +860,8 @@ bool ImplSdPPTImport::Import() } } } - pStbMgr->SetState( nImportedPages++ ); + if (xStbMgr) + xStbMgr->SetState( nImportedPages++ ); } // importing slide pages @@ -982,7 +991,8 @@ bool ImplSdPPTImport::Import() static_cast<SdrPageObj*>(pPageObj)->SetReferencedPage(pSdrModel->GetPage(( nPage << 1 ) + 1)); } - pStbMgr->SetState( nImportedPages++ ); + if (xStbMgr) + xStbMgr->SetState( nImportedPages++ ); } } else @@ -1347,7 +1357,7 @@ bool ImplSdPPTImport::Import() } } - delete pStbMgr; + xStbMgr.reset(); // read DocumentProperties uno::Reference<document::XDocumentPropertiesSupplier> xDPS( @@ -2691,4 +2701,30 @@ extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL ImportPPT( return bRet; } +extern "C" SAL_DLLPUBLIC_EXPORT bool SAL_CALL TestImportPPT(const OUString &rURL) +{ + SvFileStream aFileStream(rURL, StreamMode::READ); + tools::SvRef<SotStorage> xStorage(new SotStorage(aFileStream)); + if (xStorage->GetError()) + return false; + + tools::SvRef<SotStorageStream> xDocStream(xStorage->OpenSotStream( OUString("PowerPoint Document"), STREAM_STD_READ)); + if (!xDocStream) + return false; + + SdDLL::Init(); + + SfxMedium aSrcMed(rURL, STREAM_STD_READ); + + xDocStream->SetVersion(xStorage->GetVersion()); + xDocStream->SetCryptMaskKey(xStorage->GetKey()); + + ::sd::DrawDocShellRef xDocShRef = new ::sd::DrawDocShell(); + SdDrawDocument *pDoc = xDocShRef->GetDoc(); + + bool bRet = ImportPPT(pDoc, *xDocStream, *xStorage, aSrcMed); + + return bRet; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx index 32badfe30344..a6f666919d36 100644 --- a/sd/source/ui/app/sddll.cxx +++ b/sd/source/ui/app/sddll.cxx @@ -22,6 +22,7 @@ #include <editeng/eeitem.hxx> #include <editeng/editeng.hxx> #include <svx/svdobj.hxx> +#include <unotools/configmgr.hxx> #include <unotools/moduleoptions.hxx> #include <svx/fmobjfac.hxx> #include <svx/svdfield.hxx> @@ -98,7 +99,7 @@ using namespace ::com::sun::star; // Register all Factories void SdDLL::RegisterFactorys() { - if (SvtModuleOptions().IsImpress()) + if (utl::ConfigManager::IsAvoidConfig() || SvtModuleOptions().IsImpress()) { ::sd::ImpressViewShellBase::RegisterFactory ( ::sd::IMPRESS_FACTORY_ID); @@ -109,7 +110,7 @@ void SdDLL::RegisterFactorys() ::sd::PresentationViewShellBase::RegisterFactory ( ::sd::PRESENTATION_FACTORY_ID); } - if (SvtModuleOptions().IsDraw()) + if (!utl::ConfigManager::IsAvoidConfig() && SvtModuleOptions().IsDraw()) { ::sd::GraphicViewShellBase::RegisterFactory (::sd::DRAW_FACTORY_ID); } @@ -255,10 +256,10 @@ void SdDLL::Init() SfxObjectFactory* pDrawFact = NULL; SfxObjectFactory* pImpressFact = NULL; - if (SvtModuleOptions().IsImpress()) + if (utl::ConfigManager::IsAvoidConfig() || SvtModuleOptions().IsImpress()) pImpressFact = &::sd::DrawDocShell::Factory(); - if (SvtModuleOptions().IsDraw()) + if (!utl::ConfigManager::IsAvoidConfig() && SvtModuleOptions().IsDraw()) pDrawFact = &::sd::GraphicDocShell::Factory(); // the SdModule must be created @@ -276,14 +277,14 @@ void SdDLL::Init() (*ppShlPtr) = new SdModule( pDrawFact, pImpressFact ); } - if (SvtModuleOptions().IsImpress()) + if (!utl::ConfigManager::IsAvoidConfig() && SvtModuleOptions().IsImpress()) { // Register the Impress shape types in order to make the shapes accessible. ::accessibility::RegisterImpressShapeTypes (); ::sd::DrawDocShell::Factory().SetDocumentServiceName( "com.sun.star.presentation.PresentationDocument" ); } - if (SvtModuleOptions().IsDraw()) + if (!utl::ConfigManager::IsAvoidConfig() && SvtModuleOptions().IsDraw()) { ::sd::GraphicDocShell::Factory().SetDocumentServiceName( "com.sun.star.drawing.DrawingDocument" ); } @@ -311,7 +312,7 @@ void SdDLL::Init() // register your exotic remote controls here #ifdef ENABLE_SDREMOTE - if ( !Application::IsHeadlessModeEnabled() ) + if (!utl::ConfigManager::IsAvoidConfig() && !Application::IsHeadlessModeEnabled()) RegisterRemotes(); #endif } diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index 284c581f362b..c19f7d28a6e6 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -65,6 +65,7 @@ #include <com/sun/star/security/DocumentSignatureInformation.hpp> #include <com/sun/star/security/DocumentDigitalSignatures.hpp> #include <tools/urlobj.hxx> +#include <unotools/configmgr.hxx> #include <unotools/tempfile.hxx> #include <comphelper/fileurl.hxx> #include <comphelper/processfactory.hxx> @@ -450,7 +451,7 @@ OUString SfxMedium::GetBaseURL( bool bForSaving ) const SfxStringItem* pBaseURLItem = static_cast<const SfxStringItem*>( GetItemSet()->GetItem(SID_DOC_BASEURL) ); if ( pBaseURLItem ) aBaseURL = pBaseURLItem->GetValue(); - else if ( GetContent().is() ) + else if (!utl::ConfigManager::IsAvoidConfig() && GetContent().is()) { try { diff --git a/svtools/source/config/accessibilityoptions.cxx b/svtools/source/config/accessibilityoptions.cxx index 30e565819678..5d3f9718cac3 100644 --- a/svtools/source/config/accessibilityoptions.cxx +++ b/svtools/source/config/accessibilityoptions.cxx @@ -572,6 +572,7 @@ void SvtAccessibilityOptions_Impl::SetVCLSettings() SvtAccessibilityOptions::SvtAccessibilityOptions() { + if (!utl::ConfigManager::IsAvoidConfig()) { ::osl::MutexGuard aGuard( SingletonMutex::get() ); if(!sm_pSingleImplConfig) @@ -584,8 +585,6 @@ SvtAccessibilityOptions::SvtAccessibilityOptions() //StartListening( *sm_pSingleImplConfig, sal_True ); } - - SvtAccessibilityOptions::~SvtAccessibilityOptions() { //EndListening( *sm_pSingleImplConfig, sal_True ); @@ -598,8 +597,6 @@ SvtAccessibilityOptions::~SvtAccessibilityOptions() } } - - void SvtAccessibilityOptions::Notify( SfxBroadcaster&, const SfxHint& rHint ) { NotifyListeners(0); diff --git a/svtools/source/config/colorcfg.cxx b/svtools/source/config/colorcfg.cxx index b02556293b1d..e199fc5a23ef 100644 --- a/svtools/source/config/colorcfg.cxx +++ b/svtools/source/config/colorcfg.cxx @@ -392,10 +392,10 @@ void ColorConfig_Impl::ImplUpdateApplicationSettings() } } - - ColorConfig::ColorConfig() { + if (utl::ConfigManager::IsAvoidConfig()) + return; ::osl::MutexGuard aGuard( ColorMutex_Impl::get() ); if ( !m_pImpl ) { @@ -506,8 +506,12 @@ Color ColorConfig::GetDefaultColor(ColorConfigEntry eEntry) ColorConfigValue ColorConfig::GetColorValue(ColorConfigEntry eEntry, bool bSmart) const { - ColorConfigValue aRet = m_pImpl->GetColorConfigValue(eEntry); - if(bSmart) + ColorConfigValue aRet; + + if (m_pImpl) + aRet = m_pImpl->GetColorConfigValue(eEntry); + + if (bSmart) { if(COL_AUTO == sal::static_int_cast<ColorData>(aRet.nColor)) aRet.nColor = ColorConfig::GetDefaultColor(eEntry).GetColor(); diff --git a/vcl/workben/fftester.cxx b/vcl/workben/fftester.cxx index adf03b9e880f..41f5f88eb424 100644 --- a/vcl/workben/fftester.cxx +++ b/vcl/workben/fftester.cxx @@ -361,7 +361,19 @@ try_again: } ret = (int) (*pfnImport)(out); } - + else if (strcmp(argv[2], "ppt") == 0) + { + static HFilterCall pfnImport(0); + if (!pfnImport) + { + osl::Module aLibrary; + aLibrary.loadRelative(&thisModule, "libsdfiltlo.so", SAL_LOADMODULE_LAZY); + pfnImport = reinterpret_cast<HFilterCall>( + aLibrary.getFunctionSymbol("TestImportPPT")); + aLibrary.release(); + } + ret = (int) (*pfnImport)(out); + } } /* To signal successful completion of a run, we need to deliver |