Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * This file is part of the LibreOffice project.
4 : : *
5 : : * This Source Code Form is subject to the terms of the Mozilla Public
6 : : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : : *
9 : : * This file incorporates work covered by the following license notice:
10 : : *
11 : : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : : * contributor license agreements. See the NOTICE file distributed
13 : : * with this work for additional information regarding copyright
14 : : * ownership. The ASF licenses this file to you under the Apache
15 : : * License, Version 2.0 (the "License"); you may not use this file
16 : : * except in compliance with the License. You may obtain a copy of
17 : : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : : */
19 : :
20 : :
21 : : #include "res_DataLabel.hxx"
22 : : #include "res_DataLabel_IDs.hrc"
23 : :
24 : : #include "Strings.hrc"
25 : : #include "ResId.hxx"
26 : : #include "chartview/ChartSfxItemIds.hxx"
27 : : #include "NoWarningThisInCTOR.hxx"
28 : : #include "dlg_NumberFormat.hxx"
29 : :
30 : : // header for class SvxNumberInfoItem
31 : : #include <svx/numinf.hxx>
32 : : #include <svl/eitem.hxx>
33 : : // for SfxUInt32Item
34 : : #include <svl/intitem.hxx>
35 : : // header for class SfxStringItem
36 : : #include <svl/stritem.hxx>
37 : : //SfxIntegerListItem
38 : : #include <svl/ilstitem.hxx>
39 : : #include <editeng/eeitem.hxx>
40 : : #include <editeng/frmdiritem.hxx>
41 : :
42 : : // header for define RET_OK
43 : : #include <vcl/msgbox.hxx>
44 : : #include <svx/svxids.hrc>
45 : : // header for SvNumberFormatter
46 : : #include <svl/zforlist.hxx>
47 : : #include <svtools/controldims.hrc>
48 : :
49 : :
50 : : //.............................................................................
51 : : namespace chart
52 : : {
53 : : //.............................................................................
54 : :
55 : : namespace
56 : : {
57 : :
58 : 0 : bool lcl_ReadNumberFormatFromItemSet( const SfxItemSet& rSet, sal_uInt16 nValueWhich, sal_uInt16 nSourceFormatWhich, sal_uLong& rnFormatKeyOut, bool& rbSourceFormatOut, bool& rbSourceFormatMixedStateOut )
59 : : {
60 : 0 : bool bSet = false;
61 : 0 : const SfxPoolItem *pItem1 = NULL;
62 [ # # ][ # # ]: 0 : if( rSet.GetItemState( nValueWhich, sal_True, &pItem1 ) == SFX_ITEM_SET )
63 : : {
64 [ # # ]: 0 : const SfxUInt32Item * pNumItem = dynamic_cast< const SfxUInt32Item * >( pItem1 );
65 [ # # ]: 0 : if( pNumItem )
66 : : {
67 : 0 : rnFormatKeyOut = pNumItem->GetValue();
68 : 0 : bSet = true;
69 : : }
70 : : }
71 : :
72 : 0 : rbSourceFormatMixedStateOut=true;
73 : 0 : const SfxPoolItem *pItem2 = NULL;
74 [ # # ][ # # ]: 0 : if( rSet.GetItemState( nSourceFormatWhich, sal_True, &pItem2 ) == SFX_ITEM_SET )
75 : : {
76 [ # # ]: 0 : const SfxBoolItem * pBoolItem = dynamic_cast< const SfxBoolItem * >( pItem2 );
77 [ # # ]: 0 : if( pBoolItem )
78 : : {
79 : 0 : rbSourceFormatOut = pBoolItem->GetValue();
80 : 0 : rbSourceFormatMixedStateOut=false;
81 : : }
82 : : }
83 : 0 : return bSet;
84 : : }
85 : :
86 : 0 : void lcl_setBoolItemToCheckBox( const SfxItemSet& rInAttrs, sal_uInt16 nWhichId, CheckBox& rCheckbox )
87 : : {
88 [ # # ]: 0 : rCheckbox.EnableTriState( sal_False );
89 : :
90 : 0 : const SfxPoolItem *pPoolItem = NULL;
91 [ # # ][ # # ]: 0 : if( rInAttrs.GetItemState(nWhichId, sal_True, &pPoolItem) == SFX_ITEM_SET )
92 [ # # ]: 0 : rCheckbox.Check( ((const SfxBoolItem*)pPoolItem)->GetValue() );
93 : : else
94 : : {
95 [ # # ]: 0 : rCheckbox.EnableTriState( sal_True );
96 [ # # ]: 0 : rCheckbox.SetState( STATE_DONTKNOW );
97 : : }
98 : 0 : }
99 : :
100 : : }//end anonymous namespace
101 : :
102 : 0 : DataLabelResources::DataLabelResources( Window* pWindow, const SfxItemSet& rInAttrs )
103 : : : m_aCBNumber(pWindow, SchResId(CB_VALUE_AS_NUMBER)),
104 : : m_aPB_NumberFormatForValue(pWindow, SchResId(PB_NUMBERFORMAT)),
105 : : m_aCBPercent(pWindow, SchResId(CB_VALUE_AS_PERCENTAGE)),
106 : : m_aPB_NumberFormatForPercent(pWindow, SchResId(PB_PERCENT_NUMBERFORMAT)),
107 : : m_aCBCategory(pWindow, SchResId(CB_CATEGORY)),
108 : : m_aCBSymbol(pWindow, SchResId(CB_SYMBOL)),
109 : : m_aSeparatorResources(pWindow),
110 : : m_aFT_LabelPlacement(pWindow, SchResId(FT_LABEL_PLACEMENT)),
111 : : m_aLB_LabelPlacement(pWindow, SchResId(LB_LABEL_PLACEMENT)),
112 : : m_aFL_Rotate(pWindow, SchResId(FL_LABEL_ROTATE)),
113 : : m_aDC_Dial(pWindow, SchResId(CT_LABEL_DIAL)),
114 : : m_aFT_Degrees(pWindow, SchResId(FT_LABEL_DEGREES)),
115 : : m_aNF_Degrees(pWindow, SchResId(NF_LABEL_DEGREES)),
116 : : m_aFT_TextDirection(pWindow, SchResId(FT_LABEL_TEXTDIR)),
117 : : m_aLB_TextDirection(pWindow, SchResId(LB_LABEL_TEXTDIR), &m_aFT_TextDirection),
118 : : m_pNumberFormatter(0),
119 : : m_bNumberFormatMixedState(true),
120 : : m_bPercentFormatMixedState(true),
121 : : m_nNumberFormatForValue(0),
122 : : m_nNumberFormatForPercent(11),
123 : : m_bSourceFormatMixedState(true),
124 : : m_bPercentSourceMixedState(true),
125 : : m_bSourceFormatForValue(true),
126 : : m_bSourceFormatForPercent(true),
127 : : m_pWindow(pWindow),
128 [ # # ][ # # ]: 0 : m_pPool(rInAttrs.GetPool())
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
129 : : {
130 : : //fill label placement list
131 [ # # ]: 0 : std::map< sal_Int32, XubString > aPlacementToStringMap;
132 [ # # ][ # # ]: 0 : for( sal_Int32 nEnum=0; nEnum<m_aLB_LabelPlacement.GetEntryCount(); ++nEnum )
133 [ # # ][ # # ]: 0 : aPlacementToStringMap[nEnum]=m_aLB_LabelPlacement.GetEntry(static_cast<sal_uInt16>(nEnum));
[ # # ][ # # ]
134 : :
135 [ # # ]: 0 : ::com::sun::star::uno::Sequence < sal_Int32 > aAvailabelPlacementList;
136 : 0 : const SfxPoolItem *pPoolItem = NULL;
137 [ # # ][ # # ]: 0 : if( rInAttrs.GetItemState(SCHATTR_DATADESCR_AVAILABLE_PLACEMENTS, sal_True, &pPoolItem) == SFX_ITEM_SET )
138 [ # # ][ # # ]: 0 : aAvailabelPlacementList =((const SfxIntegerListItem*)pPoolItem)->GetConstSequence();
[ # # ]
139 : :
140 [ # # ]: 0 : m_aLB_LabelPlacement.Clear();
141 [ # # ]: 0 : for( sal_Int32 nN=0; nN<aAvailabelPlacementList.getLength(); ++nN )
142 : : {
143 : 0 : sal_uInt16 nListBoxPos = static_cast<sal_uInt16>( nN );
144 [ # # ]: 0 : sal_Int32 nPlacement = aAvailabelPlacementList[nN];
145 [ # # ]: 0 : m_aPlacementToListBoxMap[nPlacement]=nListBoxPos;
146 [ # # ]: 0 : m_aListBoxToPlacementMap[nListBoxPos]=nPlacement;
147 [ # # ][ # # ]: 0 : m_aLB_LabelPlacement.InsertEntry( aPlacementToStringMap[nPlacement] );
148 : : }
149 [ # # ][ # # ]: 0 : m_aLB_LabelPlacement.SetDropDownLineCount(m_aLB_LabelPlacement.GetEntryCount());
150 : :
151 : : //replace&resize push buttons and resize checkboxes
152 [ # # ][ # # ]: 0 : Size aControlDistance( pWindow->LogicToPixel( Size(RSC_SP_CTRL_DESC_X,RSC_SP_CTRL_GROUP_Y), MapMode(MAP_APPFONT) ) );
[ # # ]
153 [ # # ][ # # ]: 0 : long nPBWidth = ::std::max( m_aPB_NumberFormatForPercent.CalcMinimumSize().getWidth(), m_aPB_NumberFormatForValue.CalcMinimumSize().getWidth() )
[ # # ]
154 : 0 : + 20; //the min with is to small to fit, hm... so add alittle
155 [ # # ][ # # ]: 0 : long nCBXWidth = ::std::max( m_aCBNumber.CalcMinimumSize().getWidth(), m_aCBPercent.CalcMinimumSize().getWidth() );
[ # # ]
156 [ # # ]: 0 : long nNewPBXPos = m_aCBNumber.GetPosPixel().X() + nCBXWidth + aControlDistance.Width();
157 [ # # ][ # # ]: 0 : long nPageWidth = pWindow->LogicToPixel( Size(260,185), MapMode(MAP_APPFONT) ).getWidth();
[ # # ]
158 [ # # ]: 0 : if( nNewPBXPos + nPBWidth > nPageWidth )
159 : : {
160 [ # # ]: 0 : if( nPBWidth > nPageWidth/2 )
161 : 0 : nPBWidth = nPageWidth/2;
162 : 0 : nNewPBXPos = nPageWidth-nPBWidth;
163 [ # # ]: 0 : nCBXWidth = nPageWidth-m_aCBNumber.GetPosPixel().X()-nPBWidth-aControlDistance.Width();
164 : : }
165 [ # # ][ # # ]: 0 : m_aPB_NumberFormatForValue.SetPosPixel( Point( nNewPBXPos, m_aPB_NumberFormatForValue.GetPosPixel().Y() ) );
166 [ # # ][ # # ]: 0 : m_aPB_NumberFormatForPercent.SetPosPixel( Point( nNewPBXPos, m_aPB_NumberFormatForPercent.GetPosPixel().Y() ) );
167 : :
168 [ # # ]: 0 : Size aPBSize( m_aPB_NumberFormatForPercent.GetSizePixel() );
169 : 0 : aPBSize.setWidth( nPBWidth );
170 [ # # ]: 0 : m_aPB_NumberFormatForValue.SetSizePixel( aPBSize );
171 [ # # ]: 0 : m_aPB_NumberFormatForPercent.SetSizePixel( aPBSize );
172 : :
173 [ # # ]: 0 : Size aCBSize( m_aCBNumber.GetSizePixel() );
174 : 0 : aCBSize.setWidth(nCBXWidth);
175 [ # # ]: 0 : m_aCBNumber.SetSizePixel( aCBSize );
176 [ # # ]: 0 : m_aCBPercent.SetSizePixel( aCBSize );
177 : :
178 : : //place and align separator and label placement listboxes
179 [ # # ]: 0 : Size aSize( m_aFT_LabelPlacement.GetSizePixel() );
180 [ # # ]: 0 : aSize.setWidth( m_aFT_LabelPlacement.CalcMinimumSize().getWidth() );
181 [ # # ]: 0 : m_aFT_LabelPlacement.SetSizePixel(aSize);
182 : :
183 [ # # ]: 0 : long nWantedMinLeftBorder = m_aFT_LabelPlacement.GetPosPixel().X() + aSize.getWidth () + aControlDistance.Width();
184 : :
185 [ # # ]: 0 : m_aSeparatorResources.PositionBelowControl(m_aCBSymbol);
186 [ # # ][ # # ]: 0 : m_aSeparatorResources.AlignListBoxWidthAndXPos( nWantedMinLeftBorder, -1, m_aLB_LabelPlacement.CalcMinimumSize().getWidth() );
187 [ # # ]: 0 : m_aSeparatorResources.Show(true);
188 : :
189 [ # # ]: 0 : aSize = m_aLB_LabelPlacement.GetSizePixel();
190 [ # # ]: 0 : aSize.setWidth( m_aSeparatorResources.GetCurrentListBoxSize().getWidth() );
191 [ # # ]: 0 : m_aLB_LabelPlacement.SetSizePixel(aSize);
192 [ # # ][ # # ]: 0 : m_aLB_LabelPlacement.SetPosPixel( Point( m_aSeparatorResources.GetCurrentListBoxPosition().X(), m_aLB_LabelPlacement.GetPosPixel().Y() ) );
[ # # ]
193 : :
194 : : //some click handler
195 [ # # ]: 0 : m_aPB_NumberFormatForValue.SetClickHdl( LINK( this, DataLabelResources, NumberFormatDialogHdl ) );
196 [ # # ]: 0 : m_aPB_NumberFormatForPercent.SetClickHdl( LINK( this, DataLabelResources, NumberFormatDialogHdl ) );
197 [ # # ]: 0 : m_aCBNumber.SetClickHdl( LINK( this, DataLabelResources, CheckHdl ));
198 [ # # ]: 0 : m_aCBPercent.SetClickHdl( LINK( this, DataLabelResources, CheckHdl ));
199 [ # # ]: 0 : m_aCBCategory.SetClickHdl( LINK( this, DataLabelResources, CheckHdl ));
200 [ # # ]: 0 : m_aCBSymbol.SetClickHdl( LINK( this, DataLabelResources, CheckHdl ));
201 : :
202 [ # # ]: 0 : m_bNumberFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_SOURCE, m_nNumberFormatForValue, m_bSourceFormatForValue, m_bSourceFormatMixedState );
203 [ # # ]: 0 : m_bPercentFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SCHATTR_PERCENT_NUMBERFORMAT_VALUE, SCHATTR_PERCENT_NUMBERFORMAT_SOURCE, m_nNumberFormatForPercent, m_bSourceFormatForPercent , m_bPercentSourceMixedState);
204 : :
205 [ # # ][ # # ]: 0 : if( rInAttrs.GetItemState(SCHATTR_DATADESCR_NO_PERCENTVALUE, sal_True, &pPoolItem) == SFX_ITEM_SET )
206 : : {
207 [ # # ]: 0 : bool bForbidPercentValue = (static_cast< const SfxBoolItem & >( rInAttrs.Get( SCHATTR_DATADESCR_NO_PERCENTVALUE )).GetValue() );
208 [ # # ]: 0 : if( bForbidPercentValue )
209 [ # # ]: 0 : m_aCBPercent.Enable(false);
210 : : }
211 : :
212 [ # # ][ # # ]: 0 : m_aDC_Dial.SetLinkedField( &m_aNF_Degrees );
213 : 0 : }
214 : :
215 [ # # ][ # # ]: 0 : DataLabelResources::~DataLabelResources()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
216 : : {
217 [ # # ]: 0 : }
218 : :
219 : 0 : void DataLabelResources::SetNumberFormatter( SvNumberFormatter* pFormatter )
220 : : {
221 : 0 : m_pNumberFormatter = pFormatter;
222 : 0 : }
223 : :
224 : 0 : IMPL_LINK( DataLabelResources, NumberFormatDialogHdl, PushButton *, pButton )
225 : : {
226 [ # # ][ # # ]: 0 : if( !m_pPool || !m_pNumberFormatter )
227 : : {
228 : : OSL_FAIL("Missing item pool or number formatter");
229 : 0 : return 1;
230 : : }
231 : :
232 [ # # ][ # # ]: 0 : if( pButton == &m_aPB_NumberFormatForValue && !m_aCBNumber.IsChecked())
[ # # ][ # # ]
233 [ # # ]: 0 : m_aCBNumber.Check();
234 [ # # ][ # # ]: 0 : else if( pButton == &m_aPB_NumberFormatForPercent && !m_aCBPercent.IsChecked())
[ # # ][ # # ]
235 [ # # ]: 0 : m_aCBPercent.Check();
236 : :
237 [ # # ]: 0 : SfxItemSet aNumberSet = NumberFormatDialog::CreateEmptyItemSetForNumberFormatDialog( *m_pPool );
238 [ # # ][ # # ]: 0 : aNumberSet.Put (SvxNumberInfoItem( m_pNumberFormatter, (const sal_uInt16)SID_ATTR_NUMBERFORMAT_INFO));
[ # # ]
239 : :
240 : 0 : bool bPercent = ( pButton == &m_aPB_NumberFormatForPercent );
241 : :
242 [ # # ]: 0 : sal_uLong& rnFormatKey = bPercent ? m_nNumberFormatForPercent : m_nNumberFormatForValue;
243 [ # # ]: 0 : bool& rUseSourceFormat = bPercent ? m_bSourceFormatForPercent : m_bSourceFormatForValue;
244 [ # # ]: 0 : bool& rbMixedState = bPercent ? m_bPercentFormatMixedState : m_bNumberFormatMixedState;
245 [ # # ]: 0 : bool& rbSourceMixedState = bPercent ? m_bPercentSourceMixedState : m_bSourceFormatMixedState;
246 : :
247 [ # # ]: 0 : if(!rbMixedState)
248 [ # # ][ # # ]: 0 : aNumberSet.Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE, rnFormatKey ));
[ # # ]
249 [ # # ][ # # ]: 0 : aNumberSet.Put( SfxBoolItem( SID_ATTR_NUMBERFORMAT_SOURCE, rUseSourceFormat ));
[ # # ]
250 : :
251 [ # # ]: 0 : NumberFormatDialog aDlg(m_pWindow, aNumberSet);
252 [ # # ]: 0 : if( bPercent )
253 [ # # ][ # # ]: 0 : aDlg.SetText( String( SchResId( STR_DLG_NUMBERFORMAT_FOR_PERCENTAGE_VALUE ) ) );
[ # # ][ # # ]
254 [ # # ][ # # ]: 0 : if( RET_OK == aDlg.Execute() )
255 : : {
256 : 0 : const SfxItemSet* pResult = aDlg.GetOutputItemSet();
257 [ # # ]: 0 : if( pResult )
258 : : {
259 : 0 : bool bOldSource = rUseSourceFormat;
260 : 0 : sal_uLong nOldFormat = rnFormatKey;
261 [ # # ][ # # ]: 0 : bool bOldMixedState = rbMixedState || rbSourceMixedState;
262 : :
263 [ # # ]: 0 : rbMixedState = !lcl_ReadNumberFormatFromItemSet( *pResult, SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_SOURCE, rnFormatKey, rUseSourceFormat, rbSourceMixedState );
264 : :
265 : : //todo this maybe can be removed when the numberformatter dialog does handle mixed state for source format correctly
266 [ # # ][ # # ]: 0 : if( bOldMixedState && bOldSource == rUseSourceFormat && nOldFormat == rnFormatKey )
[ # # ]
267 : 0 : rbMixedState = rbSourceMixedState = true;
268 : : }
269 : : }
270 [ # # ][ # # ]: 0 : return 0;
271 : : }
272 : :
273 : 0 : IMPL_LINK( DataLabelResources, CheckHdl, CheckBox*, pBox )
274 : : {
275 [ # # ]: 0 : if( pBox )
276 : 0 : pBox->EnableTriState( sal_False );
277 : 0 : EnableControls();
278 : 0 : return 0;
279 : : }
280 : :
281 : 0 : void DataLabelResources::EnableControls()
282 : : {
283 [ # # ][ # # ]: 0 : m_aCBSymbol.Enable( m_aCBNumber.IsChecked() || (m_aCBPercent.IsChecked() && m_aCBPercent.IsEnabled()) || m_aCBCategory.IsChecked() );
[ # # ][ # # ]
284 : :
285 : : //enable separator
286 : : {
287 : 0 : long nNumberOfCheckedLabelParts = 0;
288 [ # # ]: 0 : if( m_aCBNumber.IsChecked() )
289 : 0 : ++nNumberOfCheckedLabelParts;
290 [ # # ][ # # ]: 0 : if( m_aCBPercent.IsChecked() && m_aCBPercent.IsEnabled() )
[ # # ]
291 : 0 : ++nNumberOfCheckedLabelParts;
292 [ # # ]: 0 : if( m_aCBCategory.IsChecked() )
293 : 0 : ++nNumberOfCheckedLabelParts;
294 : 0 : m_aSeparatorResources.Enable( nNumberOfCheckedLabelParts > 1 );
295 : 0 : bool bEnableTextDir = nNumberOfCheckedLabelParts > 0;
296 : 0 : m_aFT_TextDirection.Enable( bEnableTextDir );
297 : 0 : m_aLB_TextDirection.Enable( bEnableTextDir );
298 [ # # ][ # # ]: 0 : bool bEnablePlacement = nNumberOfCheckedLabelParts > 0 && m_aLB_LabelPlacement.GetEntryCount()>1;
299 : 0 : m_aFT_LabelPlacement.Enable( bEnablePlacement );
300 : 0 : m_aLB_LabelPlacement.Enable( bEnablePlacement );
301 : : }
302 : :
303 [ # # ][ # # ]: 0 : m_aPB_NumberFormatForValue.Enable( m_pNumberFormatter && m_aCBNumber.IsChecked() );
304 [ # # ][ # # ]: 0 : m_aPB_NumberFormatForPercent.Enable( m_pNumberFormatter && m_aCBPercent.IsChecked() && m_aCBPercent.IsEnabled() );
[ # # ]
305 : :
306 [ # # ][ # # ]: 0 : bool bEnableRotation = ( m_aCBNumber.IsChecked() || m_aCBPercent.IsChecked() || m_aCBCategory.IsChecked() );
[ # # ]
307 : 0 : m_aFL_Rotate.Enable( bEnableRotation );
308 : 0 : m_aDC_Dial.Enable( bEnableRotation );
309 : 0 : m_aFT_Degrees.Enable( bEnableRotation );
310 : 0 : m_aNF_Degrees.Enable( bEnableRotation );
311 : 0 : }
312 : :
313 : 0 : sal_Bool DataLabelResources::FillItemSet( SfxItemSet& rOutAttrs ) const
314 : : {
315 [ # # ][ # # ]: 0 : if( m_aCBNumber.IsChecked() )
316 : : {
317 [ # # ]: 0 : if( !m_bNumberFormatMixedState )
318 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxUInt32Item( SID_ATTR_NUMBERFORMAT_VALUE, m_nNumberFormatForValue ));
[ # # ]
319 [ # # ]: 0 : if( !m_bSourceFormatMixedState )
320 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxBoolItem( SID_ATTR_NUMBERFORMAT_SOURCE, m_bSourceFormatForValue ));
[ # # ]
321 : : }
322 [ # # ][ # # ]: 0 : if( m_aCBPercent.IsChecked() )
323 : : {
324 [ # # ]: 0 : if( !m_bPercentFormatMixedState )
325 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxUInt32Item( SCHATTR_PERCENT_NUMBERFORMAT_VALUE, m_nNumberFormatForPercent ));
[ # # ]
326 [ # # ]: 0 : if( !m_bPercentSourceMixedState )
327 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxBoolItem( SCHATTR_PERCENT_NUMBERFORMAT_SOURCE, m_bSourceFormatForPercent ));
[ # # ]
328 : : }
329 : :
330 [ # # ]: 0 : if( m_aCBNumber.GetState()!= STATE_DONTKNOW )
331 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxBoolItem( SCHATTR_DATADESCR_SHOW_NUMBER, m_aCBNumber.IsChecked() ) );
[ # # ][ # # ]
332 [ # # ]: 0 : if( m_aCBPercent.GetState()!= STATE_DONTKNOW )
333 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxBoolItem( SCHATTR_DATADESCR_SHOW_PERCENTAGE, m_aCBPercent.IsChecked() ) );
[ # # ][ # # ]
334 [ # # ]: 0 : if( m_aCBCategory.GetState()!= STATE_DONTKNOW )
335 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxBoolItem( SCHATTR_DATADESCR_SHOW_CATEGORY, m_aCBCategory.IsChecked() ) );
[ # # ][ # # ]
336 [ # # ]: 0 : if( m_aCBSymbol.GetState()!= STATE_DONTKNOW )
337 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxBoolItem( SCHATTR_DATADESCR_SHOW_SYMBOL, m_aCBSymbol.IsChecked()) );
[ # # ][ # # ]
338 : :
339 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxStringItem( SCHATTR_DATADESCR_SEPARATOR, m_aSeparatorResources.GetValue() ) );
[ # # ][ # # ]
[ # # ][ # # ]
340 [ # # ][ # # ]: 0 : ::std::map< sal_uInt16, sal_Int32 >::const_iterator aIt( m_aListBoxToPlacementMap.find(m_aLB_LabelPlacement.GetSelectEntryPos()) );
341 [ # # ][ # # ]: 0 : if(aIt!=m_aListBoxToPlacementMap.end())
342 : : {
343 [ # # ]: 0 : sal_Int32 nValue = aIt->second;
344 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxInt32Item( SCHATTR_DATADESCR_PLACEMENT, nValue ) );
[ # # ]
345 : : }
346 : :
347 [ # # ][ # # ]: 0 : if( m_aLB_TextDirection.GetSelectEntryCount() > 0 )
348 [ # # ][ # # ]: 0 : rOutAttrs.Put( SfxInt32Item( EE_PARA_WRITINGDIR, m_aLB_TextDirection.GetSelectEntryValue() ) );
[ # # ][ # # ]
349 : :
350 [ # # ][ # # ]: 0 : if( m_aDC_Dial.IsVisible() )
351 : : {
352 [ # # ]: 0 : sal_Int32 nDegrees = m_aDC_Dial.GetRotation();
353 [ # # ][ # # ]: 0 : rOutAttrs.Put(SfxInt32Item( SCHATTR_TEXT_DEGREES, nDegrees ) );
[ # # ]
354 : : }
355 : :
356 : 0 : return sal_True;
357 : : }
358 : :
359 : 0 : void DataLabelResources::Reset(const SfxItemSet& rInAttrs)
360 : : {
361 : : // default state
362 [ # # ]: 0 : m_aCBSymbol.Enable( sal_False );
363 : :
364 [ # # ]: 0 : lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_NUMBER, m_aCBNumber );
365 [ # # ]: 0 : lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_PERCENTAGE, m_aCBPercent );
366 [ # # ]: 0 : lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_CATEGORY, m_aCBCategory );
367 [ # # ]: 0 : lcl_setBoolItemToCheckBox( rInAttrs, SCHATTR_DATADESCR_SHOW_SYMBOL, m_aCBSymbol );
368 : :
369 [ # # ]: 0 : m_bNumberFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SID_ATTR_NUMBERFORMAT_VALUE, SID_ATTR_NUMBERFORMAT_SOURCE, m_nNumberFormatForValue, m_bSourceFormatForValue, m_bSourceFormatMixedState );
370 [ # # ]: 0 : m_bPercentFormatMixedState = !lcl_ReadNumberFormatFromItemSet( rInAttrs, SCHATTR_PERCENT_NUMBERFORMAT_VALUE, SCHATTR_PERCENT_NUMBERFORMAT_SOURCE, m_nNumberFormatForPercent, m_bSourceFormatForPercent , m_bPercentSourceMixedState);
371 : :
372 : 0 : const SfxPoolItem *pPoolItem = NULL;
373 [ # # ][ # # ]: 0 : if( rInAttrs.GetItemState(SCHATTR_DATADESCR_SEPARATOR, sal_True, &pPoolItem) == SFX_ITEM_SET )
374 [ # # ][ # # ]: 0 : m_aSeparatorResources.SetValue( ((const SfxStringItem*)pPoolItem)->GetValue() );
375 : : else
376 [ # # ]: 0 : m_aSeparatorResources.SetDefault();
377 : :
378 [ # # ][ # # ]: 0 : if( rInAttrs.GetItemState(SCHATTR_DATADESCR_PLACEMENT, sal_True, &pPoolItem) == SFX_ITEM_SET )
379 : : {
380 : 0 : sal_Int32 nPlacement = ((const SfxInt32Item*)pPoolItem)->GetValue();
381 [ # # ][ # # ]: 0 : ::std::map< sal_Int32, sal_uInt16 >::const_iterator aIt( m_aPlacementToListBoxMap.find(nPlacement) );
382 [ # # ][ # # ]: 0 : if(aIt!=m_aPlacementToListBoxMap.end())
[ # # ]
383 : : {
384 [ # # ]: 0 : sal_uInt16 nPos = aIt->second;
385 [ # # ]: 0 : m_aLB_LabelPlacement.SelectEntryPos( nPos );
386 : : }
387 : : else
388 [ # # ]: 0 : m_aLB_LabelPlacement.SetNoSelection();
389 : : }
390 : : else
391 [ # # ]: 0 : m_aLB_LabelPlacement.SetNoSelection();
392 : :
393 [ # # ][ # # ]: 0 : if( rInAttrs.GetItemState(EE_PARA_WRITINGDIR, sal_True, &pPoolItem ) == SFX_ITEM_SET )
394 [ # # ]: 0 : m_aLB_TextDirection.SelectEntryValue( SvxFrameDirection(((const SvxFrameDirectionItem*)pPoolItem)->GetValue()) );
395 : :
396 [ # # ][ # # ]: 0 : if( rInAttrs.GetItemState( SCHATTR_TEXT_DEGREES, sal_True, &pPoolItem ) == SFX_ITEM_SET )
397 : : {
398 : 0 : sal_Int32 nDegrees = static_cast< const SfxInt32Item * >( pPoolItem )->GetValue();
399 [ # # ]: 0 : m_aDC_Dial.SetRotation( nDegrees );
400 : : }
401 : : else
402 [ # # ]: 0 : m_aDC_Dial.SetRotation( 0 );
403 : :
404 [ # # ]: 0 : EnableControls();
405 : 0 : }
406 : :
407 : : //.............................................................................
408 : : } //namespace chart
409 : : //.............................................................................
410 : :
411 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|