merge the formfield patch from ooo-build
[ooovba.git] / svtools / source / items1 / cenumitm.cxx
blobb692e730b0a797beadbef3a5443c979b91e792d3
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: cenumitm.cxx,v $
10 * $Revision: 1.9 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_svtools.hxx"
33 #include <com/sun/star/uno/Any.hxx>
34 #include <tools/stream.hxx>
35 #include <svtools/cenumitm.hxx>
36 #include <whassert.hxx>
38 #ifndef _CPPUHELPER_EXTRACT_HXX_
39 #include <cppuhelper/extract.hxx>
40 #endif
42 //============================================================================
44 // class SfxEnumItemInterface
46 //============================================================================
48 DBG_NAME(SfxEnumItemInterface)
50 //============================================================================
51 TYPEINIT1(SfxEnumItemInterface, SfxPoolItem)
53 //============================================================================
54 // virtual
55 int SfxEnumItemInterface::operator ==(const SfxPoolItem & rItem) const
57 SFX_ASSERT(SfxPoolItem::operator ==(rItem), Which(), "unequal type");
58 return GetEnumValue()
59 == static_cast< const SfxEnumItemInterface * >(&rItem)->
60 GetEnumValue();
63 //============================================================================
64 // virtual
65 SfxItemPresentation
66 SfxEnumItemInterface::GetPresentation(SfxItemPresentation, SfxMapUnit,
67 SfxMapUnit, XubString & rText,
68 const IntlWrapper *) const
70 rText = XubString::CreateFromInt32(GetEnumValue());
71 return SFX_ITEM_PRESENTATION_NAMELESS;
74 //============================================================================
75 // virtual
76 BOOL SfxEnumItemInterface::QueryValue(com::sun::star::uno::Any& rVal, BYTE)
77 const
79 rVal <<= sal_Int32(GetEnumValue());
80 return true;
83 //============================================================================
84 // virtual
85 BOOL SfxEnumItemInterface::PutValue(const com::sun::star::uno::Any& rVal,
86 BYTE)
88 sal_Int32 nTheValue = 0;
90 if ( ::cppu::enum2int( nTheValue, rVal ) )
92 SetEnumValue(USHORT(nTheValue));
93 return true;
95 DBG_ERROR("SfxEnumItemInterface::PutValue(): Wrong type");
96 return false;
99 //============================================================================
100 XubString SfxEnumItemInterface::GetValueTextByPos(USHORT) const
102 DBG_WARNING("SfxEnumItemInterface::GetValueTextByPos(): Pure virtual");
103 return XubString();
106 //============================================================================
107 // virtual
108 USHORT SfxEnumItemInterface::GetValueByPos(USHORT nPos) const
110 return nPos;
113 //============================================================================
114 // virtual
115 USHORT SfxEnumItemInterface::GetPosByValue(USHORT nValue) const
117 USHORT nCount = GetValueCount();
118 for (USHORT i = 0; i < nCount; ++i)
119 if (GetValueByPos(i) == nValue)
120 return i;
121 return USHRT_MAX;
124 BOOL SfxEnumItemInterface::IsEnabled(USHORT) const
126 return TRUE;
129 //============================================================================
130 // virtual
131 int SfxEnumItemInterface::HasBoolValue() const
133 return false;
136 //============================================================================
137 // virtual
138 BOOL SfxEnumItemInterface::GetBoolValue() const
140 return false;
143 //============================================================================
144 // virtual
145 void SfxEnumItemInterface::SetBoolValue(BOOL)
148 //============================================================================
150 // class CntEnumItem
152 //============================================================================
154 DBG_NAME(CntEnumItem)
156 //============================================================================
157 CntEnumItem::CntEnumItem(USHORT which, SvStream & rStream):
158 SfxEnumItemInterface(which)
160 m_nValue = 0;
161 rStream >> m_nValue;
164 //============================================================================
165 TYPEINIT1(CntEnumItem, SfxEnumItemInterface)
167 //============================================================================
168 // virtual
169 SvStream & CntEnumItem::Store(SvStream & rStream, USHORT) const
171 rStream << m_nValue;
172 return rStream;
175 //============================================================================
176 // virtual
177 USHORT CntEnumItem::GetEnumValue() const
179 return GetValue();
182 //============================================================================
183 // virtual
184 void CntEnumItem::SetEnumValue(USHORT nTheValue)
186 SetValue(nTheValue);
189 //============================================================================
191 // class CntBoolItem
193 //============================================================================
195 DBG_NAME(CntBoolItem)
197 //============================================================================
198 TYPEINIT1_AUTOFACTORY(CntBoolItem, SfxPoolItem)
200 //============================================================================
201 CntBoolItem::CntBoolItem(USHORT which, SvStream & rStream):
202 SfxPoolItem(which)
204 m_bValue = false;
205 rStream >> m_bValue;
208 //============================================================================
209 // virtual
210 int CntBoolItem::operator ==(const SfxPoolItem & rItem) const
212 DBG_ASSERT(rItem.ISA(CntBoolItem),
213 "CntBoolItem::operator ==(): Bad type");
214 return m_bValue == static_cast< CntBoolItem const * >(&rItem)->m_bValue;
217 //============================================================================
218 // virtual
219 int CntBoolItem::Compare(const SfxPoolItem & rWith) const
221 DBG_ASSERT(rWith.ISA(CntBoolItem), "CntBoolItem::Compare(): Bad type");
222 return m_bValue == static_cast< CntBoolItem const * >(&rWith)->m_bValue ?
223 0 : m_bValue ? -1 : 1;
226 //============================================================================
227 // virtual
228 SfxItemPresentation CntBoolItem::GetPresentation(SfxItemPresentation,
229 SfxMapUnit, SfxMapUnit,
230 UniString & rText,
231 const IntlWrapper *) const
233 rText = GetValueTextByVal(m_bValue);
234 return SFX_ITEM_PRESENTATION_NAMELESS;
237 //============================================================================
238 // virtual
239 BOOL CntBoolItem::QueryValue(com::sun::star::uno::Any& rVal, BYTE) const
241 rVal <<= sal_Bool(m_bValue);
242 return true;
245 //============================================================================
246 // virtual
247 BOOL CntBoolItem::PutValue(const com::sun::star::uno::Any& rVal, BYTE)
249 sal_Bool bTheValue = sal_Bool();
250 if (rVal >>= bTheValue)
252 m_bValue = bTheValue;
253 return true;
255 DBG_ERROR("CntBoolItem::PutValue(): Wrong type");
256 return false;
259 //============================================================================
260 // virtual
261 SfxPoolItem * CntBoolItem::Create(SvStream & rStream, USHORT) const
263 return new CntBoolItem(Which(), rStream);
266 //============================================================================
267 // virtual
268 SvStream & CntBoolItem::Store(SvStream & rStream, USHORT) const
270 rStream << m_bValue;
271 return rStream;
274 //============================================================================
275 // virtual
276 SfxPoolItem * CntBoolItem::Clone(SfxItemPool *) const
278 return new CntBoolItem(*this);
281 //============================================================================
282 // virtual
283 USHORT CntBoolItem::GetValueCount() const
285 return 2;
288 //============================================================================
289 // virtual
290 UniString CntBoolItem::GetValueTextByVal(BOOL bTheValue) const
292 return
293 bTheValue ?
294 UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("TRUE")) :
295 UniString::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("FALSE"));