[Libreoffice-commits] core.git: 42 commits - sw/source
Bjoern Michaelsen
bjoern.michaelsen at canonical.com
Fri Mar 18 00:42:40 UTC 2016
sw/source/core/unocore/unostyle.cxx | 2346 ++++++++++++++----------------------
1 file changed, 968 insertions(+), 1378 deletions(-)
New commits:
commit 5e4aec90aefbb86c98ccaba9c775d4a539f1b934
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 15:05:39 2016 +0100
getTypes/queryInterface/getEvents: remove superfluous getArray() and simplify
Change-Id: I5b19d01d2760c95d9c52b15f8d6174dc4aafb4e3
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 4c54906..da53140 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -3202,28 +3202,28 @@ const SfxPoolItem* SwXFrameStyle::GetItem(enum RES_FRMATR eAtr)
return &xStyle->GetItemSet().Get(eAtr);
}
-uno::Sequence< uno::Type > SwXFrameStyle::getTypes( ) throw(uno::RuntimeException, std::exception)
+uno::Sequence<uno::Type> SwXFrameStyle::getTypes()
+ throw(uno::RuntimeException, std::exception)
{
- uno::Sequence< uno::Type > aTypes = SwXStyle::getTypes();
+ uno::Sequence<uno::Type> aTypes = SwXStyle::getTypes();
sal_Int32 nLen = aTypes.getLength();
aTypes.realloc(nLen + 1);
- aTypes.getArray()[nLen] = cppu::UnoType<XEventsSupplier>::get();
+ aTypes[nLen] = cppu::UnoType<XEventsSupplier>::get();
return aTypes;
}
-uno::Any SwXFrameStyle::queryInterface( const uno::Type& rType ) throw(uno::RuntimeException, std::exception)
+uno::Any SwXFrameStyle::queryInterface(const uno::Type& rType)
+ throw(uno::RuntimeException, std::exception)
{
- uno::Any aRet;
if(rType == cppu::UnoType<XEventsSupplier>::get())
- aRet <<= uno::Reference<XEventsSupplier>(this);
- else
- aRet = SwXStyle::queryInterface(rType);
- return aRet;
+ return uno::makeAny(uno::Reference<XEventsSupplier>(this));
+ return SwXStyle::queryInterface(rType);
}
-uno::Reference< container::XNameReplace > SwXFrameStyle::getEvents( ) throw(uno::RuntimeException, std::exception)
+uno::Reference<container::XNameReplace> SwXFrameStyle::getEvents()
+ throw(uno::RuntimeException, std::exception)
{
- return new SwFrameStyleEventDescriptor( *this );
+ return new SwFrameStyleEventDescriptor(*this);
}
// Already implemented autostyle families: 3
commit 47b6239950adef2ced7f4602acc7d6b22b9ca721
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 15:02:01 2016 +0100
GetItem/SetItem: use GetStyleSheetBase()
Change-Id: I7c3b563c6bd095ac9305a5cffdda206c5de94926
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index adbd801..4c54906 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -3183,34 +3183,22 @@ SwXFrameStyle::~SwXFrameStyle()
void SwXFrameStyle::SetItem(enum RES_FRMATR eAtr, const SfxPoolItem& rItem)
{
- // As I was told, for some entirely unobvious reason getting an
- // item from a style has to look as follows:
- SfxStyleSheetBasePool* pBasePool = m_pBasePool;
- if (pBasePool)
- {
- SfxStyleSheetBase* pBase = pBasePool->Find(GetStyleName());
- if (pBase)
- {
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
- SfxItemSet& rStyleSet = xStyle->GetItemSet();
- SfxItemSet aSet(*rStyleSet.GetPool(), eAtr, eAtr);
- aSet.Put(rItem);
- xStyle->SetItemSet(aSet);
- }
- }
+ SfxStyleSheetBase* pBase = GetStyleSheetBase();
+ if(!pBase)
+ return;
+ rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
+ SfxItemSet& rStyleSet = xStyle->GetItemSet();
+ SfxItemSet aSet(*rStyleSet.GetPool(), eAtr, eAtr);
+ aSet.Put(rItem);
+ xStyle->SetItemSet(aSet);
}
const SfxPoolItem* SwXFrameStyle::GetItem(enum RES_FRMATR eAtr)
{
- // As I was told, for some entirely unobvious reason getting an
- // item from a style has to look as follows:
- SfxStyleSheetBasePool* pBasePool = m_pBasePool;
- if(!pBasePool)
- return nullptr;
- SfxStyleSheetBase* pBase = pBasePool->Find(GetStyleName());
+ SfxStyleSheetBase* pBase = GetStyleSheetBase();
if(!pBase)
return nullptr;
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase)) );
+ rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
return &xStyle->GetItemSet().Get(eAtr);
}
commit a4d50fa571ff24fb6d842675e550539de2a9c7da
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 14:58:30 2016 +0100
getPropertyValues, getPropertyValue, setPropertyValue: formatting/whitespace
Change-Id: I9a08b46037eee210fd9beae7670a2efb0e5e8888
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index a999463..adbd801 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -3134,59 +3134,53 @@ uno::Sequence<uno::Any> SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence
return aRet;
}
-uno::Sequence< uno::Any > SwXPageStyle::getPropertyValues(
- const uno::Sequence< OUString >& rPropertyNames )
+uno::Sequence<uno::Any> SwXPageStyle::getPropertyValues(const uno::Sequence<OUString>& rPropertyNames)
throw(uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
- uno::Sequence< uno::Any > aValues;
+ uno::Sequence<uno::Any> aValues;
// workaround for bad designed API
try
{
- aValues = GetPropertyValues_Impl( rPropertyNames );
+ aValues = GetPropertyValues_Impl(rPropertyNames);
}
- catch (beans::UnknownPropertyException &)
+ catch(beans::UnknownPropertyException &)
{
- throw uno::RuntimeException("Unknown property exception caught", static_cast < cppu::OWeakObject * > ( this ) );
+ throw uno::RuntimeException("Unknown property exception caught", static_cast<cppu::OWeakObject*>(this));
}
- catch (lang::WrappedTargetException &)
+ catch(lang::WrappedTargetException &)
{
- throw uno::RuntimeException("WrappedTargetException caught", static_cast < cppu::OWeakObject * > ( this ) );
+ throw uno::RuntimeException("WrappedTargetException caught", static_cast<cppu::OWeakObject*>(this));
}
return aValues;
}
-uno::Any SwXPageStyle::getPropertyValue(const OUString& rPropertyName) throw(
- beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
+uno::Any SwXPageStyle::getPropertyValue(const OUString& rPropertyName)
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
const uno::Sequence<OUString> aProperties(&rPropertyName, 1);
- return GetPropertyValues_Impl(aProperties).getConstArray()[0];
+ return GetPropertyValues_Impl(aProperties)[0];
}
void SwXPageStyle::setPropertyValue(const OUString& rPropertyName, const uno::Any& rValue)
- throw( beans::UnknownPropertyException,
- beans::PropertyVetoException,
- lang::IllegalArgumentException,
- lang::WrappedTargetException,
- uno::RuntimeException, std::exception)
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
const uno::Sequence<OUString> aProperties(&rPropertyName, 1);
const uno::Sequence<uno::Any> aValues(&rValue, 1);
- SetPropertyValues_Impl( aProperties, aValues );
+ SetPropertyValues_Impl(aProperties, aValues);
}
-SwXFrameStyle::SwXFrameStyle ( SwDoc *pDoc )
-: SwXStyle ( pDoc, SFX_STYLE_FAMILY_FRAME, false)
-{
-}
+SwXFrameStyle::SwXFrameStyle(SwDoc *pDoc)
+ : SwXStyle(pDoc, SFX_STYLE_FAMILY_FRAME, false)
+{ }
SwXFrameStyle::~SwXFrameStyle()
-{
-}
+{ }
+
void SwXFrameStyle::SetItem(enum RES_FRMATR eAtr, const SfxPoolItem& rItem)
{
// As I was told, for some entirely unobvious reason getting an
commit daf39a7626f1ccaf2c0a32c33a4c3edc1b6069fd
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 14:30:11 2016 +0100
refactor GetPropertyValues_Impl
- use GetStyleSheetBase()
- check preconditions and special cases early
- limit scope of variables
Change-Id: Idb49f84e97348bcbf8a3a75831b56ad82872720e
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 8923871..a999463 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2950,38 +2950,40 @@ uno::Sequence<uno::Any> SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence
throw uno::RuntimeException();
sal_Int32 nLength = rPropertyNames.getLength();
- const OUString* pNames = rPropertyNames.getConstArray();
- uno::Sequence< uno::Any > aRet ( nLength );
-
- uno::Any* pRet = aRet.getArray();
+ uno::Sequence<uno::Any> aRet (nLength);
+ if(!m_pBasePool)
+ {
+ if(!IsDescriptor())
+ throw uno::RuntimeException();
+ for(sal_Int32 nProp = 0; nProp < rPropertyNames.getLength(); ++nProp)
+ {
+ const uno::Any* pAny = nullptr;
+ m_pPropertiesImpl->GetProperty(rPropertyNames[nProp], pAny);
+ if (!pAny->hasValue())
+ SwStyleProperties_Impl::GetProperty(rPropertyNames[nProp], m_xStyleData, aRet[nProp]);
+ else
+ aRet[nProp] = *pAny;
+ }
+ return aRet;
+ }
const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(PROPERTY_MAP_PAGE_STYLE);
const SfxItemPropertyMap& rMap = pPropSet->getPropertyMap();
SwStyleBase_Impl aBase(*GetDoc(), GetStyleName(), &GetDoc()->GetDfltFrameFormat()->GetAttrSet()); //UUUU add pDfltFrameFormat as parent
- SfxStyleSheetBase* pBase = nullptr;
-
- for(sal_Int32 nProp = 0; nProp < nLength; nProp++)
+ SfxStyleSheetBase* pBase = GetStyleSheetBase();
+ if(!pBase)
+ throw uno::RuntimeException();
+ for(sal_Int32 nProp = 0; nProp < nLength; ++nProp)
{
- const OUString& rPropName = pNames[nProp];
+ const OUString& rPropName = rPropertyNames[nProp];
const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(rPropName);
if (!pEntry)
- {
throw beans::UnknownPropertyException("Unknown property: " + rPropName, static_cast < cppu::OWeakObject * > ( this ) );
- }
-
- if(m_pBasePool)
+ const bool bHeader(rPropName.startsWith("Header"));
+ const bool bFooter(rPropName.startsWith("Footer"));
+ const bool bFirstIsShared(rPropName == UNO_NAME_FIRST_IS_SHARED);
+ if(bHeader || bFooter || bFirstIsShared)
{
- if(!pBase)
- {
- const sal_uInt16 nSaveMask = m_pBasePool->GetSearchMask();
- m_pBasePool->SetSearchMask(GetFamily());
- pBase = m_pBasePool->Find(GetStyleName());
- m_pBasePool->SetSearchMask(GetFamily(), nSaveMask );
- }
-
- sal_uInt16 nRes = 0;
- const sal_uInt8 nMemberId(pEntry->nMemberId & (~SFX_METRIC_ITEM));
-
switch(pEntry->nWID)
{
case SID_ATTR_PAGE_ON:
@@ -2996,57 +2998,27 @@ uno::Sequence<uno::Any> SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence
case SID_ATTR_PAGE_SIZE:
case RES_HEADER_FOOTER_EAT_SPACING:
{
- // These slots are used for Header, Footer and (partially) for PageStyle directly.
- // Check for Header/Footer entry
- const bool bHeader(rPropName.startsWith("Header"));
- const bool bFooter(rPropName.startsWith("Footer"));
+ // slot is a Header/Footer slot
+ rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
+ const SfxItemSet& rSet = xStyle->GetItemSet();
+ const SvxSetItem* pSetItem;
- if(bHeader || bFooter || rPropName == UNO_NAME_FIRST_IS_SHARED)
+ if (lcl_GetHeaderFooterItem(rSet, rPropName, bFooter, pSetItem))
{
- // slot is a Header/Footer slot
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
- const SfxItemSet& rSet = xStyle->GetItemSet();
- const SvxSetItem* pSetItem;
-
- if (lcl_GetHeaderFooterItem(rSet, rPropName, bFooter, pSetItem))
- {
- // get from SfxItemSet of the corresponding SfxSetItem
- const SfxItemSet& rSetSet = pSetItem->GetItemSet();
- {
- SwStyleBase_Impl::ItemSetOverrider o(aBase, &const_cast< SfxItemSet& >(rSetSet));
- pRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
- }
- }
- else if(pEntry->nWID == SID_ATTR_PAGE_ON)
+ // get from SfxItemSet of the corresponding SfxSetItem
+ const SfxItemSet& rSetSet = pSetItem->GetItemSet();
{
- // header/footer is not available, thus off. Default is <false>, though
- pRet[nProp] <<= false;
+ SwStyleBase_Impl::ItemSetOverrider o(aBase, &const_cast< SfxItemSet& >(rSetSet));
+ aRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
}
}
- else
+ else if(pEntry->nWID == SID_ATTR_PAGE_ON)
{
- switch(pEntry->nWID)
- {
- case SID_ATTR_PAGE_DYNAMIC:
- case SID_ATTR_PAGE_SHARED:
- case SID_ATTR_PAGE_SHARED_FIRST:
- case SID_ATTR_PAGE_ON:
- case RES_HEADER_FOOTER_EAT_SPACING:
- {
- // these slots are exclusive to Header/Footer, thus this is an error
- throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropName, static_cast < cppu::OWeakObject * > ( this ) );
- }
- default:
- {
- // part of PageStyle, fallback to default
- pRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
- }
- }
+ // header/footer is not available, thus off. Default is <false>, though
+ aRet[nProp] <<= false;
}
-
- break;
}
-
+ continue;
case XATTR_FILLBMP_SIZELOG:
case XATTR_FILLBMP_TILEOFFSETX:
case XATTR_FILLBMP_TILEOFFSETY:
@@ -3068,130 +3040,97 @@ uno::Sequence<uno::Any> SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence
case XATTR_FILLTRANSPARENCE:
case XATTR_FILLFLOATTRANSPARENCE:
case XATTR_SECONDARYFILLCOLOR:
+ if(bFirstIsShared) // only special handling for headers/footers here
+ break;
{
- // This DrawingLayer FillStyle attributes can be part of Header, Footer and PageStyle
- // itself, so decide what to do using the name
- const bool bHeader(rPropName.startsWith("Header"));
- const bool bFooter(rPropName.startsWith("Footer"));
-
- if (bHeader || bFooter)
+ rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
+ const SfxItemSet& rSet = xStyle->GetItemSet();
+ const SvxSetItem* pSetItem;
+ if(SfxItemState::SET == rSet.GetItemState(bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, false, reinterpret_cast<const SfxPoolItem**>(&pSetItem)))
{
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
- const SfxItemSet& rSet = xStyle->GetItemSet();
- const SvxSetItem* pSetItem;
- if(SfxItemState::SET == rSet.GetItemState(bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, false, reinterpret_cast<const SfxPoolItem**>(&pSetItem)))
+ // set at SfxItemSet of the corresponding SfxSetItem
+ const SfxItemSet& rSetSet = pSetItem->GetItemSet();
{
- // set at SfxItemSet of the corresponding SfxSetItem
- const SfxItemSet& rSetSet = pSetItem->GetItemSet();
- {
- SwStyleBase_Impl::ItemSetOverrider o(aBase, &const_cast<SfxItemSet&>(rSetSet));
- pRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
- }
+ SwStyleBase_Impl::ItemSetOverrider o(aBase, &const_cast<SfxItemSet&>(rSetSet));
+ aRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
}
}
- else
- {
- // part of PageStyle, fallback to default
- pRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
- }
-
- break;
}
-
- case FN_UNO_HEADER:
- case FN_UNO_HEADER_LEFT:
- case FN_UNO_HEADER_FIRST:
- case FN_UNO_HEADER_RIGHT:
- case FN_UNO_FOOTER:
- case FN_UNO_FOOTER_LEFT:
- case FN_UNO_FOOTER_FIRST:
- case FN_UNO_FOOTER_RIGHT:
+ continue;
+ default: ;
+ }
+ }
+ switch(pEntry->nWID)
+ {
+ // these slots are exclusive to Header/Footer, thus this is an error
+ case SID_ATTR_PAGE_DYNAMIC:
+ case SID_ATTR_PAGE_SHARED:
+ case SID_ATTR_PAGE_SHARED_FIRST:
+ case SID_ATTR_PAGE_ON:
+ case RES_HEADER_FOOTER_EAT_SPACING:
+ throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropName, static_cast < cppu::OWeakObject * > ( this ) );
+ case FN_UNO_HEADER:
+ case FN_UNO_HEADER_LEFT:
+ case FN_UNO_HEADER_FIRST:
+ case FN_UNO_HEADER_RIGHT:
+ case FN_UNO_FOOTER:
+ case FN_UNO_FOOTER_LEFT:
+ case FN_UNO_FOOTER_FIRST:
+ case FN_UNO_FOOTER_RIGHT:
+ {
+ bool bLeft(false);
+ bool bFirst(false);
+ sal_uInt16 nRes = 0;
+ switch(pEntry->nWID)
{
- //UUUU cleanups for readability (undos removed, rearranged)
- bool bHeader(false);
- bool bLeft(false);
- bool bFirst(false);
-
- switch(pEntry->nWID)
- {
- case FN_UNO_HEADER: bHeader = true; nRes = RES_HEADER; break;
- case FN_UNO_HEADER_LEFT: bHeader = true; nRes = RES_HEADER; bLeft = true; break;
- case FN_UNO_HEADER_FIRST: bHeader = true; nRes = RES_HEADER; bFirst = true; break;
- case FN_UNO_HEADER_RIGHT: bHeader = true; nRes = RES_HEADER; break;
- case FN_UNO_FOOTER: bHeader = false; nRes = RES_FOOTER; break;
- case FN_UNO_FOOTER_LEFT: bHeader = false; nRes = RES_FOOTER; bLeft = true; break;
- case FN_UNO_FOOTER_FIRST: bHeader = false; nRes = RES_FOOTER; bFirst = true; break;
- case FN_UNO_FOOTER_RIGHT: bHeader = false; nRes = RES_FOOTER; break;
- default: break;
- }
-
- const SwPageDesc* pDesc = aBase.GetOldPageDesc();
- assert(pDesc);
- const SwFrameFormat* pFrameFormat = nullptr;
- bool bShare = (bHeader && pDesc->IsHeaderShared()) || (!bHeader && pDesc->IsFooterShared());
- bool bShareFirst = pDesc->IsFirstShared();
- // TextLeft returns the left content if there is one,
- // Text and TextRight return the master content.
- // TextRight does the same as Text and is for
- // compatibility only.
- if( bLeft && !bShare )
- {
- pFrameFormat = &pDesc->GetLeft();
- }
- else if (bFirst && !bShareFirst)
- {
- pFrameFormat = &pDesc->GetFirstMaster();
- // no need to make GetFirstLeft() accessible
- // since it is always shared
- }
- else
- {
- pFrameFormat = &pDesc->GetMaster();
- }
- const uno::Reference< text::XText > xRet =
- lcl_makeHeaderFooter(nRes, bHeader, pFrameFormat);
- if (xRet.is())
- {
- pRet[nProp] <<= xRet;
- }
- break;
+ case FN_UNO_HEADER: nRes = RES_HEADER; break;
+ case FN_UNO_HEADER_LEFT: nRes = RES_HEADER; bLeft = true; break;
+ case FN_UNO_HEADER_FIRST: nRes = RES_HEADER; bFirst = true; break;
+ case FN_UNO_HEADER_RIGHT: nRes = RES_HEADER; break;
+ case FN_UNO_FOOTER: nRes = RES_FOOTER; break;
+ case FN_UNO_FOOTER_LEFT: nRes = RES_FOOTER; bLeft = true; break;
+ case FN_UNO_FOOTER_FIRST: nRes = RES_FOOTER; bFirst = true; break;
+ case FN_UNO_FOOTER_RIGHT: nRes = RES_FOOTER; break;
+ default: ;
}
- case FN_PARAM_FTN_INFO :
+ const SwPageDesc* pDesc = aBase.GetOldPageDesc();
+ assert(pDesc);
+ const SwFrameFormat* pFrameFormat = nullptr;
+ bool bShare = (nRes == RES_HEADER && pDesc->IsHeaderShared()) || (nRes == RES_FOOTER && pDesc->IsFooterShared());
+ bool bShareFirst = pDesc->IsFirstShared();
+ // TextLeft returns the left content if there is one,
+ // Text and TextRight return the master content.
+ // TextRight does the same as Text and is for
+ // compatibility only.
+ if(bLeft && !bShare)
+ pFrameFormat = &pDesc->GetLeft();
+ else if(bFirst && !bShareFirst)
{
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
- const SfxItemSet& rSet = xStyle->GetItemSet();
- const SfxPoolItem& rItem = rSet.Get(FN_PARAM_FTN_INFO);
- rItem.QueryValue(pRet[nProp], nMemberId);
- break;
+ pFrameFormat = &pDesc->GetFirstMaster();
+ // no need to make GetFirstLeft() accessible
+ // since it is always shared
}
- default:
- {
- //UUUU
- pRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
- break;
- }
- }
- }
- else if(IsDescriptor())
- {
- const uno::Any* pAny = nullptr;
- m_pPropertiesImpl->GetProperty(rPropName, pAny);
- if (!pAny->hasValue())
- {
- SwStyleProperties_Impl::GetProperty(rPropName, m_xStyleData, pRet[nProp]);
+ else
+ pFrameFormat = &pDesc->GetMaster();
+ const uno::Reference<text::XText> xRet = lcl_makeHeaderFooter(nRes, nRes == RES_HEADER, pFrameFormat);
+ if (xRet.is())
+ aRet[nProp] = uno::makeAny(xRet);
}
- else
+ break;
+ case FN_PARAM_FTN_INFO:
{
- pRet[nProp] = *pAny;
+ rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
+ const SfxItemSet& rSet = xStyle->GetItemSet();
+ const SfxPoolItem& rItem = rSet.Get(FN_PARAM_FTN_INFO);
+ const sal_uInt8 nMemberId(pEntry->nMemberId & (~SFX_METRIC_ITEM));
+ rItem.QueryValue(aRet[nProp], nMemberId);
}
- }
- else
- {
- throw uno::RuntimeException();
+ break;
+ default:
+ aRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
}
}
-
return aRet;
}
commit 281623aa411d5ed9ef2f2f14293af98f07bb0013
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 13:04:16 2016 +0100
formatting: setPropertyValues, lcl_makeHeaderFooter
Change-Id: I55e9d5a0616b5ee8d0d678317086d0fdb2386e1a
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index e5d5851..8923871 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2908,9 +2908,7 @@ void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence<OUString>& rProper
}
}
-void SwXPageStyle::setPropertyValues(
- const uno::Sequence< OUString >& rPropertyNames,
- const uno::Sequence< uno::Any >& rValues )
+void SwXPageStyle::setPropertyValues(const uno::Sequence<OUString>& rPropertyNames, const uno::Sequence<uno::Any>& rValues)
throw(beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
@@ -2918,7 +2916,7 @@ void SwXPageStyle::setPropertyValues(
// workaround for bad designed API
try
{
- SetPropertyValues_Impl( rPropertyNames, rValues );
+ SetPropertyValues_Impl(rPropertyNames, rValues);
}
catch (const beans::UnknownPropertyException &rException)
{
@@ -2930,27 +2928,20 @@ void SwXPageStyle::setPropertyValues(
}
}
-static uno::Reference<text::XText>
-lcl_makeHeaderFooter(
- const sal_uInt16 nRes, const bool bHeader, SwFrameFormat const*const pFrameFormat)
+static uno::Reference<text::XText> lcl_makeHeaderFooter(const sal_uInt16 nRes, const bool bHeader, SwFrameFormat const*const pFrameFormat)
{
- if (!pFrameFormat) { return nullptr; }
-
+ if (!pFrameFormat)
+ return nullptr;
const SfxItemSet& rSet = pFrameFormat->GetAttrSet();
const SfxPoolItem* pItem;
- if (SfxItemState::SET == rSet.GetItemState(nRes, true, &pItem))
- {
- SwFrameFormat *const pHeadFootFormat = (bHeader)
- ? static_cast<SwFormatHeader*>(const_cast<SfxPoolItem*>(pItem))->
- GetHeaderFormat()
- : static_cast<SwFormatFooter*>(const_cast<SfxPoolItem*>(pItem))->
- GetFooterFormat();
- if (pHeadFootFormat)
- {
- return SwXHeadFootText::CreateXHeadFootText(*pHeadFootFormat, bHeader);
- }
- }
- return nullptr;
+ if(SfxItemState::SET != rSet.GetItemState(nRes, true, &pItem))
+ return nullptr;
+ SwFrameFormat* const pHeadFootFormat = (bHeader)
+ ? static_cast<SwFormatHeader*>(const_cast<SfxPoolItem*>(pItem))->GetHeaderFormat()
+ : static_cast<SwFormatFooter*>(const_cast<SfxPoolItem*>(pItem))->GetFooterFormat();
+ if(!pHeadFootFormat)
+ return nullptr;
+ return SwXHeadFootText::CreateXHeadFootText(*pHeadFootFormat, bHeader);
}
uno::Sequence<uno::Any> SwXPageStyle::GetPropertyValues_Impl(const uno::Sequence<OUString>& rPropertyNames)
commit 189ffe46107f10e3da80c4f11bc629bebd584960
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 12:20:36 2016 +0100
refactor SetPropertyValues_Impl
- use GetStyleSheetBase()
- check preconditions and special cases early
Change-Id: I95eb4cde66b9da2969bb257bd2de6b319b2b3950
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index e042560..e5d5851 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2705,9 +2705,7 @@ void SwXStyle::PutItemToSet(const SvxSetItem* pSetItem, const SfxItemPropertySet
rBaseImpl.GetItemSet().Put(*pNewSetItem);
}
-void SwXPageStyle::SetPropertyValues_Impl(
- const uno::Sequence< OUString >& rPropertyNames,
- const uno::Sequence< uno::Any >& rValues )
+void SwXPageStyle::SetPropertyValues_Impl(const uno::Sequence<OUString>& rPropertyNames, const uno::Sequence<uno::Any>& rValues)
{
if(!GetDoc())
throw uno::RuntimeException();
@@ -2715,44 +2713,36 @@ void SwXPageStyle::SetPropertyValues_Impl(
if(rPropertyNames.getLength() != rValues.getLength())
throw lang::IllegalArgumentException();
- const OUString* pNames = rPropertyNames.getConstArray();
- const uno::Any* pValues = rValues.getConstArray();
const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(PROPERTY_MAP_PAGE_STYLE);
const SfxItemPropertyMap& rMap = pPropSet->getPropertyMap();
SwStyleBase_Impl aBaseImpl(*GetDoc(), GetStyleName(), &GetDoc()->GetDfltFrameFormat()->GetAttrSet()); //UUUU add pDfltFrameFormat as parent
- if(m_pBasePool)
+ if(!m_pBasePool)
{
- const sal_uInt16 nSaveMask = m_pBasePool->GetSearchMask();
- m_pBasePool->SetSearchMask(GetFamily());
- SfxStyleSheetBase* pBase = m_pBasePool->Find(GetStyleName());
- m_pBasePool->SetSearchMask(GetFamily(), nSaveMask );
- OSL_ENSURE(pBase, "where is the style?" );
- if(pBase)
- {
- aBaseImpl.setNewBase(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
- }
- else
- {
+ if(!IsDescriptor())
throw uno::RuntimeException();
- }
+ for(sal_Int32 nProp = 0; nProp < rPropertyNames.getLength(); ++nProp)
+ if(!m_pPropertiesImpl->SetProperty(rPropertyNames[nProp], rValues[nProp]))
+ throw lang::IllegalArgumentException();
+ return;
}
-
- for(sal_Int32 nProp = 0; nProp < rPropertyNames.getLength(); nProp++)
+ SfxStyleSheetBase* pBase = GetStyleSheetBase();
+ if(!pBase)
+ throw uno::RuntimeException();
+ aBaseImpl.setNewBase(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
+ for(sal_Int32 nProp = 0; nProp < rPropertyNames.getLength(); ++nProp)
{
- const OUString& rPropName = pNames[nProp];
+ const OUString& rPropName = rPropertyNames[nProp];
const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(rPropName);
- if (!pEntry)
- {
- throw beans::UnknownPropertyException("Unknown property: " + pNames[nProp], static_cast < cppu::OWeakObject * > ( this ) );
- }
-
- if ( pEntry->nFlags & beans::PropertyAttribute::READONLY)
- {
- throw beans::PropertyVetoException ("Property is read-only: " + pNames[nProp], static_cast < cppu::OWeakObject * > ( this ) );
- }
+ if(!pEntry)
+ throw beans::UnknownPropertyException("Unknown property: " + rPropName, static_cast<cppu::OWeakObject*>(this));
+ if(pEntry->nFlags & beans::PropertyAttribute::READONLY)
+ throw beans::PropertyVetoException("Property is read-only: " + rPropName, static_cast<cppu::OWeakObject*>(this));
- if(m_pBasePool)
+ const bool bHeader(rPropName.startsWith("Header"));
+ const bool bFooter(rPropName.startsWith("Footer"));
+ const bool bFirstIsShared(rPropName == UNO_NAME_FIRST_IS_SHARED);
+ if(bHeader || bFooter || bFirstIsShared)
{
switch(pEntry->nWID)
{
@@ -2768,89 +2758,54 @@ void SwXPageStyle::SetPropertyValues_Impl(
case SID_ATTR_PAGE_SIZE:
case RES_HEADER_FOOTER_EAT_SPACING:
{
- // these entries are used in Header, Footer and (partially) in the PageStyle itself.
- // Check for Header/Footer entry
- const bool bHeader(rPropName.startsWith("Header"));
- const bool bFooter(rPropName.startsWith("Footer"));
-
- if(bHeader || bFooter || rPropName == UNO_NAME_FIRST_IS_SHARED)
+ // it is a Header/Footer entry, access the SvxSetItem containing it's information
+ const SvxSetItem* pSetItem = nullptr;
+ if (lcl_GetHeaderFooterItem(aBaseImpl.GetItemSet(), rPropName, bFooter, pSetItem))
{
- // it is a Header/Footer entry, access the SvxSetItem containing it's information
- const SvxSetItem* pSetItem = nullptr;
- if (lcl_GetHeaderFooterItem(aBaseImpl.GetItemSet(),
- rPropName, bFooter, pSetItem))
- {
- PutItemToSet(pSetItem, *pPropSet, *pEntry, pValues[nProp], aBaseImpl);
+ PutItemToSet(pSetItem, *pPropSet, *pEntry, rValues[nProp], aBaseImpl);
- if (pEntry->nWID == SID_ATTR_PAGE_SHARED_FIRST)
- {
- // Need to add this to the other as well
- if (SfxItemState::SET == aBaseImpl.GetItemSet().GetItemState(
- bFooter ? SID_ATTR_PAGE_HEADERSET : SID_ATTR_PAGE_FOOTERSET,
- false, reinterpret_cast<const SfxPoolItem**>(&pSetItem)))
- {
- PutItemToSet(pSetItem, *pPropSet, *pEntry, pValues[nProp], aBaseImpl);
- }
- }
- }
- else if(pEntry->nWID == SID_ATTR_PAGE_ON)
+ if (pEntry->nWID == SID_ATTR_PAGE_SHARED_FIRST)
{
- bool bVal = *static_cast<sal_Bool const *>(pValues[nProp].getValue());
-
- if(bVal)
+ // Need to add this to the other as well
+ if (SfxItemState::SET == aBaseImpl.GetItemSet().GetItemState(
+ bFooter ? SID_ATTR_PAGE_HEADERSET : SID_ATTR_PAGE_FOOTERSET,
+ false, reinterpret_cast<const SfxPoolItem**>(&pSetItem)))
{
- // Header/footer gets switched on, create defaults and the needed SfxSetItem
- SfxItemSet aTempSet(*aBaseImpl.GetItemSet().GetPool(),
- RES_FRMATR_BEGIN,RES_FRMATR_END - 1, // [82
-
- //UUUU FillAttribute support
- XATTR_FILL_FIRST, XATTR_FILL_LAST, // [1014
-
- SID_ATTR_BORDER_INNER,SID_ATTR_BORDER_INNER, // [10023
- SID_ATTR_PAGE_SIZE,SID_ATTR_PAGE_SIZE, // [10051
- SID_ATTR_PAGE_ON,SID_ATTR_PAGE_SHARED, // [10060
- SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST,
- 0);
-
- //UUUU set correct parent to get the XFILL_NONE FillStyle as needed
- aTempSet.SetParent(&GetDoc()->GetDfltFrameFormat()->GetAttrSet());
-
- aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_ON, true));
- aTempSet.Put(SvxSizeItem(SID_ATTR_PAGE_SIZE, Size(MM50, MM50)));
- aTempSet.Put(SvxLRSpaceItem(RES_LR_SPACE));
- aTempSet.Put(SvxULSpaceItem(RES_UL_SPACE));
- aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_SHARED, true));
- aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_SHARED_FIRST, true));
- aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_DYNAMIC, true));
-
- SvxSetItem aNewSetItem(bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, aTempSet);
- aBaseImpl.GetItemSet().Put(aNewSetItem);
+ PutItemToSet(pSetItem, *pPropSet, *pEntry, rValues[nProp], aBaseImpl);
}
}
}
- else
+ else if(pEntry->nWID == SID_ATTR_PAGE_ON && rValues[nProp].get<bool>())
{
- switch(pEntry->nWID)
- {
- case SID_ATTR_PAGE_DYNAMIC:
- case SID_ATTR_PAGE_SHARED:
- case SID_ATTR_PAGE_SHARED_FIRST:
- case SID_ATTR_PAGE_ON:
- case RES_HEADER_FOOTER_EAT_SPACING:
- {
- // these slots are exclusive to Header/Footer, thus this is an error
- throw beans::UnknownPropertyException(OUString ( RTL_CONSTASCII_USTRINGPARAM ( "Unknown property: " ) ) + rPropName, static_cast < cppu::OWeakObject * > ( this ) );
- }
- default:
- {
- // part of PageStyle, fallback to default
- SetStyleProperty(*pEntry, *pPropSet, pValues[nProp], aBaseImpl);
- }
- }
+ // Header/footer gets switched on, create defaults and the needed SfxSetItem
+ SfxItemSet aTempSet(*aBaseImpl.GetItemSet().GetPool(),
+ RES_FRMATR_BEGIN,RES_FRMATR_END - 1, // [82
+
+ //UUUU FillAttribute support
+ XATTR_FILL_FIRST, XATTR_FILL_LAST, // [1014
+
+ SID_ATTR_BORDER_INNER,SID_ATTR_BORDER_INNER, // [10023
+ SID_ATTR_PAGE_SIZE,SID_ATTR_PAGE_SIZE, // [10051
+ SID_ATTR_PAGE_ON,SID_ATTR_PAGE_SHARED, // [10060
+ SID_ATTR_PAGE_SHARED_FIRST,SID_ATTR_PAGE_SHARED_FIRST,
+ 0);
+
+ //UUUU set correct parent to get the XFILL_NONE FillStyle as needed
+ aTempSet.SetParent(&GetDoc()->GetDfltFrameFormat()->GetAttrSet());
+
+ aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_ON, true));
+ aTempSet.Put(SvxSizeItem(SID_ATTR_PAGE_SIZE, Size(MM50, MM50)));
+ aTempSet.Put(SvxLRSpaceItem(RES_LR_SPACE));
+ aTempSet.Put(SvxULSpaceItem(RES_UL_SPACE));
+ aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_SHARED, true));
+ aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_SHARED_FIRST, true));
+ aTempSet.Put(SfxBoolItem(SID_ATTR_PAGE_DYNAMIC, true));
+
+ SvxSetItem aNewSetItem(bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, aTempSet);
+ aBaseImpl.GetItemSet().Put(aNewSetItem);
}
- break;
}
-
+ continue;
case XATTR_FILLBMP_SIZELOG:
case XATTR_FILLBMP_TILEOFFSETX:
case XATTR_FILLBMP_TILEOFFSETY:
@@ -2872,85 +2827,70 @@ void SwXPageStyle::SetPropertyValues_Impl(
case XATTR_FILLTRANSPARENCE:
case XATTR_FILLFLOATTRANSPARENCE:
case XATTR_SECONDARYFILLCOLOR:
+ if(bFirstIsShared) // only special handling for headers/footers here
+ break;
{
- // This DrawingLayer FillStyle attributes can be part of Header, Footer and PageStyle
- // itself, so decide what to do using the name
- const bool bHeader(rPropName.startsWith("Header"));
- const bool bFooter(rPropName.startsWith("Footer"));
+ const SvxSetItem* pSetItem = nullptr;
- if (bHeader || bFooter)
+ if(SfxItemState::SET == aBaseImpl.GetItemSet().GetItemState(bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, false, reinterpret_cast<const SfxPoolItem**>(&pSetItem)))
{
- const SvxSetItem* pSetItem = nullptr;
+ // create a new SvxSetItem and get it's ItemSet as new target
+ std::unique_ptr<SvxSetItem> pNewSetItem(static_cast<SvxSetItem*>(pSetItem->Clone()));
+ SfxItemSet& rSetSet = pNewSetItem->GetItemSet();
- if(SfxItemState::SET == aBaseImpl.GetItemSet().GetItemState(bFooter ? SID_ATTR_PAGE_FOOTERSET : SID_ATTR_PAGE_HEADERSET, false, reinterpret_cast<const SfxPoolItem**>(&pSetItem)))
- {
- // create a new SvxSetItem and get it's ItemSet as new target
- SvxSetItem* pNewSetItem = static_cast< SvxSetItem* >(pSetItem->Clone());
- SfxItemSet& rSetSet = pNewSetItem->GetItemSet();
-
- // set parent to ItemSet to ensure XFILL_NONE as XFillStyleItem
- rSetSet.SetParent(&GetDoc()->GetDfltFrameFormat()->GetAttrSet());
+ // set parent to ItemSet to ensure XFILL_NONE as XFillStyleItem
+ rSetSet.SetParent(&GetDoc()->GetDfltFrameFormat()->GetAttrSet());
- // replace the used SfxItemSet at the SwStyleBase_Impl temporarily and use the
- // default method to set the property
- {
- SwStyleBase_Impl::ItemSetOverrider o(aBaseImpl, &rSetSet);
- SetStyleProperty(*pEntry, *pPropSet, pValues[nProp], aBaseImpl);
- }
+ // replace the used SfxItemSet at the SwStyleBase_Impl temporarily and use the
+ // default method to set the property
+ {
+ SwStyleBase_Impl::ItemSetOverrider o(aBaseImpl, &rSetSet);
+ SetStyleProperty(*pEntry, *pPropSet, rValues[nProp], aBaseImpl);
+ }
- // reset paret at ItemSet from SetItem
- rSetSet.SetParent(nullptr);
+ // reset paret at ItemSet from SetItem
+ rSetSet.SetParent(nullptr);
- // set the new SvxSetItem at the real target and delete it
- aBaseImpl.GetItemSet().Put(*pNewSetItem);
- delete pNewSetItem;
- }
+ // set the new SvxSetItem at the real target and delete it
+ aBaseImpl.GetItemSet().Put(*pNewSetItem);
}
- else
- {
- // part of PageStyle, fallback to default
- SetStyleProperty(*pEntry, *pPropSet, pValues[nProp], aBaseImpl);
- }
-
- break;
- }
- case FN_PARAM_FTN_INFO :
- {
- const SfxPoolItem& rItem = aBaseImpl.GetItemSet().Get(FN_PARAM_FTN_INFO);
- SfxPoolItem* pNewFootnoteItem = rItem.Clone();
- bool bPut = pNewFootnoteItem->PutValue(pValues[nProp], pEntry->nMemberId);
- aBaseImpl.GetItemSet().Put(*pNewFootnoteItem);
- delete pNewFootnoteItem;
- if(!bPut)
- throw lang::IllegalArgumentException();
- break;
- }
- case FN_UNO_HEADER :
- case FN_UNO_HEADER_LEFT :
- case FN_UNO_HEADER_RIGHT :
- case FN_UNO_HEADER_FIRST :
- case FN_UNO_FOOTER :
- case FN_UNO_FOOTER_LEFT :
- case FN_UNO_FOOTER_RIGHT :
- case FN_UNO_FOOTER_FIRST :
- {
- throw lang::IllegalArgumentException();
- }
- default:
- {
- SetStyleProperty(*pEntry, *pPropSet, pValues[nProp], aBaseImpl);
- break;
}
+ continue;
+ default: ;
}
}
- else if(IsDescriptor())
+ switch(pEntry->nWID)
{
- if(!m_pPropertiesImpl->SetProperty(rPropName, pValues[nProp]))
+ case SID_ATTR_PAGE_DYNAMIC:
+ case SID_ATTR_PAGE_SHARED:
+ case SID_ATTR_PAGE_SHARED_FIRST:
+ case SID_ATTR_PAGE_ON:
+ case RES_HEADER_FOOTER_EAT_SPACING:
+ // these slots are exclusive to Header/Footer, thus this is an error
+ throw beans::UnknownPropertyException(OUString("Unknown property: ") + rPropName, static_cast<cppu::OWeakObject*>(this));
+ case FN_UNO_HEADER:
+ case FN_UNO_HEADER_LEFT:
+ case FN_UNO_HEADER_RIGHT:
+ case FN_UNO_HEADER_FIRST:
+ case FN_UNO_FOOTER:
+ case FN_UNO_FOOTER_LEFT:
+ case FN_UNO_FOOTER_RIGHT:
+ case FN_UNO_FOOTER_FIRST:
throw lang::IllegalArgumentException();
- }
- else
- {
- throw uno::RuntimeException();
+ case FN_PARAM_FTN_INFO:
+ {
+ const SfxPoolItem& rItem = aBaseImpl.GetItemSet().Get(FN_PARAM_FTN_INFO);
+ const std::unique_ptr<SfxPoolItem> pNewFootnoteItem(rItem.Clone());
+ if(!pNewFootnoteItem->PutValue(rValues[nProp], pEntry->nMemberId))
+ throw lang::IllegalArgumentException();
+ aBaseImpl.GetItemSet().Put(*pNewFootnoteItem);
+ break;
+ }
+ default:
+ {
+ SetStyleProperty(*pEntry, *pPropSet, rValues[nProp], aBaseImpl);
+ break;
+ }
}
}
commit 83963a33da88f47f6e9b865188f9ec442d1ad770
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 12:09:52 2016 +0100
use unique_ptr instead of manual mem-mgmt
Change-Id: I68a3d1721fd6e1bcc206bdaec8dcf89a256b5ca1
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 3f88672..e042560 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2685,7 +2685,7 @@ SwXPageStyle::~SwXPageStyle()
void SwXStyle::PutItemToSet(const SvxSetItem* pSetItem, const SfxItemPropertySet& rPropSet, const SfxItemPropertySimpleEntry& rEntry, const uno::Any& rVal, SwStyleBase_Impl& rBaseImpl)
{
// create a new SvxSetItem and get it's ItemSet as new target
- SvxSetItem* pNewSetItem = static_cast< SvxSetItem* >(pSetItem->Clone());
+ const std::unique_ptr<SvxSetItem> pNewSetItem(static_cast<SvxSetItem*>(pSetItem->Clone()));
SfxItemSet& rSetSet = pNewSetItem->GetItemSet();
// set parent to ItemSet to ensure XFILL_NONE as XFillStyleItem
@@ -2703,7 +2703,6 @@ void SwXStyle::PutItemToSet(const SvxSetItem* pSetItem, const SfxItemPropertySet
// set the new SvxSetItem at the real target and delete it
rBaseImpl.GetItemSet().Put(*pNewSetItem);
- delete pNewSetItem;
}
void SwXPageStyle::SetPropertyValues_Impl(
commit fe60e39ac322303dbba91d49cf215c0c9f3edabe
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 11:52:35 2016 +0100
formatting/whitespace
Change-Id: Ia0cdeefdfe7b3800568b96b4bf904d7d0d62f4b9
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 24fec49..3f88672 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2671,23 +2671,16 @@ void SwXStyle::Invalidate()
m_xStyleFamily.clear();
}
-SwXPageStyle::SwXPageStyle(SfxStyleSheetBasePool& rPool,
- SwDocShell* pDocSh, SfxStyleFamily eFam,
- const OUString& rStyleName):
- SwXStyle(&rPool, eFam, pDocSh->GetDoc(), rStyleName)
-{
-
-}
+SwXPageStyle::SwXPageStyle(SfxStyleSheetBasePool& rPool, SwDocShell* pDocSh, SfxStyleFamily eFam, const OUString& rStyleName)
+ : SwXStyle(&rPool, eFam, pDocSh->GetDoc(), rStyleName)
+{ }
-SwXPageStyle::SwXPageStyle(SwDocShell* pDocSh) :
- SwXStyle(pDocSh->GetDoc(), SFX_STYLE_FAMILY_PAGE)
-{
-}
+SwXPageStyle::SwXPageStyle(SwDocShell* pDocSh)
+ : SwXStyle(pDocSh->GetDoc(), SFX_STYLE_FAMILY_PAGE)
+{ }
SwXPageStyle::~SwXPageStyle()
-{
-
-}
+{ }
void SwXStyle::PutItemToSet(const SvxSetItem* pSetItem, const SfxItemPropertySet& rPropSet, const SfxItemPropertySimpleEntry& rEntry, const uno::Any& rVal, SwStyleBase_Impl& rBaseImpl)
{
commit ac378355651a34bd0b88cdbea9de78beed6eac95
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 11:50:47 2016 +0100
refactor Notify
- check preconditions early
- SfxStyleSheetHintId::ERASED is already handled by first if() branch
Change-Id: I971eb460c3f006f19dde30f7aac30117be41a621
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index f28f320..24fec49 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2640,30 +2640,28 @@ uno::Any SwXStyle::getPropertyDefault(const OUString& rPropertyName)
return getPropertyDefaults(aSequence)[0];
}
-void SwXStyle::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
+void SwXStyle::Notify(SfxBroadcaster& rBC, const SfxHint& rHint)
{
const SfxSimpleHint* pHint = dynamic_cast<const SfxSimpleHint*>(&rHint);
- if( pHint )
+ if(!pHint)
+ return;
+ if((pHint->GetId() & SFX_HINT_DYING) || (pHint->GetId() & SfxStyleSheetHintId::ERASED))
+ {
+ m_pBasePool = nullptr;
+ EndListening(rBC);
+ }
+ else if(pHint->GetId() & (SfxStyleSheetHintId::CHANGED))
{
- if(( pHint->GetId() & SFX_HINT_DYING ) || ( pHint->GetId() & SfxStyleSheetHintId::ERASED))
+ static_cast<SfxStyleSheetBasePool&>(rBC).SetSearchMask(m_rEntry.m_eFamily);
+ SfxStyleSheetBase* pOwnBase = static_cast<SfxStyleSheetBasePool&>(rBC).Find(m_sStyleName);
+ if(!pOwnBase)
{
- m_pBasePool = nullptr;
EndListening(rBC);
- }
- else if( pHint->GetId() &(SfxStyleSheetHintId::CHANGED|SfxStyleSheetHintId::ERASED) )
- {
- static_cast<SfxStyleSheetBasePool&>(rBC).SetSearchMask(m_rEntry.m_eFamily);
- SfxStyleSheetBase* pOwnBase = static_cast<SfxStyleSheetBasePool&>(rBC).Find(m_sStyleName);
- if(!pOwnBase)
- {
- EndListening(rBC);
- Invalidate();
- }
+ Invalidate();
}
}
}
-
void SwXStyle::Invalidate()
{
m_sStyleName.clear();
commit fdf280853d54d6786479e15f231f5d447627fba1
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 11:42:48 2016 +0100
fix plenking, remove superficial getConstArray
Change-Id: I19afc0fe11e5457dfe2efc6b0224a6857d60a74b
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 29aa51c..f28f320 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2634,10 +2634,10 @@ uno::Sequence<uno::Any> SAL_CALL SwXStyle::getPropertyDefaults(const uno::Sequen
}
uno::Any SwXStyle::getPropertyDefault(const OUString& rPropertyName)
- throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception )
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
{
- const uno::Sequence < OUString > aSequence ( &rPropertyName, 1 );
- return getPropertyDefaults ( aSequence ).getConstArray()[0];
+ const uno::Sequence<OUString> aSequence(&rPropertyName, 1);
+ return getPropertyDefaults(aSequence)[0];
}
void SwXStyle::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
commit abb0c77a9bd76bf8eb46ee0ab1277cc4535731ee
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Wed Mar 16 11:33:48 2016 +0100
refactor getPropertyDefaults
- check preconditions early
- use GetStyleSheetBase()
- get nPropSetId from m_rEntry
Change-Id: I45854bf2b232552ccaffaedeeaa13f77fec82ecd
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 2add207..29aa51c 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2592,77 +2592,42 @@ void SAL_CALL SwXStyle::setAllPropertiesToDefault()
pTargetFormat->ResetAllFormatAttr();
}
-uno::Sequence< uno::Any > SAL_CALL SwXStyle::getPropertyDefaults( const uno::Sequence< OUString >& aPropertyNames )
- throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
+uno::Sequence<uno::Any> SAL_CALL SwXStyle::getPropertyDefaults(const uno::Sequence<OUString>& aPropertyNames)
+ throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
sal_Int32 nCount = aPropertyNames.getLength();
+ uno::Sequence<uno::Any> aRet(nCount);
+ if(!nCount)
+ return aRet;
+ SfxStyleSheetBase* pBase = GetStyleSheetBase();
+ if(!pBase)
+ throw uno::RuntimeException();
+ rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
+ const sal_Int8 nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : m_rEntry.m_nPropMapType;
+ const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
+ const SfxItemPropertyMap& rMap = pPropSet->getPropertyMap();
- uno::Sequence < uno::Any > aRet(nCount);
-
- if(nCount)
+ const SfxItemSet &rSet = xStyle->GetItemSet(), *pParentSet = rSet.GetParent();
+ for(sal_Int32 i = 0; i < nCount; ++i)
{
- if(m_pBasePool)
- {
- m_pBasePool->SetSearchMask(m_rEntry.m_eFamily);
- SfxStyleSheetBase* pBase = m_pBasePool->Find(m_sStyleName);
- OSL_ENSURE(pBase, "Doesn't seem to be a style!");
-
- if(pBase)
- {
- rtl::Reference< SwDocStyleSheet > xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
- sal_Int8 nPropSetId = PROPERTY_MAP_CHAR_STYLE;
- switch(m_rEntry.m_eFamily)
- {
- case SFX_STYLE_FAMILY_PARA : nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : PROPERTY_MAP_PARA_STYLE; break;
- case SFX_STYLE_FAMILY_FRAME : nPropSetId = PROPERTY_MAP_FRAME_STYLE; break;
- case SFX_STYLE_FAMILY_PAGE : nPropSetId = PROPERTY_MAP_PAGE_STYLE; break;
- case SFX_STYLE_FAMILY_PSEUDO: nPropSetId = PROPERTY_MAP_NUM_STYLE; break;
- default: ;
- }
- const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
- const SfxItemPropertyMap& rMap = pPropSet->getPropertyMap();
-
- const SfxItemSet &rSet = xStyle->GetItemSet(), *pParentSet = rSet.GetParent();
- const OUString *pNames = aPropertyNames.getConstArray();
- uno::Any *pRet = aRet.getArray();
-
- for(sal_Int32 i = 0; i < nCount; i++)
- {
- const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(pNames[i]);
-
- if(!pEntry)
- {
- throw beans::UnknownPropertyException("Unknown property: " + pNames[i], static_cast < cppu::OWeakObject * >(this));
- }
+ const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(aPropertyNames[i]);
- if (pEntry->nWID >= RES_UNKNOWNATR_END)
- {
- // these cannot be in an item set, especially not the
- // parent set, so the default value is void
- continue;
- }
-
- if(pParentSet)
- {
- aSwMapProvider.GetPropertySet(nPropSetId)->getPropertyValue(pNames[i], *pParentSet, pRet[i]);
- }
- else if(pEntry->nWID != rSet.GetPool()->GetSlotId(pEntry->nWID))
- {
- const SfxPoolItem& rItem = rSet.GetPool()->GetDefaultItem(pEntry->nWID);
+ if(!pEntry)
+ throw beans::UnknownPropertyException("Unknown property: " + aPropertyNames[i], static_cast < cppu::OWeakObject * >(this));
+ // these cannot be in an item set, especially not the
+ // parent set, so the default value is void
+ if (pEntry->nWID >= RES_UNKNOWNATR_END)
+ continue;
- rItem.QueryValue(pRet[i], pEntry->nMemberId);
- }
- }
- }
- else
- {
- throw uno::RuntimeException();
- }
+ if(pParentSet)
+ {
+ aSwMapProvider.GetPropertySet(nPropSetId)->getPropertyValue(aPropertyNames[i], *pParentSet, aRet[i]);
}
- else
+ else if(pEntry->nWID != rSet.GetPool()->GetSlotId(pEntry->nWID))
{
- throw uno::RuntimeException();
+ const SfxPoolItem& rItem = rSet.GetPool()->GetDefaultItem(pEntry->nWID);
+ rItem.QueryValue(aRet[i], pEntry->nMemberId);
}
}
return aRet;
commit 2ad92da790a65cfb447867e27ce959b85febfea1
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Tue Mar 15 22:33:13 2016 +0100
refactor setAllPropertiesToDefault
- check preconditions early
- move the SwDocStyleSheet creation out of lcl_GetFormatForStyle
Change-Id: I877d2d32ca8b631332f234a2cd3eefd43f099d43
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index bb61514..2add207 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2442,16 +2442,10 @@ void SwXStyle::setPropertyToDefault(const OUString& rPropertyName)
setPropertiesToDefault(aSequence);
}
-SwFormat* lcl_GetFormatForStyle(SfxStyleSheetBasePool* pBasePool, SwDoc* pDoc, const OUString& sStyleName, const SfxStyleFamily eFamily)
+SwFormat* lcl_GetFormatForStyle(SwDoc* pDoc, rtl::Reference<SwDocStyleSheet> xStyle, const SfxStyleFamily eFamily)
{
- if(!pBasePool)
- return nullptr;
- pBasePool->SetSearchMask(eFamily);
- SfxStyleSheetBase* pBase = pBasePool->Find(sStyleName);
- SAL_WARN_IF(!pBase, "sw.uno", "Where is the style?");
- if(pBase)
+ if(!xStyle.is())
return nullptr;
- rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
switch(eFamily)
{
case SFX_STYLE_FAMILY_CHAR: return xStyle->GetCharFormat();
@@ -2464,7 +2458,6 @@ SwFormat* lcl_GetFormatForStyle(SfxStyleSheetBasePool* pBasePool, SwDoc* pDoc, c
return &pDesc->GetMaster();
}
break;
- case SFX_STYLE_FAMILY_PSEUDO: break;
default: ;
}
return nullptr;
@@ -2474,7 +2467,8 @@ void SAL_CALL SwXStyle::setPropertiesToDefault(const uno::Sequence<OUString>& aP
throw (beans::UnknownPropertyException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
- SwFormat* pTargetFormat = lcl_GetFormatForStyle(m_pBasePool, m_pDoc, m_sStyleName, m_rEntry.m_eFamily);
+ const rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(GetStyleSheetBase())));
+ SwFormat* pTargetFormat = lcl_GetFormatForStyle(m_pDoc, xStyle, m_rEntry.m_eFamily);
if(!pTargetFormat)
{
if(!m_bIsDescriptor)
@@ -2516,130 +2510,86 @@ void SAL_CALL SwXStyle::setPropertiesToDefault(const uno::Sequence<OUString>& aP
}
}
-void SAL_CALL SwXStyle::setAllPropertiesToDefault( )
- throw (uno::RuntimeException, std::exception)
+void SAL_CALL SwXStyle::setAllPropertiesToDefault()
+ throw(uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
-
- if(m_pBasePool)
+ if(!m_pBasePool)
{
- m_pBasePool->SetSearchMask(m_rEntry.m_eFamily);
- SfxStyleSheetBase* pBase = m_pBasePool->Find(m_sStyleName);
- OSL_ENSURE(pBase, "Where is the style?");
-
- if(pBase)
+ if(!m_bIsDescriptor)
+ throw uno::RuntimeException();
+ m_pPropertiesImpl->ClearAllProperties();
+ return;
+ }
+ const rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(GetStyleSheetBase())));
+ if(!xStyle.is())
+ throw uno::RuntimeException();
+ if(SFX_STYLE_FAMILY_PAGE == m_rEntry.m_eFamily)
+ {
+ size_t nPgDscPos(0);
+ SwPageDesc* pDesc = m_pDoc->FindPageDesc(xStyle->GetPageDesc()->GetName(), &nPgDscPos);
+ SwFormat* pPageFormat(nullptr);
+ if(pDesc)
{
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
- SwFormat *pTargetFormat = nullptr;
- size_t nPgDscPos = SIZE_MAX;
- switch(m_rEntry.m_eFamily)
+ pPageFormat = &pDesc->GetMaster();
+ pDesc->SetUseOn(nsUseOnPage::PD_ALL);
+ }
+ else
+ pPageFormat = lcl_GetFormatForStyle(m_pDoc, xStyle, m_rEntry.m_eFamily);
+ SwPageDesc& rPageDesc = m_pDoc->GetPageDesc(nPgDscPos);
+ rPageDesc.ResetAllMasterAttr();
+
+ SvxLRSpaceItem aLR(RES_LR_SPACE);
+ sal_Int32 nSize = GetMetricVal(CM_1) * 2;
+ aLR.SetLeft(nSize);
+ aLR.SetLeft(nSize);
+ SvxULSpaceItem aUL(RES_UL_SPACE);
+ aUL.SetUpper(static_cast<sal_uInt16>(nSize));
+ aUL.SetLower(static_cast<sal_uInt16>(nSize));
+ pPageFormat->SetFormatAttr(aLR);
+ pPageFormat->SetFormatAttr(aUL);
+ SwPageDesc* pStdPgDsc = m_pDoc->getIDocumentStylePoolAccess().GetPageDescFromPool(RES_POOLPAGE_STANDARD);
+ SwFormatFrameSize aFrameSz(ATT_FIX_SIZE);
+
+ if(RES_POOLPAGE_STANDARD == rPageDesc.GetPoolFormatId())
+ {
+ if(m_pDoc->getIDocumentDeviceAccess().getPrinter(false))
{
- case SFX_STYLE_FAMILY_CHAR:
- pTargetFormat = xStyle->GetCharFormat();
- break;
-
- case SFX_STYLE_FAMILY_PARA:
- {
- pTargetFormat = xStyle->GetCollection();
- if(xStyle->GetCollection())
- {
- xStyle->GetCollection()->DeleteAssignmentToListLevelOfOutlineStyle();
- }
- break;
- }
-
- case SFX_STYLE_FAMILY_FRAME:
- pTargetFormat = xStyle->GetFrameFormat();
- break;
-
- case SFX_STYLE_FAMILY_PAGE:
- {
- SwPageDesc *pDesc = m_pDoc->FindPageDesc(xStyle->GetPageDesc()->GetName(), &nPgDscPos);
- if( pDesc )
- {
- pTargetFormat = &pDesc->GetMaster();
- pDesc->SetUseOn(nsUseOnPage::PD_ALL);
- }
- break;
- }
-
- case SFX_STYLE_FAMILY_PSEUDO:
- break;
-
- default: ;
+ const Size aPhysSize( SvxPaperInfo::GetPaperSize(
+ static_cast<Printer*>(m_pDoc->getIDocumentDeviceAccess().getPrinter(false))));
+ aFrameSz.SetSize(aPhysSize);
}
-
- if(pTargetFormat)
+ else
{
- if(SIZE_MAX != nPgDscPos)
- {
- SwPageDesc& rPageDesc = m_pDoc->GetPageDesc(nPgDscPos);
- rPageDesc.ResetAllMasterAttr();
-
- SvxLRSpaceItem aLR(RES_LR_SPACE);
- sal_Int32 nSize = GetMetricVal(CM_1) * 2;
- aLR.SetLeft(nSize);
- aLR.SetLeft(nSize);
- SvxULSpaceItem aUL(RES_UL_SPACE);
- aUL.SetUpper(static_cast <sal_uInt16> (nSize));
- aUL.SetLower(static_cast <sal_uInt16> (nSize));
- pTargetFormat->SetFormatAttr(aLR);
- pTargetFormat->SetFormatAttr(aUL);
- SwPageDesc* pStdPgDsc = m_pDoc->getIDocumentStylePoolAccess().GetPageDescFromPool(RES_POOLPAGE_STANDARD);
- SwFormatFrameSize aFrameSz(ATT_FIX_SIZE);
-
- if(RES_POOLPAGE_STANDARD == rPageDesc.GetPoolFormatId())
- {
- if(m_pDoc->getIDocumentDeviceAccess().getPrinter(false))
- {
- const Size aPhysSize( SvxPaperInfo::GetPaperSize(
- static_cast<Printer*>(m_pDoc->getIDocumentDeviceAccess().getPrinter(false))));
- aFrameSz.SetSize(aPhysSize);
- }
- else
- {
- aFrameSz.SetSize(SvxPaperInfo::GetDefaultPaperSize());
- }
-
- }
- else
- {
- aFrameSz = pStdPgDsc->GetMaster().GetFrameSize();
- }
-
- if(pStdPgDsc->GetLandscape())
- {
- SwTwips nTmp = aFrameSz.GetHeight();
- aFrameSz.SetHeight(aFrameSz.GetWidth());
- aFrameSz.SetWidth(nTmp);
- }
-
- pTargetFormat->SetFormatAttr( aFrameSz );
- }
- else
- {
- pTargetFormat->ResetAllFormatAttr();
- }
-
- if(SIZE_MAX != nPgDscPos)
- {
- m_pDoc->ChgPageDesc(nPgDscPos, m_pDoc->GetPageDesc(nPgDscPos));
- }
+ aFrameSz.SetSize(SvxPaperInfo::GetDefaultPaperSize());
}
+
}
else
{
- throw uno::RuntimeException();
+ aFrameSz = pStdPgDsc->GetMaster().GetFrameSize();
}
+
+ if(pStdPgDsc->GetLandscape())
+ {
+ SwTwips nTmp = aFrameSz.GetHeight();
+ aFrameSz.SetHeight(aFrameSz.GetWidth());
+ aFrameSz.SetWidth(nTmp);
+ }
+
+ pPageFormat->SetFormatAttr(aFrameSz);
+ m_pDoc->ChgPageDesc(nPgDscPos, m_pDoc->GetPageDesc(nPgDscPos));
+ return;
}
- else if ( m_bIsDescriptor )
- {
- m_pPropertiesImpl->ClearAllProperties();
- }
- else
+ if(SFX_STYLE_FAMILY_PARA == m_rEntry.m_eFamily)
{
- throw uno::RuntimeException();
+ if(xStyle->GetCollection())
+ xStyle->GetCollection()->DeleteAssignmentToListLevelOfOutlineStyle();
}
+ SwFormat* const pTargetFormat = lcl_GetFormatForStyle(m_pDoc, xStyle, m_rEntry.m_eFamily);
+ if(!pTargetFormat)
+ return;
+ pTargetFormat->ResetAllFormatAttr();
}
uno::Sequence< uno::Any > SAL_CALL SwXStyle::getPropertyDefaults( const uno::Sequence< OUString >& aPropertyNames )
commit 36a2245198f8bdbf5840ec9c6b85075184e15503
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Tue Mar 15 13:25:11 2016 +0100
refactor setPropertyToDefault
- check preconditions early
- extract finding the SwFormat in a helper function
- use ranged-for instead of naked pointer arithmetic
- OSL_ENSURE -> SAL_WARN_IF
Change-Id: I3f5754632c9dab29ce3acc4f59e33cb32e239cbb
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 07eb1e5..bb61514 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2442,113 +2442,76 @@ void SwXStyle::setPropertyToDefault(const OUString& rPropertyName)
setPropertiesToDefault(aSequence);
}
-void SAL_CALL SwXStyle::setPropertiesToDefault( const uno::Sequence< OUString >& aPropertyNames )
- throw (beans::UnknownPropertyException, uno::RuntimeException, std::exception)
+SwFormat* lcl_GetFormatForStyle(SfxStyleSheetBasePool* pBasePool, SwDoc* pDoc, const OUString& sStyleName, const SfxStyleFamily eFamily)
{
- SolarMutexGuard aGuard;
- SwFormat *pTargetFormat = nullptr;
-
- if(m_pBasePool)
+ if(!pBasePool)
+ return nullptr;
+ pBasePool->SetSearchMask(eFamily);
+ SfxStyleSheetBase* pBase = pBasePool->Find(sStyleName);
+ SAL_WARN_IF(!pBase, "sw.uno", "Where is the style?");
+ if(pBase)
+ return nullptr;
+ rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
+ switch(eFamily)
{
- m_pBasePool->SetSearchMask(m_rEntry.m_eFamily);
- SfxStyleSheetBase* pBase = m_pBasePool->Find(m_sStyleName);
- OSL_ENSURE(pBase, "Where is the style?");
-
- if(pBase)
+ case SFX_STYLE_FAMILY_CHAR: return xStyle->GetCharFormat();
+ case SFX_STYLE_FAMILY_PARA: return xStyle->GetCollection();
+ case SFX_STYLE_FAMILY_FRAME: return xStyle->GetFrameFormat();
+ case SFX_STYLE_FAMILY_PAGE:
{
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
- switch(m_rEntry.m_eFamily)
- {
- case SFX_STYLE_FAMILY_CHAR:
- pTargetFormat = xStyle->GetCharFormat();
- break;
-
- case SFX_STYLE_FAMILY_PARA:
- pTargetFormat = xStyle->GetCollection();
- break;
-
- case SFX_STYLE_FAMILY_FRAME:
- pTargetFormat = xStyle->GetFrameFormat();
- break;
-
- case SFX_STYLE_FAMILY_PAGE:
- {
- SwPageDesc *pDesc = m_pDoc->FindPageDesc(xStyle->GetPageDesc()->GetName());
- if( pDesc )
- pTargetFormat = &pDesc->GetMaster();
- break;
- }
- case SFX_STYLE_FAMILY_PSEUDO:
- break;
- default: ;
- }
+ SwPageDesc* pDesc(pDoc->FindPageDesc(xStyle->GetPageDesc()->GetName()));
+ if(pDesc)
+ return &pDesc->GetMaster();
}
+ break;
+ case SFX_STYLE_FAMILY_PSEUDO: break;
+ default: ;
}
+ return nullptr;
+}
- sal_Int8 nPropSetId = PROPERTY_MAP_CHAR_STYLE;
-
- switch(m_rEntry.m_eFamily)
+void SAL_CALL SwXStyle::setPropertiesToDefault(const uno::Sequence<OUString>& aPropertyNames)
+ throw (beans::UnknownPropertyException, uno::RuntimeException, std::exception)
+{
+ SolarMutexGuard aGuard;
+ SwFormat* pTargetFormat = lcl_GetFormatForStyle(m_pBasePool, m_pDoc, m_sStyleName, m_rEntry.m_eFamily);
+ if(!pTargetFormat)
{
- case SFX_STYLE_FAMILY_PARA : nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : PROPERTY_MAP_PARA_STYLE; break;
- case SFX_STYLE_FAMILY_FRAME : nPropSetId = PROPERTY_MAP_FRAME_STYLE; break;
- case SFX_STYLE_FAMILY_PAGE : nPropSetId = PROPERTY_MAP_PAGE_STYLE; break;
- case SFX_STYLE_FAMILY_PSEUDO: nPropSetId = PROPERTY_MAP_NUM_STYLE; break;
- default: ;
+ if(!m_bIsDescriptor)
+ return;
+ for(const auto& rName : aPropertyNames)
+ m_pPropertiesImpl->ClearProperty(rName);
+ return;
}
-
+ const sal_Int8 nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : m_rEntry.m_nPropMapType;
const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
const SfxItemPropertyMap &rMap = pPropSet->getPropertyMap();
- const OUString* pNames = aPropertyNames.getConstArray();
-
- if(pTargetFormat)
+ for(const auto& rName : aPropertyNames)
{
- for(sal_Int32 nProp = 0, nEnd = aPropertyNames.getLength(); nProp < nEnd; nProp++)
+ const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(rName);
+ if(!pEntry)
+ throw beans::UnknownPropertyException("Unknown property: " + rName, static_cast<cppu::OWeakObject*>(this));
+ if(pEntry->nWID == FN_UNO_FOLLOW_STYLE || pEntry->nWID == FN_UNO_NUM_RULES)
+ throw uno::RuntimeException("Cannot reset: " + rName, static_cast<cppu::OWeakObject*>(this));
+ if(pEntry->nFlags & beans::PropertyAttribute::READONLY)
+ throw uno::RuntimeException("setPropertiesToDefault: property is read-only: " + rName, static_cast<cppu::OWeakObject*>(this));
+ if(pEntry->nWID == RES_PARATR_OUTLINELEVEL)
{
- const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(pNames[nProp]);
-
- if( !pEntry )
- {
- throw beans::UnknownPropertyException ( "Unknown property: " + pNames[nProp], static_cast < cppu::OWeakObject * > ( this ) );
- }
-
- if ( pEntry->nWID == FN_UNO_FOLLOW_STYLE || pEntry->nWID == FN_UNO_NUM_RULES )
- {
- throw uno::RuntimeException ("Cannot reset: " + pNames[nProp], static_cast < cppu::OWeakObject * > ( this ) );
- }
-
- if (pEntry->nFlags & beans::PropertyAttribute::READONLY)
- {
- throw uno::RuntimeException("setPropertiesToDefault: property is read-only: " + pNames[nProp], static_cast < cppu::OWeakObject * > ( this ) );
- }
-
- if( pEntry->nWID == RES_PARATR_OUTLINELEVEL )
- {
- static_cast<SwTextFormatColl*>(pTargetFormat)->DeleteAssignmentToListLevelOfOutlineStyle();
- }
- else
- {
- pTargetFormat->ResetFormatAttr( pEntry->nWID );
- }
-
- if(OWN_ATTR_FILLBMP_MODE == pEntry->nWID)
- {
- //UUUU
- SwDoc* pDoc = pTargetFormat->GetDoc();
- SfxItemSet aSet(pDoc->GetAttrPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
- aSet.SetParent(&pTargetFormat->GetAttrSet());
-
- aSet.ClearItem(XATTR_FILLBMP_STRETCH);
- aSet.ClearItem(XATTR_FILLBMP_TILE);
-
- pTargetFormat->SetFormatAttr(aSet);
- }
+ static_cast<SwTextFormatColl*>(pTargetFormat)->DeleteAssignmentToListLevelOfOutlineStyle();
+ continue;
}
- }
- else if(m_bIsDescriptor)
- {
- for(sal_Int32 nProp = 0, nEnd = aPropertyNames.getLength(); nProp < nEnd; nProp++)
+ pTargetFormat->ResetFormatAttr(pEntry->nWID);
+ if(OWN_ATTR_FILLBMP_MODE == pEntry->nWID)
{
- m_pPropertiesImpl->ClearProperty(pNames[nProp]);
+ //UUUU
+ SwDoc* pDoc = pTargetFormat->GetDoc();
+ SfxItemSet aSet(pDoc->GetAttrPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST);
+ aSet.SetParent(&pTargetFormat->GetAttrSet());
+
+ aSet.ClearItem(XATTR_FILLBMP_STRETCH);
+ aSet.ClearItem(XATTR_FILLBMP_TILE);
+
+ pTargetFormat->SetFormatAttr(aSet);
}
}
}
commit ee105a940751bcc31e18643220b631301a82587b
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Tue Mar 15 12:42:42 2016 +0100
whitespace: fix plenking
Change-Id: Ie5473191f5121eab95a3aaef67738240e5c75393
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index d1111b9..07eb1e5 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2436,10 +2436,10 @@ uno::Sequence<beans::PropertyState> SwXStyle::getPropertyStates(const uno::Seque
}
void SwXStyle::setPropertyToDefault(const OUString& rPropertyName)
- throw( beans::UnknownPropertyException, uno::RuntimeException, std::exception )
+ throw(beans::UnknownPropertyException, uno::RuntimeException, std::exception)
{
- const uno::Sequence < OUString > aSequence ( &rPropertyName, 1 );
- setPropertiesToDefault ( aSequence );
+ const uno::Sequence<OUString> aSequence(&rPropertyName, 1);
+ setPropertiesToDefault(aSequence);
}
void SAL_CALL SwXStyle::setPropertiesToDefault( const uno::Sequence< OUString >& aPropertyNames )
commit 4dbc3f0dfb8e7b337477fa70d6fd687a3f1d2ef9
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Tue Mar 15 00:37:36 2016 +0100
refactor getPropertyStates
- refactor out Header/Footer special casing
- check preconditions early
- OSL_ENSURE -> SAL_WARN_IIF
- use m_rEntry to find nPropSetId
- remove bDone cludge and use switch/case for remainders
Change-Id: I7fcac7e9c44190b6695bb0ced4278b50bd7f1c46
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index bc8064b..d1111b9 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2323,149 +2323,115 @@ beans::PropertyState SwXStyle::getPropertyState(const OUString& rPropertyName)
return aStates.getConstArray()[0];
}
-uno::Sequence< beans::PropertyState > SwXStyle::getPropertyStates(
- const uno::Sequence< OUString >& rPropertyNames)
- throw( beans::UnknownPropertyException, uno::RuntimeException, std::exception )
+// allow to retarget the SfxItemSet working on, default correctly. Only
+// use pSourceSet below this point (except in header/footer processing)
+const SfxItemSet* lcl_GetItemsetForProperty(const SfxItemSet& rSet, SfxStyleFamily eFamily, const OUString& rPropertyName)
+{
+ if(eFamily != SFX_STYLE_FAMILY_PAGE)
+ return &rSet;
+ const bool isFooter = rPropertyName.startsWith("Footer");
+ if(!isFooter && !rPropertyName.startsWith("Header") && rPropertyName != UNO_NAME_FIRST_IS_SHARED)
+ return &rSet;
+ const SvxSetItem* pSetItem;
+ if(!lcl_GetHeaderFooterItem(rSet, rPropertyName, isFooter, pSetItem))
+ return nullptr;
+ return &pSetItem->GetItemSet();
+}
+uno::Sequence<beans::PropertyState> SwXStyle::getPropertyStates(const uno::Sequence<OUString>& rPropertyNames)
+ throw(beans::UnknownPropertyException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
- uno::Sequence< beans::PropertyState > aRet(rPropertyNames.getLength());
+ uno::Sequence<beans::PropertyState> aRet(rPropertyNames.getLength());
beans::PropertyState* pStates = aRet.getArray();
- if(m_pBasePool)
- {
- m_pBasePool->SetSearchMask(m_rEntry.m_eFamily );
- SfxStyleSheetBase* pBase = m_pBasePool->Find(m_sStyleName);
- OSL_ENSURE(pBase, "where is the style?" );
+ if(!m_pBasePool)
+ throw uno::RuntimeException();
+ m_pBasePool->SetSearchMask(m_rEntry.m_eFamily);
+ SfxStyleSheetBase* pBase = m_pBasePool->Find(m_sStyleName);
- if(pBase)
- {
- const OUString* pNames = rPropertyNames.getConstArray();
- rtl::Reference< SwDocStyleSheet > xStyle( new SwDocStyleSheet( *static_cast<SwDocStyleSheet*>(pBase) ) );
- sal_Int8 nPropSetId = PROPERTY_MAP_CHAR_STYLE;
+ SAL_WARN_IF(!pBase, "sw.uno", "where is the style?");
+ if(!pBase)
+ throw uno::RuntimeException();
- switch(m_rEntry.m_eFamily)
- {
- case SFX_STYLE_FAMILY_PARA : nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : PROPERTY_MAP_PARA_STYLE; break;
- case SFX_STYLE_FAMILY_FRAME : nPropSetId = PROPERTY_MAP_FRAME_STYLE ;break;
- case SFX_STYLE_FAMILY_PAGE : nPropSetId = PROPERTY_MAP_PAGE_STYLE; break;
- case SFX_STYLE_FAMILY_PSEUDO: nPropSetId = PROPERTY_MAP_NUM_STYLE ;break;
- default: ;
- }
+ const OUString* pNames = rPropertyNames.getConstArray();
+ rtl::Reference<SwDocStyleSheet> xStyle(new SwDocStyleSheet(*static_cast<SwDocStyleSheet*>(pBase)));
+ sal_Int8 nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : m_rEntry.m_nPropMapType;
- const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
- const SfxItemPropertyMap &rMap = pPropSet->getPropertyMap();
- const SfxItemSet& rSet = xStyle->GetItemSet();
+ const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
+ const SfxItemPropertyMap& rMap = pPropSet->getPropertyMap();
+ const SfxItemSet& rSet = xStyle->GetItemSet();
- for(sal_Int32 i = 0; i < rPropertyNames.getLength(); i++)
- {
- const OUString sPropName = pNames[i];
- const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(sPropName);
- bool bDone(false);
+ for(sal_Int32 i = 0; i < rPropertyNames.getLength(); ++i)
+ {
+ const OUString sPropName = pNames[i];
+ const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(sPropName);
- if(!pEntry)
- {
- throw beans::UnknownPropertyException("Unknown property: " + sPropName, static_cast < cppu::OWeakObject * > ( this ) );
- }
+ if(!pEntry)
+ throw beans::UnknownPropertyException("Unknown property: " + sPropName, static_cast<cppu::OWeakObject*>(this));
- if( FN_UNO_NUM_RULES == pEntry->nWID || FN_UNO_FOLLOW_STYLE == pEntry->nWID )
+ if(FN_UNO_NUM_RULES == pEntry->nWID || FN_UNO_FOLLOW_STYLE == pEntry->nWID)
+ {
+ // handle NumRules first, done
+ pStates[i] = beans::PropertyState_DIRECT_VALUE;
+ continue;
+ }
+ const SfxItemSet* pSourceSet = lcl_GetItemsetForProperty(rSet, m_rEntry.m_eFamily, sPropName);
+ if(!pSourceSet)
+ {
+ // if no SetItem, value is ambigous and we are done
+ pStates[i] = beans::PropertyState_AMBIGUOUS_VALUE;
+ continue;
+ }
+ switch(pEntry->nWID)
+ {
+ case OWN_ATTR_FILLBMP_MODE:
+ {
+ //UUUU
+ if(SfxItemState::SET == pSourceSet->GetItemState(XATTR_FILLBMP_STRETCH, false)
+ || SfxItemState::SET == pSourceSet->GetItemState(XATTR_FILLBMP_TILE, false))
{
- // handle NumRules first, done
pStates[i] = beans::PropertyState_DIRECT_VALUE;
- bDone = true;
}
-
- // allow to retarget the SfxItemSet working on, default correctly. Only
- // use pSourceSet below this point (except in header/footer processing)
- const SfxItemSet* pSourceSet = &rSet;
-
- if(!bDone)
- {
- // check for Header/Footer entry
- const bool bHeader(SFX_STYLE_FAMILY_PAGE == m_rEntry.m_eFamily && sPropName.startsWith("Header"));
- const bool bFooter(SFX_STYLE_FAMILY_PAGE == m_rEntry.m_eFamily && sPropName.startsWith("Footer"));
-
- if(bHeader || bFooter || sPropName == UNO_NAME_FIRST_IS_SHARED)
- {
- const SvxSetItem* pSetItem;
-
- if (lcl_GetHeaderFooterItem(rSet, sPropName, bFooter, pSetItem))
- {
- // retarget the SfxItemSet to the HeaderFooter SfxSetItem's SfxItenSet
- pSourceSet = &pSetItem->GetItemSet();
- }
- else
- {
- // if no SetItem, value is ambigous and we are done
- pStates[i] = beans::PropertyState_AMBIGUOUS_VALUE;
- bDone = true;
- }
- }
- }
-
- if(!bDone && OWN_ATTR_FILLBMP_MODE == pEntry->nWID)
+ else
{
- //UUUU
- if(SfxItemState::SET == pSourceSet->GetItemState(XATTR_FILLBMP_STRETCH, false)
- || SfxItemState::SET == pSourceSet->GetItemState(XATTR_FILLBMP_TILE, false))
- {
- pStates[i] = beans::PropertyState_DIRECT_VALUE;
- }
- else
- {
- pStates[i] = beans::PropertyState_AMBIGUOUS_VALUE;
- }
-
- bDone = true;
+ pStates[i] = beans::PropertyState_AMBIGUOUS_VALUE;
}
-
+ }
+ break;
+ case RES_BACKGROUND:
+ {
//UUUU for FlyFrames we need to mark the used properties from type RES_BACKGROUND
// as beans::PropertyState_DIRECT_VALUE to let users of this property call
// getPropertyValue where the member properties will be mapped from the
// fill attributes to the according SvxBrushItem entries
- if (!bDone && RES_BACKGROUND == pEntry->nWID)
+ if (SWUnoHelper::needToMapFillItemsToSvxBrushItemTypes(*pSourceSet, pEntry->nMemberId))
{
- if (SWUnoHelper::needToMapFillItemsToSvxBrushItemTypes(*pSourceSet, pEntry->nMemberId))
- {
- pStates[i] = beans::PropertyState_DIRECT_VALUE;
- }
- else
- {
- pStates[i] = beans::PropertyState_DEFAULT_VALUE;
- }
- bDone = true;
+ pStates[i] = beans::PropertyState_DIRECT_VALUE;
}
+ else
+ {
+ pStates[i] = beans::PropertyState_DEFAULT_VALUE;
+ }
+ }
+ break;
+ default:
+ {
+ pStates[i] = pPropSet->getPropertyState(*pEntry, *pSourceSet);
- if(!bDone)
+ if(SFX_STYLE_FAMILY_PAGE == m_rEntry.m_eFamily && SID_ATTR_PAGE_SIZE == pEntry->nWID && beans::PropertyState_DIRECT_VALUE == pStates[i])
{
- pStates[i] = pPropSet->getPropertyState(*pEntry, *pSourceSet);
+ const SvxSizeItem& rSize = static_cast <const SvxSizeItem&>( rSet.Get(SID_ATTR_PAGE_SIZE));
+ sal_uInt8 nMemberId = pEntry->nMemberId & 0x7f;
- if(SFX_STYLE_FAMILY_PAGE == m_rEntry.m_eFamily && SID_ATTR_PAGE_SIZE == pEntry->nWID && beans::PropertyState_DIRECT_VALUE == pStates[i])
+ if((LONG_MAX == rSize.GetSize().Width() && (MID_SIZE_WIDTH == nMemberId || MID_SIZE_SIZE == nMemberId)) ||
+ (LONG_MAX == rSize.GetSize().Height() && MID_SIZE_HEIGHT == nMemberId))
{
- const SvxSizeItem& rSize = static_cast <const SvxSizeItem&>( rSet.Get(SID_ATTR_PAGE_SIZE));
- sal_uInt8 nMemberId = pEntry->nMemberId & 0x7f;
-
- if( ( LONG_MAX == rSize.GetSize().Width() &&
- (MID_SIZE_WIDTH == nMemberId ||
- MID_SIZE_SIZE == nMemberId ) ) ||
- ( LONG_MAX == rSize.GetSize().Height() &&
- MID_SIZE_HEIGHT == nMemberId ) )
- {
- pStates[i] = beans::PropertyState_DEFAULT_VALUE;
- }
+ pStates[i] = beans::PropertyState_DEFAULT_VALUE;
}
}
}
}
- else
- {
- throw uno::RuntimeException();
- }
- }
- else
- {
- throw uno::RuntimeException();
}
-
return aRet;
}
commit fee21c82cbabeceb4a7776ebdb46905f5dac769d
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Mon Mar 14 23:10:00 2016 +0100
minor whitespace fixes
Change-Id: Iea6e6bff9dfbb713b587b01d08e3e570e683609d
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 5bce3bb..bc8064b 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -2306,26 +2306,20 @@ uno::Sequence<uno::Any> SwXStyle::getPropertyValues(const uno::Sequence<OUString
}
void SwXStyle::setPropertyValue(const OUString& rPropertyName, const uno::Any& rValue)
- throw( beans::UnknownPropertyException,
- beans::PropertyVetoException,
- lang::IllegalArgumentException,
- lang::WrappedTargetException,
- uno::RuntimeException, std::exception)
+ throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
const uno::Sequence<OUString> aProperties(&rPropertyName, 1);
const uno::Sequence<uno::Any> aValues(&rValue, 1);
-
- SetPropertyValues_Impl( aProperties, aValues );
+ SetPropertyValues_Impl(aProperties, aValues);
}
-
beans::PropertyState SwXStyle::getPropertyState(const OUString& rPropertyName)
- throw( beans::UnknownPropertyException, uno::RuntimeException, std::exception )
+ throw(beans::UnknownPropertyException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
- uno::Sequence< OUString > aNames { rPropertyName };
- uno::Sequence< beans::PropertyState > aStates = getPropertyStates(aNames);
+ uno::Sequence<OUString> aNames{rPropertyName};
+ uno::Sequence<beans::PropertyState> aStates = getPropertyStates(aNames);
return aStates.getConstArray()[0];
}
commit 454aebe35e63d16348e680286f90883b0f27051c
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date: Mon Mar 14 00:55:40 2016 +0100
rename/move main logic from GetPropertyValues_Impl to GetPropertyValue_Impl
Change-Id: Iaf428141383f29da33c3102c40dd5a8f5392edff
diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx
index 21e9331..5bce3bb 100644
--- a/sw/source/core/unocore/unostyle.cxx
+++ b/sw/source/core/unocore/unostyle.cxx
@@ -295,7 +295,7 @@ protected:
template<sal_uInt16>
uno::Any GetStyleProperty(const SfxItemPropertySimpleEntry& rEntry, const SfxItemPropertySet& rPropSet, SwStyleBase_Impl& rBase);
uno::Any GetStyleProperty_Impl(const SfxItemPropertySimpleEntry& rEntry, const SfxItemPropertySet& rPropSet, SwStyleBase_Impl& rBase);
- css::uno::Sequence<uno::Any> GetPropertyValues_Impl(const css::uno::Sequence< OUString >& aPropertyNames);
+ uno::Any GetPropertyValue_Impl(const SfxItemPropertySet* pPropSet, SwStyleBase_Impl& rBase, const OUString& rPropertyName);
virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew) override;
public:
@@ -2219,91 +2219,89 @@ uno::Any SwXStyle::GetStyleProperty_Impl(const SfxItemPropertySimpleEntry& rEntr
return GetStyleProperty<HINT_BEGIN>(rEntry, rPropSet, rBase);
}
-uno::Sequence<uno::Any> SwXStyle::GetPropertyValues_Impl(const uno::Sequence<OUString>& rPropertyNames)
+uno::Any SwXStyle::GetPropertyValue_Impl(const SfxItemPropertySet* pPropSet, SwStyleBase_Impl& rBase, const OUString& rPropertyName)
{
- if(!m_pDoc)
- throw uno::RuntimeException();
-
- sal_Int8 nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : m_rEntry.m_nPropMapType;
-
- const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
- const SfxItemPropertyMap &rMap = pPropSet->getPropertyMap();
- const OUString* pNames = rPropertyNames.getConstArray();
- uno::Sequence< uno::Any > aRet(rPropertyNames.getLength());
- uno::Any* pRet = aRet.getArray();
- SwStyleBase_Impl aBase(*m_pDoc, m_sStyleName, &GetDoc()->GetDfltTextFormatColl()->GetAttrSet()); //UUUU add pDfltTextFormatColl as parent
-
- if(!m_pBasePool && !m_bIsDescriptor)
- throw uno::RuntimeException();
-
- for(sal_Int32 nProp = 0; nProp < rPropertyNames.getLength(); nProp++)
+ const SfxItemPropertyMap& rMap = pPropSet->getPropertyMap();
+ const SfxItemPropertySimpleEntry* pEntry = rMap.getByName(rPropertyName);
+ if(!pEntry || (!m_bIsConditional && rPropertyName == UNO_NAME_PARA_STYLE_CONDITIONS))
+ throw beans::UnknownPropertyException("Unknown property: " + rPropertyName, static_cast<cppu::OWeakObject*>(this));
+ if(m_pBasePool)
+ return GetStyleProperty_Impl(*pEntry, *pPropSet, rBase);
+ const uno::Any* pAny = nullptr;
+ m_pPropertiesImpl->GetProperty(rPropertyName, pAny);
+ if(pAny->hasValue())
+ return *pAny;
+ uno::Any aValue;
+ switch(m_rEntry.m_eFamily)
{
- const SfxItemPropertySimpleEntry* pEntry = rMap.getByName( pNames[nProp]);
- if(!pEntry || (!m_bIsConditional && pNames[nProp] == UNO_NAME_PARA_STYLE_CONDITIONS))
- throw beans::UnknownPropertyException("Unknown property: " + pNames[nProp], static_cast<cppu::OWeakObject*>(this));
- if(m_pBasePool)
- pRet[nProp] = GetStyleProperty_Impl(*pEntry, *pPropSet, aBase);
- else
+ case SFX_STYLE_FAMILY_PSEUDO:
+ throw uno::RuntimeException("No default value for: " + rPropertyName);
+ break;
+ case SFX_STYLE_FAMILY_PARA:
+ case SFX_STYLE_FAMILY_PAGE:
+ SwStyleProperties_Impl::GetProperty(rPropertyName, m_xStyleData, aValue);
+ break;
+ case SFX_STYLE_FAMILY_CHAR:
+ case SFX_STYLE_FAMILY_FRAME:
{
- const uno::Any* pAny = nullptr;
- m_pPropertiesImpl->GetProperty(pNames[nProp], pAny);
- if(pAny->hasValue())
- pRet[nProp] = *pAny;
+ if(pEntry->nWID < POOLATTR_BEGIN || pEntry->nWID >= RES_UNKNOWNATR_END)
+ throw uno::RuntimeException("No default value for: " + rPropertyName);
+ SwFormat* pFormat;
+ if(m_rEntry.m_eFamily == SFX_STYLE_FAMILY_CHAR)
+ pFormat = m_pDoc->GetDfltCharFormat();
else
- {
- switch(m_rEntry.m_eFamily)
- {
- case SFX_STYLE_FAMILY_PSEUDO:
- throw uno::RuntimeException("No default value for: " + pNames[nProp]);
- break;
- case SFX_STYLE_FAMILY_PARA:
- case SFX_STYLE_FAMILY_PAGE:
- SwStyleProperties_Impl::GetProperty(pNames[nProp], m_xStyleData, pRet[nProp]);
- break;
- case SFX_STYLE_FAMILY_CHAR:
- case SFX_STYLE_FAMILY_FRAME:
- {
- if(pEntry->nWID < POOLATTR_BEGIN || pEntry->nWID >= RES_UNKNOWNATR_END)
- throw uno::RuntimeException("No default value for: " + pNames[nProp]);
- SwFormat* pFormat;
- if(m_rEntry.m_eFamily == SFX_STYLE_FAMILY_CHAR)
- pFormat = m_pDoc->GetDfltCharFormat();
- else
- pFormat = m_pDoc->GetDfltFrameFormat();
- const SwAttrPool* pPool = pFormat->GetAttrSet().GetPool();
- const SfxPoolItem& rItem = pPool->GetDefaultItem(pEntry->nWID);
- rItem.QueryValue(pRet[nProp], pEntry->nMemberId);
- }
- break;
- default:
- ;
- }
- }
+ pFormat = m_pDoc->GetDfltFrameFormat();
+ const SwAttrPool* pPool = pFormat->GetAttrSet().GetPool();
+ const SfxPoolItem& rItem = pPool->GetDefaultItem(pEntry->nWID);
+ rItem.QueryValue(aValue, pEntry->nMemberId);
}
+ break;
+ default:
+ ;
}
- return aRet;
+ return aValue;
}
-uno::Sequence< uno::Any > SwXStyle::getPropertyValues(
- const uno::Sequence< OUString >& rPropertyNames ) throw(uno::RuntimeException, std::exception)
+uno::Any SwXStyle::getPropertyValue(const OUString& rPropertyName)
+ throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
- uno::Sequence< uno::Any > aValues;
+ if(!m_pDoc)
+ throw uno::RuntimeException();
+ if(!m_pBasePool && !m_bIsDescriptor)
+ throw uno::RuntimeException();
+ sal_Int8 nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : m_rEntry.m_nPropMapType;
+ const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
+ SwStyleBase_Impl aBase(*m_pDoc, m_sStyleName, &m_pDoc->GetDfltTextFormatColl()->GetAttrSet()); //UUUU add pDfltTextFormatColl as parent
+ return GetPropertyValue_Impl(pPropSet, aBase, rPropertyName);
+}
+uno::Sequence<uno::Any> SwXStyle::getPropertyValues(const uno::Sequence<OUString>& rPropertyNames)
+ throw(uno::RuntimeException, std::exception)
+{
+ SolarMutexGuard aGuard;
+ if(!m_pDoc)
+ throw uno::RuntimeException();
+ if(!m_pBasePool && !m_bIsDescriptor)
+ throw uno::RuntimeException();
+ sal_Int8 nPropSetId = m_bIsConditional ? PROPERTY_MAP_CONDITIONAL_PARA_STYLE : m_rEntry.m_nPropMapType;
+ const SfxItemPropertySet* pPropSet = aSwMapProvider.GetPropertySet(nPropSetId);
+ SwStyleBase_Impl aBase(*m_pDoc, m_sStyleName, &m_pDoc->GetDfltTextFormatColl()->GetAttrSet()); //UUUU add pDfltTextFormatColl as parent
+ uno::Sequence<uno::Any> aValues(rPropertyNames.getLength());
// workaround for bad designed API
try
{
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list