summaryrefslogtreecommitdiff
path: root/svl/source
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2019-10-04 18:58:20 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-10-05 14:06:33 +0200
commit4f7c0393d5dab5c0451d16a694fab963bdc98966 (patch)
tree8409534f55d0b69307d68f69ab88c76acf7d651f /svl/source
parentd2c49bfde8e4e5f17cc80f5f5cc99ebb0aec1946 (diff)
simplify SfxAllEnumItem
It is just a data carrier for an array of values for SID_ATTR_PATHNAME, it does not need associated enum logic. Change-Id: I547cd5580d02eb9c261feeb3545e31910a4ed644 Reviewed-on: https://gerrit.libreoffice.org/80253 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svl/source')
-rw-r--r--svl/source/items/aeitem.cxx94
-rw-r--r--svl/source/items/poolitem.cxx3
2 files changed, 18 insertions, 79 deletions
diff --git a/svl/source/items/aeitem.cxx b/svl/source/items/aeitem.cxx
index 2d2ce6d10ea5..00e58d27f464 100644
--- a/svl/source/items/aeitem.cxx
+++ b/svl/source/items/aeitem.cxx
@@ -23,50 +23,29 @@
#include <climits>
#include <cstddef>
-struct SfxAllEnumValue_Impl
-{
- sal_uInt16 nValue;
- OUString aText;
-};
-
-
-SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which, sal_uInt16 nVal):
- SfxAllEnumItem_Base(which, nVal)
-{
- InsertValue( nVal );
-}
-
SfxAllEnumItem::SfxAllEnumItem(sal_uInt16 which):
- SfxAllEnumItem_Base(which, 0)
+ SfxPoolItem(which)
{
}
SfxAllEnumItem::SfxAllEnumItem(const SfxAllEnumItem &rCopy):
- SfxAllEnumItem_Base(rCopy)
+ SfxPoolItem(rCopy),
+ m_Values(rCopy.m_Values)
{
- if ( rCopy.pValues )
- pValues.reset( new SfxAllEnumValueArr(*rCopy.pValues) );
}
SfxAllEnumItem::~SfxAllEnumItem()
{
}
-sal_uInt16 SfxAllEnumItem::GetValueCount() const
-{
- return pValues ? pValues->size() : 0;
-}
-
-OUString const & SfxAllEnumItem::GetValueTextByPos( sal_uInt16 nPos ) const
+sal_Int32 SfxAllEnumItem::GetTextCount() const
{
- assert(pValues && nPos < pValues->size());
- return (*pValues)[nPos].aText;
+ return m_Values.size();
}
-sal_uInt16 SfxAllEnumItem::GetValueByPos( sal_uInt16 nPos ) const
+OUString const & SfxAllEnumItem::GetTextByPos( sal_uInt16 nPos ) const
{
- assert(pValues && nPos < pValues->size());
- return (*pValues)[nPos].nValue;
+ return m_Values[nPos];
}
SfxPoolItem* SfxAllEnumItem::Clone( SfxItemPool * ) const
@@ -74,60 +53,21 @@ SfxPoolItem* SfxAllEnumItem::Clone( SfxItemPool * ) const
return new SfxAllEnumItem(*this);
}
-/**
- * In contrast to @see GetPosByValue(sal_uInt16) const
- * this internal method returns the position the value would be for non-present values.
- */
-std::size_t SfxAllEnumItem::GetPosByValue_( sal_uInt16 nVal ) const
+void SfxAllEnumItem::SetTextByPos( sal_uInt16 nPos, const OUString &rText )
{
- if ( !pValues )
- return 0;
-
- //FIXME: Optimisation: use binary search or SortArray
- std::size_t nPos;
- for ( nPos = 0; nPos < pValues->size(); ++nPos )
- if ( (*pValues)[nPos].nValue >= nVal )
- return nPos;
- return nPos;
+ if (nPos >= m_Values.size())
+ m_Values.resize(nPos);
+ m_Values[nPos] = rText;
}
-sal_uInt16 SfxAllEnumItem::GetPosByValue( sal_uInt16 nValue ) const
+bool SfxAllEnumItem::operator==( const SfxPoolItem& rCmp ) const
{
- if ( !pValues || pValues->empty() )
- return nValue;
-
- sal_uInt16 nCount = GetValueCount();
- for (sal_uInt16 i = 0; i < nCount; ++i)
- if (GetValueByPos(i) == nValue)
- return i;
- return USHRT_MAX;
+ assert(dynamic_cast< const SfxAllEnumItem* >(&rCmp) && "operator==Types not matching");
+ const SfxAllEnumItem& rOther = static_cast<const SfxAllEnumItem&>(rCmp);
+ if (!SfxPoolItem::operator==(rCmp))
+ return false;
+ return m_Values == rOther.m_Values;
}
-void SfxAllEnumItem::InsertValue( sal_uInt16 nValue, const OUString &rValue )
-{
- SfxAllEnumValue_Impl aVal;
- aVal.nValue = nValue;
- aVal.aText = rValue;
- if ( !pValues )
- pValues.reset( new SfxAllEnumValueArr );
- else if ( sal_uInt16 nPos = GetPosByValue(nValue); nPos != USHRT_MAX )
- {
- // remove when exists
- pValues->erase( pValues->begin() + nPos );
- }
- // then insert
- pValues->insert(pValues->begin() + GetPosByValue_(nValue), aVal); // FIXME: Duplicates?
-}
-
-void SfxAllEnumItem::InsertValue( sal_uInt16 nValue )
-{
- SfxAllEnumValue_Impl aVal;
- aVal.nValue = nValue;
- aVal.aText = OUString::number(nValue);
- if ( !pValues )
- pValues.reset( new SfxAllEnumValueArr );
-
- pValues->insert(pValues->begin() + GetPosByValue_(nValue), aVal); // FIXME: Duplicates?
-}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx
index 1ee28f0352f0..5c4e81c89e10 100644
--- a/svl/source/items/poolitem.cxx
+++ b/svl/source/items/poolitem.cxx
@@ -70,6 +70,7 @@
// class SfxObjectShellItem: public SfxPoolItem
// class SfxViewFrameItem: public SfxPoolItem
// class SfxWatermarkItem: public SfxPoolItem
+// class SfxAllEnumItem: public SfxPoolItem
// class SfxEnumItemInterface: public SfxPoolItem
// class SvxAdjustItem : public SfxEnumItemInterface
// class SvxEscapementItem : public SfxEnumItemInterface
@@ -91,8 +92,6 @@
// class SvxUnderlineItem : public SvxTextLineItem
// class SvxOverlineItem : public SvxTextLineItem
// class SvxWeightItem : public SfxEnumItem<FontWeight>
-// class SfxAllEnumItem_Base: public SfxEnumItem<sal_uInt16>
-// class SfxAllEnumItem: public SfxAllEnumItem_Base
// class SvxOrientationItem: public SfxEnumItem<SvxCellOrientation>
// class SvxChartRegressItem : public SfxEnumItem<SvxChartRegress>
// class SvxChartTextOrderItem : public SfxEnumItem<SvxChartTextOrder>