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 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svl.hxx" 26 27 #include <svl/flagitem.hxx> 28 #include <svl/poolitem.hxx> 29 #include <tools/stream.hxx> 30 31 // STATIC DATA ----------------------------------------------------------- 32 33 DBG_NAME(SfxFlagItem) 34 35 sal_uInt16 nSfxFlagVal[16] = 36 { 37 0x0001, 0x0002, 0x0004, 0x0008, 38 0x0010, 0x0020, 0x0040, 0x0080, 39 0x0100, 0x0200, 0x0400, 0x0800, 40 0x1000, 0x2000, 0x4000, 0x8000 41 }; 42 43 44 // ----------------------------------------------------------------------- 45 46 TYPEINIT1(SfxFlagItem, SfxPoolItem); 47 48 // ----------------------------------------------------------------------- 49 50 SfxFlagItem::SfxFlagItem( sal_uInt16 nW, sal_uInt16 nV ) : 51 SfxPoolItem( nW ), 52 nVal(nV) 53 { 54 DBG_CTOR(SfxFlagItem, 0); 55 } 56 57 // ----------------------------------------------------------------------- 58 59 SfxFlagItem::SfxFlagItem( sal_uInt16 nW, SvStream &rStream) : 60 SfxPoolItem( nW ) 61 { 62 DBG_CTOR(SfxFlagItem, 0); 63 rStream >> nVal; 64 } 65 66 // ----------------------------------------------------------------------- 67 68 SfxFlagItem::SfxFlagItem( const SfxFlagItem& rItem ) : 69 SfxPoolItem( rItem ), 70 nVal( rItem.nVal ) 71 { 72 DBG_CTOR(SfxFlagItem, 0); 73 } 74 75 // ----------------------------------------------------------------------- 76 77 SvStream& SfxFlagItem::Store(SvStream &rStream, sal_uInt16) const 78 { 79 DBG_CHKTHIS(SfxFlagItem, 0); 80 rStream << nVal; 81 return rStream; 82 } 83 84 // ----------------------------------------------------------------------- 85 86 SfxItemPresentation SfxFlagItem::GetPresentation 87 ( 88 SfxItemPresentation /*ePresentation*/, 89 SfxMapUnit /*eCoreMetric*/, 90 SfxMapUnit /*ePresentationMetric*/, 91 XubString& rText, 92 const IntlWrapper * 93 ) const 94 { 95 DBG_CHKTHIS(SfxFlagItem, 0); 96 rText.Erase(); 97 for ( sal_uInt8 nFlag = 0; nFlag < GetFlagCount(); ++nFlag ) 98 rText += XubString::CreateFromInt32( GetFlag(nFlag) ); 99 return SFX_ITEM_PRESENTATION_NAMELESS; 100 } 101 102 // ----------------------------------------------------------------------- 103 104 XubString SfxFlagItem::GetFlagText( sal_uInt8 ) const 105 { 106 DBG_CHKTHIS(SfxFlagItem, 0); 107 DBG_WARNING( "calling GetValueText(sal_uInt16) on SfxFlagItem -- overload!" ); 108 return XubString(); 109 } 110 111 // ----------------------------------------------------------------------- 112 113 sal_uInt8 SfxFlagItem::GetFlagCount() const 114 { 115 DBG_CHKTHIS(SfxFlagItem, 0); 116 DBG_WARNING( "calling GetValueText(sal_uInt16) on SfxFlagItem -- overload!" ); 117 return 0; 118 } 119 120 // ----------------------------------------------------------------------- 121 122 SfxPoolItem* SfxFlagItem::Create(SvStream &, sal_uInt16) const 123 { 124 DBG_CHKTHIS(SfxFlagItem, 0); 125 DBG_WARNING( "calling Create() on SfxFlagItem -- overload!" ); 126 return 0; 127 } 128 129 // ----------------------------------------------------------------------- 130 131 int SfxFlagItem::operator==( const SfxPoolItem& rItem ) const 132 { 133 DBG_CHKTHIS(SfxFlagItem, 0); 134 DBG_ASSERT( SfxPoolItem::operator==( rItem ), "unequal type" ); 135 return (((SfxFlagItem&)rItem).nVal == nVal); 136 } 137 138 // ----------------------------------------------------------------------- 139 140 void SfxFlagItem::SetFlag( sal_uInt8 nFlag, int bVal ) 141 { 142 if ( bVal ) 143 nVal |= nSfxFlagVal[nFlag]; 144 else 145 nVal &= ~nSfxFlagVal[nFlag]; 146 } 147 148 // ----------------------------------------------------------------------- 149 150 SfxPoolItem* SfxFlagItem::Clone(SfxItemPool *) const 151 { 152 DBG_CHKTHIS(SfxFlagItem, 0); 153 return new SfxFlagItem( *this ); 154 } 155 156 157 158 159 160