blob: 1b67edc06ce4492d46c60d856622f3160c2d1142 [file] [log] [blame]
/**************************************************************
*
* 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.
*
*************************************************************/
#ifndef _SVTOOLS_CENUMITM_HXX
#define _SVTOOLS_CENUMITM_HXX
#include "svl/svldllapi.h"
#include <tools/debug.hxx>
#include <svl/poolitem.hxx>
//============================================================================
DBG_NAMEEX(SfxEnumItemInterface)
class SVL_DLLPUBLIC SfxEnumItemInterface: public SfxPoolItem
{
protected:
SfxEnumItemInterface(sal_uInt16 which): SfxPoolItem(which) {}
SfxEnumItemInterface(const SfxEnumItemInterface & rItem):
SfxPoolItem(rItem) {}
public:
TYPEINFO();
virtual int operator ==(const SfxPoolItem & rItem) const;
virtual SfxItemPresentation GetPresentation(SfxItemPresentation,
SfxMapUnit, SfxMapUnit,
XubString & rText,
const IntlWrapper * = 0)
const;
virtual sal_Bool QueryValue(com::sun::star::uno::Any & rVal, sal_uInt8 = 0) const;
virtual sal_Bool PutValue(const com::sun::star::uno::Any & rVal, sal_uInt8 = 0);
virtual sal_uInt16 GetValueCount() const = 0;
virtual XubString GetValueTextByPos(sal_uInt16 nPos) const;
virtual sal_uInt16 GetValueByPos(sal_uInt16 nPos) const;
/// Return the position of some value within this enumeration.
///
/// @descr This method is implemented using GetValueCount() and
/// GetValueByPos(). Derived classes may replace this with a more
/// efficient implementation.
///
/// @param nValue Some value.
///
/// @return The position of nValue within this enumeration, or USHRT_MAX
/// if not included.
virtual sal_uInt16 GetPosByValue(sal_uInt16 nValue) const;
virtual sal_Bool IsEnabled(sal_uInt16 nValue) const;
virtual sal_uInt16 GetEnumValue() const = 0;
virtual void SetEnumValue(sal_uInt16 nValue) = 0;
virtual int HasBoolValue() const;
virtual sal_Bool GetBoolValue() const;
virtual void SetBoolValue(sal_Bool bValue);
};
//============================================================================
DBG_NAMEEX(CntEnumItem)
class SVL_DLLPUBLIC CntEnumItem: public SfxEnumItemInterface
{
sal_uInt16 m_nValue;
protected:
CntEnumItem(sal_uInt16 which = 0, sal_uInt16 nTheValue = 0):
SfxEnumItemInterface(which), m_nValue(nTheValue) {}
CntEnumItem(sal_uInt16 which, SvStream & rStream);
CntEnumItem(const CntEnumItem & rItem):
SfxEnumItemInterface(rItem), m_nValue(rItem.m_nValue) {}
public:
TYPEINFO();
virtual SvStream & Store(SvStream & rStream, sal_uInt16) const;
virtual sal_uInt16 GetEnumValue() const;
virtual void SetEnumValue(sal_uInt16 nTheValue);
sal_uInt16 GetValue() const { return m_nValue; }
inline void SetValue(sal_uInt16 nTheValue);
};
inline void CntEnumItem::SetValue(sal_uInt16 nTheValue)
{
DBG_ASSERT(GetRefCount() == 0, "CntEnumItem::SetValue(): Pooled item");
m_nValue = nTheValue;
}
//============================================================================
DBG_NAMEEX(CntBoolItem)
class SVL_DLLPUBLIC CntBoolItem: public SfxPoolItem
{
sal_Bool m_bValue;
public:
TYPEINFO();
CntBoolItem(sal_uInt16 which = 0, sal_Bool bTheValue = sal_False):
SfxPoolItem(which), m_bValue(bTheValue) {}
CntBoolItem(sal_uInt16 nWhich, SvStream & rStream);
CntBoolItem(const CntBoolItem & rItem):
SfxPoolItem(rItem), m_bValue(rItem.m_bValue) {}
virtual int operator ==(const SfxPoolItem & rItem) const;
using SfxPoolItem::Compare;
virtual int Compare(const SfxPoolItem & rWith) const;
virtual SfxItemPresentation GetPresentation(SfxItemPresentation,
SfxMapUnit, SfxMapUnit,
UniString & rText,
const IntlWrapper * = 0)
const;
virtual sal_Bool QueryValue(com::sun::star::uno::Any& rVal, sal_uInt8 = 0) const;
virtual sal_Bool PutValue(const com::sun::star::uno::Any& rVal, sal_uInt8 = 0);
virtual SfxPoolItem * Create(SvStream & rStream, sal_uInt16) const;
virtual SvStream & Store(SvStream & rStream, sal_uInt16) const;
virtual SfxPoolItem * Clone(SfxItemPool * = 0) const;
virtual sal_uInt16 GetValueCount() const;
virtual UniString GetValueTextByVal(sal_Bool bTheValue) const;
sal_Bool GetValue() const { return m_bValue; }
void SetValue(sal_Bool bTheValue) { m_bValue = bTheValue; }
};
#endif // _SVTOOLS_CENUMITM_HXX