[Libreoffice-commits] core.git: 2 commits - include/sfx2 include/svl sfx2/source svl/source
Jan Holesovsky
kendy at collabora.com
Mon Oct 19 01:14:52 PDT 2015
include/sfx2/objsh.hxx | 6 ++--
include/svl/itemset.hxx | 20 +++++++++++----
sfx2/source/doc/objserv.cxx | 20 ++++-----------
sfx2/source/doc/objstor.cxx | 52 ++++++++++++---------------------------
sfx2/source/doc/sfxbasemodel.cxx | 20 +++++++--------
svl/source/items/itemset.cxx | 35 +++-----------------------
6 files changed, 55 insertions(+), 98 deletions(-)
New commits:
commit 25d1447fcfe7d3fcdf8792d1cf426aaa2e578875
Author: Jan Holesovsky <kendy at collabora.com>
Date: Mon Oct 19 09:54:12 2015 +0200
sfx items: Some cleanup.
Change-Id: I8fdd710b4248de03db6591665489146cb2674aab
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index a7466f1..ff04e3c 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -684,9 +684,9 @@ public:
SAL_DLLPRIVATE void SetNamedVisibility_Impl();
SAL_DLLPRIVATE bool DoSave_Impl( const SfxItemSet* pSet=0 );
SAL_DLLPRIVATE bool Save_Impl( const SfxItemSet* pSet=0 );
- SAL_DLLPRIVATE bool PreDoSaveAs_Impl(const OUString &rFileName, const OUString &rFiltName, SfxItemSet *);
- SAL_DLLPRIVATE bool APISaveAs_Impl ( const OUString& aFileName, SfxItemSet* aParams );
- SAL_DLLPRIVATE bool CommonSaveAs_Impl ( const INetURLObject& aURL, const OUString& aFilterName, SfxItemSet* aParams );
+ SAL_DLLPRIVATE bool PreDoSaveAs_Impl(const OUString& rFileName, const OUString& rFiltName, SfxItemSet& rItemSet);
+ SAL_DLLPRIVATE bool APISaveAs_Impl(const OUString& aFileName, SfxItemSet& rItemSet);
+ SAL_DLLPRIVATE bool CommonSaveAs_Impl(const INetURLObject& aURL, const OUString& aFilterName, SfxItemSet& rItemSet);
SAL_DLLPRIVATE bool GeneralInit_Impl(
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
bool bTypeMustBeSetAlready );
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index f263356..fd16f1b 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -263,13 +263,7 @@ void SfxObjectShell::PrintState_Impl(SfxItemSet &rSet)
rSet.Put( SfxBoolItem( SID_PRINTOUT, bPrinting ) );
}
-
-
-bool SfxObjectShell::APISaveAs_Impl
-(
- const OUString& aFileName,
- SfxItemSet* aParams
-)
+bool SfxObjectShell::APISaveAs_Impl(const OUString& aFileName, SfxItemSet& rItemSet)
{
bool bOk = false;
@@ -277,14 +271,14 @@ bool SfxObjectShell::APISaveAs_Impl
if ( GetMedium() )
{
OUString aFilterName;
- const SfxStringItem* pFilterNameItem = SfxItemSet::GetItem<SfxStringItem>(aParams, SID_FILTER_NAME, false);
+ const SfxStringItem* pFilterNameItem = rItemSet.GetItem<SfxStringItem>(SID_FILTER_NAME, false);
if( pFilterNameItem )
{
aFilterName = pFilterNameItem->GetValue();
}
else
{
- const SfxStringItem* pContentTypeItem = SfxItemSet::GetItem<SfxStringItem>(aParams, SID_CONTENTTYPE, false);
+ const SfxStringItem* pContentTypeItem = rItemSet.GetItem<SfxStringItem>(SID_CONTENTTYPE, false);
if ( pContentTypeItem )
{
const SfxFilter* pFilter = SfxFilterMatcher( OUString::createFromAscii(GetFactory().GetShortName()) ).GetFilter4Mime( pContentTypeItem->GetValue(), SfxFilterFlags::EXPORT );
@@ -302,7 +296,7 @@ bool SfxObjectShell::APISaveAs_Impl
if( pFilt )
aFilterName = pFilt->GetFilterName();
- aParams->Put(SfxStringItem( SID_FILTER_NAME, aFilterName));
+ rItemSet.Put(SfxStringItem(SID_FILTER_NAME, aFilterName));
}
@@ -310,13 +304,11 @@ bool SfxObjectShell::APISaveAs_Impl
SfxObjectShellRef xLock( this ); // ???
// use the title that is provided in the media descriptor
- const SfxStringItem* pDocTitleItem = SfxItemSet::GetItem<SfxStringItem>(aParams, SID_DOCINFO_TITLE, false);
+ const SfxStringItem* pDocTitleItem = rItemSet.GetItem<SfxStringItem>(SID_DOCINFO_TITLE, false);
if ( pDocTitleItem )
getDocProperties()->setTitle( pDocTitleItem->GetValue() );
- bOk = CommonSaveAs_Impl( INetURLObject(aFileName), aFilterName,
- aParams );
-
+ bOk = CommonSaveAs_Impl(INetURLObject(aFileName), aFilterName, rItemSet);
}
}
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index e97bd2e..190b733 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -2606,14 +2606,7 @@ bool SfxObjectShell::Save_Impl( const SfxItemSet* pSet )
return bSaved;
}
-
-
-bool SfxObjectShell::CommonSaveAs_Impl
-(
- const INetURLObject& aURL,
- const OUString& aFilterName,
- SfxItemSet* aParams
-)
+bool SfxObjectShell::CommonSaveAs_Impl(const INetURLObject& aURL, const OUString& aFilterName, SfxItemSet& rItemSet)
{
if( aURL.HasError() )
{
@@ -2645,9 +2638,9 @@ bool SfxObjectShell::CommonSaveAs_Impl
}
DBG_ASSERT( aURL.GetProtocol() != INetProtocol::NotValid, "Illegal URL!" );
- DBG_ASSERT( aParams->Count() != 0, "Incorrect Parameter");
+ DBG_ASSERT( rItemSet.Count() != 0, "Incorrect Parameter");
- const SfxBoolItem* pSaveToItem = SfxItemSet::GetItem<SfxBoolItem>(aParams, SID_SAVETO, false);
+ const SfxBoolItem* pSaveToItem = rItemSet.GetItem<SfxBoolItem>(SID_SAVETO, false);
bool bSaveTo = pSaveToItem && pSaveToItem->GetValue();
const SfxFilter* pFilter = GetFactory().GetFilterContainer()->GetFilter4FilterName( aFilterName );
@@ -2659,15 +2652,15 @@ bool SfxObjectShell::CommonSaveAs_Impl
return false;
}
- const SfxBoolItem* pCopyStreamItem = SfxItemSet::GetItem<SfxBoolItem>(aParams, SID_COPY_STREAM_IF_POSSIBLE, false);
+ const SfxBoolItem* pCopyStreamItem = rItemSet.GetItem<SfxBoolItem>(SID_COPY_STREAM_IF_POSSIBLE, false);
if ( bSaveTo && pCopyStreamItem && pCopyStreamItem->GetValue() && !IsModified() )
{
- if ( pMedium->TryDirectTransfer( aURL.GetMainURL( INetURLObject::NO_DECODE ), *aParams ) )
+ if (pMedium->TryDirectTransfer(aURL.GetMainURL(INetURLObject::NO_DECODE), rItemSet))
return true;
}
- aParams->ClearItem( SID_COPY_STREAM_IF_POSSIBLE );
+ rItemSet.ClearItem( SID_COPY_STREAM_IF_POSSIBLE );
- pImp->bPasswd = SfxItemState::SET == aParams->GetItemState(SID_PASSWORD);
+ pImp->bPasswd = SfxItemState::SET == rItemSet.GetItemState(SID_PASSWORD);
SfxMedium *pActMed = GetMedium();
const INetURLObject aActName(pActMed->GetName());
@@ -2681,14 +2674,14 @@ bool SfxObjectShell::CommonSaveAs_Impl
return false;
}
- if( SfxItemState::SET != aParams->GetItemState(SID_UNPACK) && SvtSaveOptions().IsSaveUnpacked() )
- aParams->Put( SfxBoolItem( SID_UNPACK, false ) );
+ if (SfxItemState::SET != rItemSet.GetItemState(SID_UNPACK) && SvtSaveOptions().IsSaveUnpacked())
+ rItemSet.Put(SfxBoolItem(SID_UNPACK, false));
OUString aTempFileURL;
if ( IsDocShared() )
aTempFileURL = pMedium->GetURLObject().GetMainURL( INetURLObject::NO_DECODE );
- if ( PreDoSaveAs_Impl(aURL.GetMainURL( INetURLObject::NO_DECODE ),aFilterName,aParams))
+ if (PreDoSaveAs_Impl(aURL.GetMainURL(INetURLObject::NO_DECODE), aFilterName, rItemSet))
{
// Update Data on media
SfxItemSet *pSet = GetMedium()->GetItemSet();
@@ -2713,15 +2706,15 @@ bool SfxObjectShell::CommonSaveAs_Impl
pSet->ClearItem( SID_DEFAULTFILEPATH );
pSet->ClearItem( SID_DEFAULTFILENAME );
- const SfxStringItem* pFilterItem = aParams->GetItem<SfxStringItem>(SID_FILTER_NAME, false);
+ const SfxStringItem* pFilterItem = rItemSet.GetItem<SfxStringItem>(SID_FILTER_NAME, false);
if ( pFilterItem )
pSet->Put( *pFilterItem );
- const SfxStringItem* pOptionsItem = aParams->GetItem<SfxStringItem>(SID_OPTIONS, false);
+ const SfxStringItem* pOptionsItem = rItemSet.GetItem<SfxStringItem>(SID_OPTIONS, false);
if ( pOptionsItem )
pSet->Put( *pOptionsItem );
- const SfxStringItem* pFilterOptItem = aParams->GetItem<SfxStringItem>(SID_FILE_FILTEROPTIONS, false);
+ const SfxStringItem* pFilterOptItem = rItemSet.GetItem<SfxStringItem>(SID_FILE_FILTEROPTIONS, false);
if ( pFilterOptItem )
pSet->Put( *pFilterOptItem );
@@ -2752,14 +2745,7 @@ bool SfxObjectShell::CommonSaveAs_Impl
return false;
}
-
-
-bool SfxObjectShell::PreDoSaveAs_Impl
-(
- const OUString& rFileName,
- const OUString& aFilterName,
- SfxItemSet* pParams
-)
+bool SfxObjectShell::PreDoSaveAs_Impl(const OUString& rFileName, const OUString& aFilterName, SfxItemSet& rItemSet)
{
// copy all items stored in the itemset of the current medium
SfxAllItemSet* pMergedParams = new SfxAllItemSet( *pMedium->GetItemSet() );
@@ -2785,8 +2771,7 @@ bool SfxObjectShell::PreDoSaveAs_Impl
// merge the new parameters into the copy
// all values present in both itemsets will be overwritten by the new parameters
- if( pParams )
- pMergedParams->Put( *pParams );
+ pMergedParams->Put(rItemSet);
#ifdef DBG_UTIL
if ( pMergedParams->GetItemState( SID_DOC_SALVAGE) >= SfxItemState::SET )
@@ -2796,11 +2781,8 @@ bool SfxObjectShell::PreDoSaveAs_Impl
// should be unnecessary - too hot to handle!
pMergedParams->ClearItem( SID_DOC_SALVAGE );
- // take over the new merged itemset
- pParams = pMergedParams;
-
// create a medium for the target URL
- SfxMedium *pNewFile = new SfxMedium( rFileName, STREAM_READWRITE | StreamMode::SHARE_DENYWRITE | StreamMode::TRUNC, 0, pParams );
+ SfxMedium *pNewFile = new SfxMedium( rFileName, STREAM_READWRITE | StreamMode::SHARE_DENYWRITE | StreamMode::TRUNC, 0, pMergedParams );
// set filter; if no filter is given, take the default filter of the factory
if ( !aFilterName.isEmpty() )
@@ -2817,7 +2799,7 @@ bool SfxObjectShell::PreDoSaveAs_Impl
}
// check if a "SaveTo" is wanted, no "SaveAs"
- const SfxBoolItem* pSaveToItem = SfxItemSet::GetItem<SfxBoolItem>(pParams, SID_SAVETO, false);
+ const SfxBoolItem* pSaveToItem = pMergedParams->GetItem<SfxBoolItem>(SID_SAVETO, false);
bool bCopyTo = GetCreateMode() == SfxObjectCreateMode::EMBEDDED || (pSaveToItem && pSaveToItem->GetValue());
// distinguish between "Save" and "SaveAs"
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index ed11d79..c6dbe54 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -3012,14 +3012,14 @@ void SfxBaseModel::impl_store( const OUString& sURL
SfxGetpApp()->NotifyEvent( SfxEventHint( bSaveTo ? SFX_EVENT_SAVETODOC : SFX_EVENT_SAVEASDOC, GlobalEventConfig::GetEventName( bSaveTo ? GlobalEventId::SAVETODOC : GlobalEventId::SAVEASDOC ),
m_pData->m_pObjectShell ) );
- SfxAllItemSet *aParams = new SfxAllItemSet( SfxGetpApp()->GetPool() );
- aParams->Put( SfxStringItem( SID_FILE_NAME, sURL ) );
+ std::unique_ptr<SfxAllItemSet> pItemSet(new SfxAllItemSet(SfxGetpApp()->GetPool()));
+ pItemSet->Put(SfxStringItem(SID_FILE_NAME, sURL));
if ( bSaveTo )
- aParams->Put( SfxBoolItem( SID_SAVETO, true ) );
+ pItemSet->Put(SfxBoolItem(SID_SAVETO, true));
- TransformParameters( SID_SAVEASDOC, seqArguments, *aParams );
+ TransformParameters(SID_SAVEASDOC, seqArguments, *pItemSet);
- const SfxBoolItem* pCopyStreamItem = SfxItemSet::GetItem<SfxBoolItem>(aParams, SID_COPY_STREAM_IF_POSSIBLE, false);
+ const SfxBoolItem* pCopyStreamItem = pItemSet->GetItem<SfxBoolItem>(SID_COPY_STREAM_IF_POSSIBLE, false);
if ( pCopyStreamItem && pCopyStreamItem->GetValue() && !bSaveTo )
{
@@ -3032,7 +3032,7 @@ void SfxBaseModel::impl_store( const OUString& sURL
sal_uInt32 nModifyPasswordHash = 0;
Sequence< beans::PropertyValue > aModifyPasswordInfo;
- const SfxUnoAnyItem* pModifyPasswordInfoItem = SfxItemSet::GetItem<SfxUnoAnyItem>(aParams, SID_MODIFYPASSWORDINFO, false);
+ const SfxUnoAnyItem* pModifyPasswordInfoItem = pItemSet->GetItem<SfxUnoAnyItem>(SID_MODIFYPASSWORDINFO, false);
if ( pModifyPasswordInfoItem )
{
// it contains either a simple hash or a set of PropertyValues
@@ -3042,7 +3042,7 @@ void SfxBaseModel::impl_store( const OUString& sURL
nModifyPasswordHash = (sal_uInt32)nMPHTmp;
pModifyPasswordInfoItem->GetValue() >>= aModifyPasswordInfo;
}
- aParams->ClearItem( SID_MODIFYPASSWORDINFO );
+ pItemSet->ClearItem(SID_MODIFYPASSWORDINFO);
sal_uInt32 nOldModifyPasswordHash = m_pData->m_pObjectShell->GetModifyPasswordHash();
m_pData->m_pObjectShell->SetModifyPasswordHash( nModifyPasswordHash );
Sequence< beans::PropertyValue > aOldModifyPasswordInfo = m_pData->m_pObjectShell->GetModifyPasswordInfo();
@@ -3064,7 +3064,7 @@ void SfxBaseModel::impl_store( const OUString& sURL
m_pData->m_xDocumentProperties = xNewDocProps;
}
- bool bRet = m_pData->m_pObjectShell->APISaveAs_Impl( sURL, aParams );
+ bool bRet = m_pData->m_pObjectShell->APISaveAs_Impl(sURL, *pItemSet);
if ( bCopyTo )
{
@@ -3073,11 +3073,11 @@ void SfxBaseModel::impl_store( const OUString& sURL
}
Reference < task::XInteractionHandler > xHandler;
- const SfxUnoAnyItem* pItem = SfxItemSet::GetItem<SfxUnoAnyItem>(aParams, SID_INTERACTIONHANDLER, false);
+ const SfxUnoAnyItem* pItem = pItemSet->GetItem<SfxUnoAnyItem>(SID_INTERACTIONHANDLER, false);
if ( pItem )
pItem->GetValue() >>= xHandler;
- DELETEZ( aParams );
+ pItemSet.reset();
sal_uInt32 nErrCode = m_pData->m_pObjectShell->GetErrorCode();
if ( !bRet && !nErrCode )
commit f6f32e8eabb2e09fbe2b70dfb540bb1ea1ee75a9
Author: Jan Holesovsky <kendy at collabora.com>
Date: Mon Oct 19 08:43:28 2015 +0200
sfx items: Get rid of the TypeId check, nobody uses that any more.
And introduce the appropriate assert() in the templatized version instead.
Change-Id: I3e5b01e5e5ee49049fa6f35e3d05ef65a1890dc1
diff --git a/include/svl/itemset.hxx b/include/svl/itemset.hxx
index 7520d0d..a070eab 100644
--- a/include/svl/itemset.hxx
+++ b/include/svl/itemset.hxx
@@ -80,16 +80,26 @@ public:
sal_uInt16 TotalCount() const;
const SfxPoolItem& Get( sal_uInt16 nWhich, bool bSrchInParent = true ) const;
- const SfxPoolItem* GetItem( sal_uInt16 nWhich, bool bSearchInParent = true,
- TypeId aItemType = 0 ) const;
- /// Templatized version to directly return the correct type.
+ /** This method eases accessing single Items in the SfxItemSet.
+
+ @param nId SlotId or the Item's WhichId
+ @param bSearchInParent also search in parent ItemSets
+ @returns 0 if the ItemSet does not contain an Item with the Id 'nWhich'
+ */
+ const SfxPoolItem* GetItem(sal_uInt16 nWhich, bool bSearchInParent = true) const;
+
+ /// Templatized version of GetItem() to directly return the correct type.
template<class T> const T* GetItem(sal_uInt16 nWhich, bool bSearchInParent = true) const
{
- return dynamic_cast<const T*>(GetItem(nWhich, bSearchInParent));
+ const SfxPoolItem* pItem = GetItem(nWhich, bSearchInParent);
+ const T* pCastedItem = dynamic_cast<const T*>(pItem);
+
+ assert(!pItem || pCastedItem); // if it exists, must have the correct type
+ return pCastedItem;
}
- /// Templatized static version to directly return the correct type if the SfxItemSet is available.
+ /// Templatized static version of GetItem() to directly return the correct type if the SfxItemSet is available.
template<class T> static const T* GetItem(const SfxItemSet* pItemSet, sal_uInt16 nWhich, bool bSearchInParent = true)
{
if (pItemSet)
diff --git a/svl/source/items/itemset.cxx b/svl/source/items/itemset.cxx
index d9363c1..1e72cf6 100644
--- a/svl/source/items/itemset.cxx
+++ b/svl/source/items/itemset.cxx
@@ -812,47 +812,20 @@ bool SfxItemSet::Set
return bRet;
}
-/**
- * This method eases accessing single Items in the SfxItemSet.
- * Type checking is done via assertion, which makes client code
- * much more readable.
- *
- * The PRODUCT version returns 0, if the Item found is not of the
- * specified class.
- *
- * @returns 0 if the ItemSet does not contain an Item with the Id 'nWhich'
- */
-const SfxPoolItem* SfxItemSet::GetItem
-(
- sal_uInt16 nId, // SlotId or the Item's WhichId
- bool bSrchInParent, // sal_True: also search in Parent ItemSets
- TypeId aItemType // != 0 => RTTI check using assertion
-) const
+const SfxPoolItem* SfxItemSet::GetItem(sal_uInt16 nId, bool bSearchInParent) const
{
// Convert to WhichId
sal_uInt16 nWhich = GetPool()->GetWhich(nId);
// Is the Item set or 'bDeep == true' available?
const SfxPoolItem *pItem = 0;
- SfxItemState eState = GetItemState( nWhich, bSrchInParent, &pItem );
- if ( bSrchInParent && SfxItemState::DEFAULT == eState &&
- nWhich <= SFX_WHICH_MAX )
+ SfxItemState eState = GetItemState(nWhich, bSearchInParent, &pItem);
+ if (bSearchInParent && SfxItemState::DEFAULT == eState && nWhich <= SFX_WHICH_MAX)
{
pItem = &m_pPool->GetDefaultItem(nWhich);
}
- if ( pItem )
- {
- // Does the type match?
- if ( !aItemType || pItem->IsA(aItemType) )
- return pItem;
-
- // Else report error
- assert(!"invalid argument type");
- }
-
- // No Item of wrong type found
- return 0;
+ return pItem;
}
const SfxPoolItem& SfxItemSet::Get( sal_uInt16 nWhich, bool bSrchInParent) const
More information about the Libreoffice-commits
mailing list