1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _SVTOOLS_CENUMITM_HXX 25 #define _SVTOOLS_CENUMITM_HXX 26 27 #include "svl/svldllapi.h" 28 #include <tools/debug.hxx> 29 #include <svl/poolitem.hxx> 30 31 //============================================================================ 32 DBG_NAMEEX(SfxEnumItemInterface) 33 34 class SVL_DLLPUBLIC SfxEnumItemInterface: public SfxPoolItem 35 { 36 protected: 37 SfxEnumItemInterface(sal_uInt16 which): SfxPoolItem(which) {} 38 39 SfxEnumItemInterface(const SfxEnumItemInterface & rItem): 40 SfxPoolItem(rItem) {} 41 42 public: 43 TYPEINFO(); 44 45 virtual int operator ==(const SfxPoolItem & rItem) const; 46 47 virtual SfxItemPresentation GetPresentation(SfxItemPresentation, 48 SfxMapUnit, SfxMapUnit, 49 XubString & rText, 50 const IntlWrapper * = 0) 51 const; 52 53 virtual sal_Bool QueryValue(com::sun::star::uno::Any & rVal, sal_uInt8 = 0) const; 54 55 virtual sal_Bool PutValue(const com::sun::star::uno::Any & rVal, sal_uInt8 = 0); 56 57 virtual sal_uInt16 GetValueCount() const = 0; 58 59 virtual XubString GetValueTextByPos(sal_uInt16 nPos) const; 60 61 virtual sal_uInt16 GetValueByPos(sal_uInt16 nPos) const; 62 63 /// Return the position of some value within this enumeration. 64 /// 65 /// @descr This method is implemented using GetValueCount() and 66 /// GetValueByPos(). Derived classes may replace this with a more 67 /// efficient implementation. 68 /// 69 /// @param nValue Some value. 70 /// 71 /// @return The position of nValue within this enumeration, or USHRT_MAX 72 /// if not included. 73 virtual sal_uInt16 GetPosByValue(sal_uInt16 nValue) const; 74 75 virtual sal_Bool IsEnabled(sal_uInt16 nValue) const; 76 77 virtual sal_uInt16 GetEnumValue() const = 0; 78 79 virtual void SetEnumValue(sal_uInt16 nValue) = 0; 80 81 virtual int HasBoolValue() const; 82 83 virtual sal_Bool GetBoolValue() const; 84 85 virtual void SetBoolValue(sal_Bool bValue); 86 }; 87 88 //============================================================================ 89 DBG_NAMEEX(CntEnumItem) 90 91 class SVL_DLLPUBLIC CntEnumItem: public SfxEnumItemInterface 92 { 93 sal_uInt16 m_nValue; 94 95 protected: 96 CntEnumItem(sal_uInt16 which = 0, sal_uInt16 nTheValue = 0): 97 SfxEnumItemInterface(which), m_nValue(nTheValue) {} 98 99 CntEnumItem(sal_uInt16 which, SvStream & rStream); 100 101 CntEnumItem(const CntEnumItem & rItem): 102 SfxEnumItemInterface(rItem), m_nValue(rItem.m_nValue) {} 103 104 public: 105 TYPEINFO(); 106 107 virtual SvStream & Store(SvStream & rStream, sal_uInt16) const; 108 109 virtual sal_uInt16 GetEnumValue() const; 110 111 virtual void SetEnumValue(sal_uInt16 nTheValue); 112 113 sal_uInt16 GetValue() const { return m_nValue; } 114 115 inline void SetValue(sal_uInt16 nTheValue); 116 }; 117 118 inline void CntEnumItem::SetValue(sal_uInt16 nTheValue) 119 { 120 DBG_ASSERT(GetRefCount() == 0, "CntEnumItem::SetValue(): Pooled item"); 121 m_nValue = nTheValue; 122 } 123 124 //============================================================================ 125 DBG_NAMEEX(CntBoolItem) 126 127 class SVL_DLLPUBLIC CntBoolItem: public SfxPoolItem 128 { 129 sal_Bool m_bValue; 130 131 public: 132 TYPEINFO(); 133 134 CntBoolItem(sal_uInt16 which = 0, sal_Bool bTheValue = sal_False): 135 SfxPoolItem(which), m_bValue(bTheValue) {} 136 137 CntBoolItem(sal_uInt16 nWhich, SvStream & rStream); 138 139 CntBoolItem(const CntBoolItem & rItem): 140 SfxPoolItem(rItem), m_bValue(rItem.m_bValue) {} 141 142 virtual int operator ==(const SfxPoolItem & rItem) const; 143 144 using SfxPoolItem::Compare; 145 virtual int Compare(const SfxPoolItem & rWith) const; 146 147 virtual SfxItemPresentation GetPresentation(SfxItemPresentation, 148 SfxMapUnit, SfxMapUnit, 149 UniString & rText, 150 const IntlWrapper * = 0) 151 const; 152 153 virtual sal_Bool QueryValue(com::sun::star::uno::Any& rVal, sal_uInt8 = 0) const; 154 155 virtual sal_Bool PutValue(const com::sun::star::uno::Any& rVal, sal_uInt8 = 0); 156 157 virtual SfxPoolItem * Create(SvStream & rStream, sal_uInt16) const; 158 159 virtual SvStream & Store(SvStream & rStream, sal_uInt16) const; 160 161 virtual SfxPoolItem * Clone(SfxItemPool * = 0) const; 162 163 virtual sal_uInt16 GetValueCount() const; 164 165 virtual UniString GetValueTextByVal(sal_Bool bTheValue) const; 166 167 sal_Bool GetValue() const { return m_bValue; } 168 169 void SetValue(sal_Bool bTheValue) { m_bValue = bTheValue; } 170 }; 171 172 #endif // _SVTOOLS_CENUMITM_HXX 173 174