diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2024-02-02 11:28:27 +0600 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2024-02-02 08:49:14 +0100 |
commit | 4981c0e7d5bbe8e1fadc1b5cc7923e32f160d635 (patch) | |
tree | c19cdf4edc7480479331c0f079418d54069e906c | |
parent | 29bf86f7cb367705b13049e5f0b3faa8bb93638a (diff) |
Add SfxMedium::IsRepairPackage
Change-Id: Id100e5a85a0504ab4fb80f75a168a4fd31a54119
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/162924
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r-- | include/sfx2/docfile.hxx | 2 | ||||
-rw-r--r-- | sfx2/source/doc/docfile.cxx | 19 | ||||
-rw-r--r-- | sfx2/source/doc/objmisc.cxx | 4 | ||||
-rw-r--r-- | sfx2/source/doc/objstor.cxx | 3 | ||||
-rw-r--r-- | sfx2/source/doc/sfxbasemodel.cxx | 6 |
5 files changed, 16 insertions, 18 deletions
diff --git a/include/sfx2/docfile.hxx b/include/sfx2/docfile.hxx index fb8039f6b8f1..f4a29a9414d9 100644 --- a/include/sfx2/docfile.hxx +++ b/include/sfx2/docfile.hxx @@ -200,6 +200,8 @@ public: // independent of later changes via SetOpenMode; used for SID_RELOAD: [[nodiscard]] bool IsOriginallyLoadedReadOnly() const; + [[nodiscard]] bool IsRepairPackage() const; + css::uno::Reference< css::io::XInputStream > const & GetInputStream(); void CreateTempFile( bool bReplace = true ); diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index 670a27841414..fe1f5d0b773c 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -1764,6 +1764,12 @@ SfxMedium::TryEncryptedInnerPackage(uno::Reference<embed::XStorage> const xStora return xRet; } +bool SfxMedium::IsRepairPackage() const +{ + const SfxBoolItem* pRepairItem = GetItemSet().GetItem(SID_REPAIRPACKAGE, false); + return pRepairItem && pRepairItem->GetValue(); +} + uno::Reference < embed::XStorage > SfxMedium::GetStorage( bool bCreateTempFile ) { if ( pImpl->xStorage.is() || pImpl->m_bTriedStorage ) @@ -1784,8 +1790,7 @@ uno::Reference < embed::XStorage > SfxMedium::GetStorage( bool bCreateTempFile ) if ( GetErrorIgnoreWarning() ) return pImpl->xStorage; - const SfxBoolItem* pRepairItem = GetItemSet().GetItem(SID_REPAIRPACKAGE, false); - if ( pRepairItem && pRepairItem->GetValue() ) + if (IsRepairPackage()) { // the storage should be created for repairing mode CreateTempFile( false ); @@ -1979,13 +1984,11 @@ uno::Reference<embed::XStorage> SfxMedium::GetScriptingStorageToSign_Impl() SAL_WARN_IF(!pImpl->m_xODFDecryptedInnerPackageStream.is(), "sfx.doc", "no inner package stream?"); if (pImpl->m_xODFDecryptedInnerPackageStream.is()) { - const SfxBoolItem* pRepairItem = GetItemSet().GetItem(SID_REPAIRPACKAGE, false); - const bool bRepairPackage = pRepairItem && pRepairItem->GetValue(); pImpl->m_xODFDecryptedInnerZipStorage = ::comphelper::OStorageHelper::GetStorageOfFormatFromInputStream( ZIP_STORAGE_FORMAT_STRING, pImpl->m_xODFDecryptedInnerPackageStream->getInputStream(), {}, - bRepairPackage); + IsRepairPackage()); } } return pImpl->m_xODFDecryptedInnerZipStorage; @@ -2006,21 +2009,19 @@ uno::Reference< embed::XStorage > const & SfxMedium::GetZipStorageToSign_Impl( b try { - const SfxBoolItem* pRepairItem = GetItemSet().GetItem(SID_REPAIRPACKAGE, false); - const bool bRepairPackage = pRepairItem && pRepairItem->GetValue(); // we can not sign document if there is no stream // should it be possible at all? if ( !bReadOnly && pImpl->xStream.is() ) { pImpl->m_xZipStorage = ::comphelper::OStorageHelper::GetStorageOfFormatFromStream( ZIP_STORAGE_FORMAT_STRING, pImpl->xStream, css::embed::ElementModes::READWRITE, - {}, bRepairPackage); + {}, IsRepairPackage()); } else if ( pImpl->xInputStream.is() ) { pImpl->m_xZipStorage = ::comphelper::OStorageHelper::GetStorageOfFormatFromInputStream( - ZIP_STORAGE_FORMAT_STRING, pImpl->xInputStream, {}, bRepairPackage); + ZIP_STORAGE_FORMAT_STRING, pImpl->xInputStream, {}, IsRepairPackage()); } } catch( const uno::Exception& ) diff --git a/sfx2/source/doc/objmisc.cxx b/sfx2/source/doc/objmisc.cxx index 72e7f01e3d54..d7f417a9bcad 100644 --- a/sfx2/source/doc/objmisc.cxx +++ b/sfx2/source/doc/objmisc.cxx @@ -1957,9 +1957,7 @@ bool SfxObjectShell::IsContinueImportOnFilterExceptions() return false; } - if (const SfxBoolItem* pRepairItem - = pMedium->GetItemSet().GetItem(SID_REPAIRPACKAGE, false); - pRepairItem && pRepairItem->GetValue()) + if (pMedium->IsRepairPackage()) { mbContinueImportOnFilterExceptions = yes; return true; diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 5a300dd164ad..b73b76282e00 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -670,14 +670,13 @@ bool SfxObjectShell::DoLoad( SfxMedium *pMed ) try { bool bWarnMediaTypeFallback = false; - const SfxBoolItem* pRepairPackageItem = rSet.GetItem(SID_REPAIRPACKAGE, false); // treat the package as broken if the mediatype was retrieved as a fallback uno::Reference< beans::XPropertySet > xStorProps( xStorage, uno::UNO_QUERY_THROW ); xStorProps->getPropertyValue("MediaTypeFallbackUsed") >>= bWarnMediaTypeFallback; - if ( pRepairPackageItem && pRepairPackageItem->GetValue() ) + if (pMedium->IsRepairPackage()) { // the macros in repaired documents should be disabled pMedium->GetItemSet().Put( SfxUInt16Item( SID_MACROEXECMODE, document::MacroExecMode::NEVER_EXECUTE ) ); diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx index c25d31deb110..b1862799b6b7 100644 --- a/sfx2/source/doc/sfxbasemodel.cxx +++ b/sfx2/source/doc/sfxbasemodel.cxx @@ -1988,8 +1988,7 @@ void SAL_CALL SfxBaseModel::load( const Sequence< beans::PropertyValue >& seqA if ( nError == ERRCODE_IO_BROKENPACKAGE && xHandler.is() ) { const OUString aDocName( pMedium->GetURLObject().getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DecodeMechanism::WithCharset ) ); - const SfxBoolItem* pRepairItem = pMedium->GetItemSet().GetItem(SID_REPAIRPACKAGE, false); - if ( !pRepairItem || !pRepairItem->GetValue() ) + if (!pMedium->IsRepairPackage()) { RequestPackageReparation aRequest( aDocName ); xHandler->handle( aRequest.GetRequest() ); @@ -4052,8 +4051,7 @@ OUString SAL_CALL SfxBaseModel::getTitle() catch (const ucb::CommandAbortedException &) { } - const SfxBoolItem* pRepairedDocItem = pMedium->GetItemSet().GetItem(SID_REPAIRPACKAGE, false); - if ( pRepairedDocItem && pRepairedDocItem->GetValue() ) + if (pMedium->IsRepairPackage()) aResult += SfxResId(STR_REPAIREDDOCUMENT); } |