| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_svl.hxx" |
| #include <com/sun/star/uno/Any.hxx> |
| #include <tools/stream.hxx> |
| #include <svl/cenumitm.hxx> |
| #include <whassert.hxx> |
| |
| #ifndef _CPPUHELPER_EXTRACT_HXX_ |
| #include <comphelper/extract.hxx> |
| #endif |
| |
| //============================================================================ |
| // |
| // class SfxEnumItemInterface |
| // |
| //============================================================================ |
| |
| DBG_NAME(SfxEnumItemInterface) |
| |
| //============================================================================ |
| TYPEINIT1(SfxEnumItemInterface, SfxPoolItem) |
| |
| //============================================================================ |
| // virtual |
| int SfxEnumItemInterface::operator ==(const SfxPoolItem & rItem) const |
| { |
| SFX_ASSERT(SfxPoolItem::operator ==(rItem), Which(), "unequal type"); |
| return GetEnumValue() |
| == static_cast< const SfxEnumItemInterface * >(&rItem)-> |
| GetEnumValue(); |
| } |
| |
| //============================================================================ |
| // virtual |
| SfxItemPresentation |
| SfxEnumItemInterface::GetPresentation(SfxItemPresentation, SfxMapUnit, |
| SfxMapUnit, XubString & rText, |
| const IntlWrapper *) const |
| { |
| rText = XubString::CreateFromInt32(GetEnumValue()); |
| return SFX_ITEM_PRESENTATION_NAMELESS; |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_Bool SfxEnumItemInterface::QueryValue(com::sun::star::uno::Any& rVal, sal_uInt8) |
| const |
| { |
| rVal <<= sal_Int32(GetEnumValue()); |
| return true; |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_Bool SfxEnumItemInterface::PutValue(const com::sun::star::uno::Any& rVal, |
| sal_uInt8) |
| { |
| sal_Int32 nTheValue = 0; |
| |
| if ( ::cppu::enum2int( nTheValue, rVal ) ) |
| { |
| SetEnumValue(sal_uInt16(nTheValue)); |
| return true; |
| } |
| DBG_ERROR("SfxEnumItemInterface::PutValue(): Wrong type"); |
| return false; |
| } |
| |
| //============================================================================ |
| XubString SfxEnumItemInterface::GetValueTextByPos(sal_uInt16) const |
| { |
| DBG_WARNING("SfxEnumItemInterface::GetValueTextByPos(): Pure virtual"); |
| return XubString(); |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_uInt16 SfxEnumItemInterface::GetValueByPos(sal_uInt16 nPos) const |
| { |
| return nPos; |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_uInt16 SfxEnumItemInterface::GetPosByValue(sal_uInt16 nValue) const |
| { |
| sal_uInt16 nCount = GetValueCount(); |
| for (sal_uInt16 i = 0; i < nCount; ++i) |
| if (GetValueByPos(i) == nValue) |
| return i; |
| return USHRT_MAX; |
| } |
| |
| sal_Bool SfxEnumItemInterface::IsEnabled(sal_uInt16) const |
| { |
| return sal_True; |
| } |
| |
| //============================================================================ |
| // virtual |
| int SfxEnumItemInterface::HasBoolValue() const |
| { |
| return false; |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_Bool SfxEnumItemInterface::GetBoolValue() const |
| { |
| return false; |
| } |
| |
| //============================================================================ |
| // virtual |
| void SfxEnumItemInterface::SetBoolValue(sal_Bool) |
| {} |
| |
| //============================================================================ |
| // |
| // class CntEnumItem |
| // |
| //============================================================================ |
| |
| DBG_NAME(CntEnumItem) |
| |
| //============================================================================ |
| CntEnumItem::CntEnumItem(sal_uInt16 which, SvStream & rStream): |
| SfxEnumItemInterface(which) |
| { |
| m_nValue = 0; |
| rStream >> m_nValue; |
| } |
| |
| //============================================================================ |
| TYPEINIT1(CntEnumItem, SfxEnumItemInterface) |
| |
| //============================================================================ |
| // virtual |
| SvStream & CntEnumItem::Store(SvStream & rStream, sal_uInt16) const |
| { |
| rStream << m_nValue; |
| return rStream; |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_uInt16 CntEnumItem::GetEnumValue() const |
| { |
| return GetValue(); |
| } |
| |
| //============================================================================ |
| // virtual |
| void CntEnumItem::SetEnumValue(sal_uInt16 nTheValue) |
| { |
| SetValue(nTheValue); |
| } |
| |
| //============================================================================ |
| // |
| // class CntBoolItem |
| // |
| //============================================================================ |
| |
| DBG_NAME(CntBoolItem) |
| |
| //============================================================================ |
| TYPEINIT1_AUTOFACTORY(CntBoolItem, SfxPoolItem) |
| |
| //============================================================================ |
| CntBoolItem::CntBoolItem(sal_uInt16 which, SvStream & rStream): |
| SfxPoolItem(which) |
| { |
| m_bValue = false; |
| rStream >> m_bValue; |
| } |
| |
| //============================================================================ |
| // virtual |
| int CntBoolItem::operator ==(const SfxPoolItem & rItem) const |
| { |
| DBG_ASSERT(rItem.ISA(CntBoolItem), |
| "CntBoolItem::operator ==(): Bad type"); |
| return m_bValue == static_cast< CntBoolItem const * >(&rItem)->m_bValue; |
| } |
| |
| //============================================================================ |
| // virtual |
| int CntBoolItem::Compare(const SfxPoolItem & rWith) const |
| { |
| DBG_ASSERT(rWith.ISA(CntBoolItem), "CntBoolItem::Compare(): Bad type"); |
| return m_bValue == static_cast< CntBoolItem const * >(&rWith)->m_bValue ? |
| 0 : m_bValue ? -1 : 1; |
| } |
| |
| //============================================================================ |
| // virtual |
| SfxItemPresentation CntBoolItem::GetPresentation(SfxItemPresentation, |
| SfxMapUnit, SfxMapUnit, |
| UniString & rText, |
| const IntlWrapper *) const |
| { |
| rText = GetValueTextByVal(m_bValue); |
| return SFX_ITEM_PRESENTATION_NAMELESS; |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_Bool CntBoolItem::QueryValue(com::sun::star::uno::Any& rVal, sal_uInt8) const |
| { |
| rVal <<= sal_Bool(m_bValue); |
| return true; |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_Bool CntBoolItem::PutValue(const com::sun::star::uno::Any& rVal, sal_uInt8) |
| { |
| sal_Bool bTheValue = sal_Bool(); |
| if (rVal >>= bTheValue) |
| { |
| m_bValue = bTheValue; |
| return true; |
| } |
| DBG_ERROR("CntBoolItem::PutValue(): Wrong type"); |
| return false; |
| } |
| |
| //============================================================================ |
| // virtual |
| SfxPoolItem * CntBoolItem::Create(SvStream & rStream, sal_uInt16) const |
| { |
| return new CntBoolItem(Which(), rStream); |
| } |
| |
| //============================================================================ |
| // virtual |
| SvStream & CntBoolItem::Store(SvStream & rStream, sal_uInt16) const |
| { |
| rStream << m_bValue; |
| return rStream; |
| } |
| |
| //============================================================================ |
| // virtual |
| SfxPoolItem * CntBoolItem::Clone(SfxItemPool *) const |
| { |
| return new CntBoolItem(*this); |
| } |
| |
| //============================================================================ |
| // virtual |
| sal_uInt16 CntBoolItem::GetValueCount() const |
| { |
| return 2; |
| } |
| |
| //============================================================================ |
| // virtual |
| UniString CntBoolItem::GetValueTextByVal(sal_Bool bTheValue) const |
| { |
| return |
| bTheValue ? |
| UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("sal_True")) : |
| UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("sal_False")); |
| } |
| |