summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2024-02-02 11:28:27 +0600
committerMike Kaganski <mike.kaganski@collabora.com>2024-02-02 08:49:14 +0100
commit4981c0e7d5bbe8e1fadc1b5cc7923e32f160d635 (patch)
treec19cdf4edc7480479331c0f079418d54069e906c
parent29bf86f7cb367705b13049e5f0b3faa8bb93638a (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.hxx2
-rw-r--r--sfx2/source/doc/docfile.cxx19
-rw-r--r--sfx2/source/doc/objmisc.cxx4
-rw-r--r--sfx2/source/doc/objstor.cxx3
-rw-r--r--sfx2/source/doc/sfxbasemodel.cxx6
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);
}