xref: /AOO41X/main/svl/source/items/flagitem.cxx (revision 8809db7a87f97847b57a57f4cd2b0104b2b83182)
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