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 : #include <vcl/svapp.hxx>
21 :
22 : #include <com/sun/star/uno/Any.hxx>
23 : #include <com/sun/star/uno/Sequence.hxx>
24 :
25 : #include "global.hxx"
26 : #include "globstr.hrc"
27 : #include "cfgids.hxx"
28 : #include "viewopti.hxx"
29 : #include "rechead.hxx"
30 : #include "scresid.hxx"
31 : #include "sc.hrc"
32 : #include "miscuno.hxx"
33 :
34 : using namespace utl;
35 : using namespace com::sun::star::uno;
36 :
37 0 : TYPEINIT1(ScTpViewItem, SfxPoolItem);
38 :
39 : // class ScGridOptions
40 :
41 0 : void ScGridOptions::SetDefaults()
42 : {
43 0 : *this = ScGridOptions();
44 :
45 : // Raster-Defaults sind jetzt zwischen den Apps unterschiedlich
46 : // darum hier selber eintragen (alles in 1/100mm)
47 :
48 0 : if ( ScOptionsUtil::IsMetricSystem() )
49 : {
50 0 : nFldDrawX = 1000; // 1cm
51 0 : nFldDrawY = 1000;
52 0 : nFldSnapX = 1000;
53 0 : nFldSnapY = 1000;
54 : }
55 : else
56 : {
57 0 : nFldDrawX = 1270; // 0,5"
58 0 : nFldDrawY = 1270;
59 0 : nFldSnapX = 1270;
60 0 : nFldSnapY = 1270;
61 : }
62 0 : nFldDivisionX = 1;
63 0 : nFldDivisionY = 1;
64 0 : }
65 :
66 0 : const ScGridOptions& ScGridOptions::operator=( const ScGridOptions& rCpy )
67 : {
68 0 : nFldDrawX = rCpy.nFldDrawX; // UINT32
69 0 : nFldDivisionX = rCpy.nFldDivisionX;
70 0 : nFldDrawY = rCpy.nFldDrawY;
71 0 : nFldDivisionY = rCpy.nFldDivisionY;
72 0 : nFldSnapX = rCpy.nFldSnapX;
73 0 : nFldSnapY = rCpy.nFldSnapY;
74 0 : bUseGridsnap = rCpy.bUseGridsnap; // BitBool
75 0 : bSynchronize = rCpy.bSynchronize;
76 0 : bGridVisible = rCpy.bGridVisible;
77 0 : bEqualGrid = rCpy.bEqualGrid;
78 :
79 0 : return *this;
80 : }
81 :
82 0 : bool ScGridOptions::operator==( const ScGridOptions& rCpy ) const
83 : {
84 0 : return ( nFldDrawX == rCpy.nFldDrawX
85 0 : && nFldDivisionX == rCpy.nFldDivisionX
86 0 : && nFldDrawY == rCpy.nFldDrawY
87 0 : && nFldDivisionY == rCpy.nFldDivisionY
88 0 : && nFldSnapX == rCpy.nFldSnapX
89 0 : && nFldSnapY == rCpy.nFldSnapY
90 0 : && bUseGridsnap == rCpy.bUseGridsnap
91 0 : && bSynchronize == rCpy.bSynchronize
92 0 : && bGridVisible == rCpy.bGridVisible
93 0 : && bEqualGrid == rCpy.bEqualGrid );
94 : }
95 :
96 : // class ScViewOptions
97 :
98 0 : ScViewOptions::ScViewOptions()
99 : {
100 0 : SetDefaults();
101 0 : }
102 :
103 0 : ScViewOptions::ScViewOptions( const ScViewOptions& rCpy )
104 : {
105 0 : *this = rCpy;
106 0 : }
107 :
108 0 : ScViewOptions::~ScViewOptions()
109 : {
110 0 : }
111 :
112 0 : void ScViewOptions::SetDefaults()
113 : {
114 0 : aOptArr[ VOPT_FORMULAS ] = false;
115 0 : aOptArr[ VOPT_SYNTAX ] = false;
116 0 : aOptArr[ VOPT_HELPLINES ] = false;
117 0 : aOptArr[ VOPT_GRID_ONTOP ] = false;
118 0 : aOptArr[ VOPT_NOTES ] = true;
119 0 : aOptArr[ VOPT_NULLVALS ] = true;
120 0 : aOptArr[ VOPT_VSCROLL ] = true;
121 0 : aOptArr[ VOPT_HSCROLL ] = true;
122 0 : aOptArr[ VOPT_TABCONTROLS ] = true;
123 0 : aOptArr[ VOPT_OUTLINER ] = true;
124 0 : aOptArr[ VOPT_HEADER ] = true;
125 0 : aOptArr[ VOPT_GRID ] = true;
126 0 : aOptArr[ VOPT_ANCHOR ] = true;
127 0 : aOptArr[ VOPT_PAGEBREAKS ] = true;
128 0 : aOptArr[ VOPT_CLIPMARKS ] = true;
129 :
130 0 : aModeArr[VOBJ_TYPE_OLE ] = VOBJ_MODE_SHOW;
131 0 : aModeArr[VOBJ_TYPE_CHART] = VOBJ_MODE_SHOW;
132 0 : aModeArr[VOBJ_TYPE_DRAW ] = VOBJ_MODE_SHOW;
133 :
134 0 : aGridCol = Color( SC_STD_GRIDCOLOR );
135 0 : aGridColName = ScGlobal::GetRscString( STR_GRIDCOLOR );
136 :
137 0 : aGridOpt.SetDefaults();
138 0 : }
139 :
140 0 : Color ScViewOptions::GetGridColor( OUString* pStrName ) const
141 : {
142 0 : if ( pStrName )
143 0 : *pStrName = aGridColName;
144 :
145 0 : return aGridCol;
146 : }
147 :
148 0 : const ScViewOptions& ScViewOptions::operator=( const ScViewOptions& rCpy )
149 : {
150 : sal_uInt16 i;
151 :
152 0 : for ( i=0; i<MAX_OPT; i++ ) aOptArr [i] = rCpy.aOptArr[i];
153 0 : for ( i=0; i<MAX_TYPE; i++ ) aModeArr[i] = rCpy.aModeArr[i];
154 :
155 0 : aGridCol = rCpy.aGridCol;
156 0 : aGridColName = rCpy.aGridColName;
157 0 : aGridOpt = rCpy.aGridOpt;
158 :
159 0 : return *this;
160 : }
161 :
162 0 : bool ScViewOptions::operator==( const ScViewOptions& rOpt ) const
163 : {
164 0 : bool bEqual = true;
165 : sal_uInt16 i;
166 :
167 0 : for ( i=0; i<MAX_OPT && bEqual; i++ ) bEqual = (aOptArr [i] == rOpt.aOptArr[i]);
168 0 : for ( i=0; i<MAX_TYPE && bEqual; i++ ) bEqual = (aModeArr[i] == rOpt.aModeArr[i]);
169 :
170 0 : bEqual = bEqual && (aGridCol == rOpt.aGridCol);
171 0 : bEqual = bEqual && (aGridColName == rOpt.aGridColName);
172 0 : bEqual = bEqual && (aGridOpt == rOpt.aGridOpt);
173 :
174 0 : return bEqual;
175 : }
176 :
177 0 : SvxGridItem* ScViewOptions::CreateGridItem( sal_uInt16 nId /* = SID_ATTR_GRID_OPTIONS */ ) const
178 : {
179 0 : SvxGridItem* pItem = new SvxGridItem( nId );
180 :
181 0 : pItem->SetFldDrawX ( aGridOpt.GetFldDrawX() );
182 0 : pItem->SetFldDivisionX ( aGridOpt.GetFldDivisionX() );
183 0 : pItem->SetFldDrawY ( aGridOpt.GetFldDrawY() );
184 0 : pItem->SetFldDivisionY ( aGridOpt.GetFldDivisionY() );
185 0 : pItem->SetFldSnapX ( aGridOpt.GetFldSnapX() );
186 0 : pItem->SetFldSnapY ( aGridOpt.GetFldSnapY() );
187 0 : pItem->SetUseGridSnap ( aGridOpt.GetUseGridSnap() );
188 0 : pItem->SetSynchronize ( aGridOpt.GetSynchronize() );
189 0 : pItem->SetGridVisible ( aGridOpt.GetGridVisible() );
190 0 : pItem->SetEqualGrid ( aGridOpt.GetEqualGrid() );
191 :
192 0 : return pItem;
193 : }
194 :
195 : // ScTpViewItem - Daten fuer die ViewOptions-TabPage
196 :
197 0 : ScTpViewItem::ScTpViewItem( sal_uInt16 nWhichP, const ScViewOptions& rOpt )
198 : : SfxPoolItem ( nWhichP ),
199 0 : theOptions ( rOpt )
200 : {
201 0 : }
202 :
203 0 : ScTpViewItem::ScTpViewItem( const ScTpViewItem& rItem )
204 : : SfxPoolItem ( rItem ),
205 0 : theOptions ( rItem.theOptions )
206 : {
207 0 : }
208 :
209 0 : ScTpViewItem::~ScTpViewItem()
210 : {
211 0 : }
212 :
213 0 : OUString ScTpViewItem::GetValueText() const
214 : {
215 0 : return OUString("ScTpViewItem");
216 : }
217 :
218 0 : bool ScTpViewItem::operator==( const SfxPoolItem& rItem ) const
219 : {
220 : OSL_ENSURE( SfxPoolItem::operator==( rItem ), "unequal Which or Type" );
221 :
222 0 : const ScTpViewItem& rPItem = (const ScTpViewItem&)rItem;
223 :
224 0 : return ( theOptions == rPItem.theOptions );
225 : }
226 :
227 0 : SfxPoolItem* ScTpViewItem::Clone( SfxItemPool * ) const
228 : {
229 0 : return new ScTpViewItem( *this );
230 : }
231 :
232 : // Config Item containing view options
233 :
234 : #define CFGPATH_LAYOUT "Office.Calc/Layout"
235 :
236 : #define SCLAYOUTOPT_GRIDLINES 0
237 : #define SCLAYOUTOPT_GRIDCOLOR 1
238 : #define SCLAYOUTOPT_PAGEBREAK 2
239 : #define SCLAYOUTOPT_GUIDE 3
240 : #define SCLAYOUTOPT_COLROWHDR 4
241 : #define SCLAYOUTOPT_HORISCROLL 5
242 : #define SCLAYOUTOPT_VERTSCROLL 6
243 : #define SCLAYOUTOPT_SHEETTAB 7
244 : #define SCLAYOUTOPT_OUTLINE 8
245 : #define SCLAYOUTOPT_GRID_ONCOLOR 9
246 : #define SCLAYOUTOPT_COUNT 10
247 :
248 : #define CFGPATH_DISPLAY "Office.Calc/Content/Display"
249 :
250 : #define SCDISPLAYOPT_FORMULA 0
251 : #define SCDISPLAYOPT_ZEROVALUE 1
252 : #define SCDISPLAYOPT_NOTETAG 2
253 : #define SCDISPLAYOPT_VALUEHI 3
254 : #define SCDISPLAYOPT_ANCHOR 4
255 : #define SCDISPLAYOPT_TEXTOVER 5
256 : #define SCDISPLAYOPT_OBJECTGRA 6
257 : #define SCDISPLAYOPT_CHART 7
258 : #define SCDISPLAYOPT_DRAWING 8
259 : #define SCDISPLAYOPT_COUNT 9
260 :
261 : #define CFGPATH_GRID "Office.Calc/Grid"
262 :
263 : #define SCGRIDOPT_RESOLU_X 0
264 : #define SCGRIDOPT_RESOLU_Y 1
265 : #define SCGRIDOPT_SUBDIV_X 2
266 : #define SCGRIDOPT_SUBDIV_Y 3
267 : #define SCGRIDOPT_OPTION_X 4
268 : #define SCGRIDOPT_OPTION_Y 5
269 : #define SCGRIDOPT_SNAPTOGRID 6
270 : #define SCGRIDOPT_SYNCHRON 7
271 : #define SCGRIDOPT_VISIBLE 8
272 : #define SCGRIDOPT_SIZETOGRID 9
273 : #define SCGRIDOPT_COUNT 10
274 :
275 0 : Sequence<OUString> ScViewCfg::GetLayoutPropertyNames()
276 : {
277 : static const char* aPropNames[] =
278 : {
279 : "Line/GridLine", // SCLAYOUTOPT_GRIDLINES
280 : "Line/GridLineColor", // SCLAYOUTOPT_GRIDCOLOR
281 : "Line/PageBreak", // SCLAYOUTOPT_PAGEBREAK
282 : "Line/Guide", // SCLAYOUTOPT_GUIDE
283 : "Window/ColumnRowHeader", // SCLAYOUTOPT_COLROWHDR
284 : "Window/HorizontalScroll", // SCLAYOUTOPT_HORISCROLL
285 : "Window/VerticalScroll", // SCLAYOUTOPT_VERTSCROLL
286 : "Window/SheetTab", // SCLAYOUTOPT_SHEETTAB
287 : "Window/OutlineSymbol", // SCLAYOUTOPT_OUTLINE
288 : "Line/GridOnColoredCells" // SCLAYOUTOPT_GRID_ONCOLOR
289 : };
290 0 : Sequence<OUString> aNames(SCLAYOUTOPT_COUNT);
291 0 : OUString* pNames = aNames.getArray();
292 0 : for(int i = 0; i < SCLAYOUTOPT_COUNT; i++)
293 0 : pNames[i] = OUString::createFromAscii(aPropNames[i]);
294 :
295 0 : return aNames;
296 : }
297 :
298 0 : Sequence<OUString> ScViewCfg::GetDisplayPropertyNames()
299 : {
300 : static const char* aPropNames[] =
301 : {
302 : "Formula", // SCDISPLAYOPT_FORMULA
303 : "ZeroValue", // SCDISPLAYOPT_ZEROVALUE
304 : "NoteTag", // SCDISPLAYOPT_NOTETAG
305 : "ValueHighlighting", // SCDISPLAYOPT_VALUEHI
306 : "Anchor", // SCDISPLAYOPT_ANCHOR
307 : "TextOverflow", // SCDISPLAYOPT_TEXTOVER
308 : "ObjectGraphic", // SCDISPLAYOPT_OBJECTGRA
309 : "Chart", // SCDISPLAYOPT_CHART
310 : "DrawingObject" // SCDISPLAYOPT_DRAWING
311 : };
312 0 : Sequence<OUString> aNames(SCDISPLAYOPT_COUNT);
313 0 : OUString* pNames = aNames.getArray();
314 0 : for(int i = 0; i < SCDISPLAYOPT_COUNT; i++)
315 0 : pNames[i] = OUString::createFromAscii(aPropNames[i]);
316 :
317 0 : return aNames;
318 : }
319 :
320 0 : Sequence<OUString> ScViewCfg::GetGridPropertyNames()
321 : {
322 : static const char* aPropNames[] =
323 : {
324 : "Resolution/XAxis/NonMetric", // SCGRIDOPT_RESOLU_X
325 : "Resolution/YAxis/NonMetric", // SCGRIDOPT_RESOLU_Y
326 : "Subdivision/XAxis", // SCGRIDOPT_SUBDIV_X
327 : "Subdivision/YAxis", // SCGRIDOPT_SUBDIV_Y
328 : "Option/XAxis/NonMetric", // SCGRIDOPT_OPTION_X
329 : "Option/YAxis/NonMetric", // SCGRIDOPT_OPTION_Y
330 : "Option/SnapToGrid", // SCGRIDOPT_SNAPTOGRID
331 : "Option/Synchronize", // SCGRIDOPT_SYNCHRON
332 : "Option/VisibleGrid", // SCGRIDOPT_VISIBLE
333 : "Option/SizeToGrid" // SCGRIDOPT_SIZETOGRID
334 : };
335 0 : Sequence<OUString> aNames(SCGRIDOPT_COUNT);
336 0 : OUString* pNames = aNames.getArray();
337 0 : for(int i = 0; i < SCGRIDOPT_COUNT; i++)
338 0 : pNames[i] = OUString::createFromAscii(aPropNames[i]);
339 :
340 : // adjust for metric system
341 0 : if (ScOptionsUtil::IsMetricSystem())
342 : {
343 0 : pNames[SCGRIDOPT_RESOLU_X] = "Resolution/XAxis/Metric";
344 0 : pNames[SCGRIDOPT_RESOLU_Y] = "Resolution/YAxis/Metric";
345 0 : pNames[SCGRIDOPT_OPTION_X] = "Option/XAxis/Metric";
346 0 : pNames[SCGRIDOPT_OPTION_Y] = "Option/YAxis/Metric";
347 : }
348 :
349 0 : return aNames;
350 : }
351 :
352 0 : ScViewCfg::ScViewCfg() :
353 : aLayoutItem( OUString( CFGPATH_LAYOUT ) ),
354 : aDisplayItem( OUString( CFGPATH_DISPLAY ) ),
355 0 : aGridItem( OUString( CFGPATH_GRID ) )
356 : {
357 0 : sal_Int32 nIntVal = 0;
358 :
359 0 : Sequence<OUString> aNames = GetLayoutPropertyNames();
360 0 : Sequence<Any> aValues = aLayoutItem.GetProperties(aNames);
361 0 : aLayoutItem.EnableNotification(aNames);
362 0 : const Any* pValues = aValues.getConstArray();
363 : OSL_ENSURE(aValues.getLength() == aNames.getLength(), "GetProperties failed");
364 0 : if(aValues.getLength() == aNames.getLength())
365 : {
366 0 : for(int nProp = 0; nProp < aNames.getLength(); nProp++)
367 : {
368 : OSL_ENSURE(pValues[nProp].hasValue(), "property value missing");
369 0 : if(pValues[nProp].hasValue())
370 : {
371 0 : switch(nProp)
372 : {
373 : case SCLAYOUTOPT_GRIDCOLOR:
374 0 : if ( pValues[nProp] >>= nIntVal )
375 0 : SetGridColor( Color(nIntVal), EMPTY_OUSTRING );
376 0 : break;
377 : case SCLAYOUTOPT_GRIDLINES:
378 0 : SetOption( VOPT_GRID, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
379 0 : break;
380 : case SCLAYOUTOPT_GRID_ONCOLOR:
381 0 : SetOption( VOPT_GRID_ONTOP, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
382 0 : break;
383 : case SCLAYOUTOPT_PAGEBREAK:
384 0 : SetOption( VOPT_PAGEBREAKS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
385 0 : break;
386 : case SCLAYOUTOPT_GUIDE:
387 0 : SetOption( VOPT_HELPLINES, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
388 0 : break;
389 : case SCLAYOUTOPT_COLROWHDR:
390 0 : SetOption( VOPT_HEADER, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
391 0 : break;
392 : case SCLAYOUTOPT_HORISCROLL:
393 0 : SetOption( VOPT_HSCROLL, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
394 0 : break;
395 : case SCLAYOUTOPT_VERTSCROLL:
396 0 : SetOption( VOPT_VSCROLL, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
397 0 : break;
398 : case SCLAYOUTOPT_SHEETTAB:
399 0 : SetOption( VOPT_TABCONTROLS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
400 0 : break;
401 : case SCLAYOUTOPT_OUTLINE:
402 0 : SetOption( VOPT_OUTLINER, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
403 0 : break;
404 : }
405 : }
406 : }
407 : }
408 0 : aLayoutItem.SetCommitLink( LINK( this, ScViewCfg, LayoutCommitHdl ) );
409 :
410 0 : aNames = GetDisplayPropertyNames();
411 0 : aValues = aDisplayItem.GetProperties(aNames);
412 0 : aDisplayItem.EnableNotification(aNames);
413 0 : pValues = aValues.getConstArray();
414 : OSL_ENSURE(aValues.getLength() == aNames.getLength(), "GetProperties failed");
415 0 : if(aValues.getLength() == aNames.getLength())
416 : {
417 0 : for(int nProp = 0; nProp < aNames.getLength(); nProp++)
418 : {
419 : OSL_ENSURE(pValues[nProp].hasValue(), "property value missing");
420 0 : if(pValues[nProp].hasValue())
421 : {
422 0 : switch(nProp)
423 : {
424 : case SCDISPLAYOPT_FORMULA:
425 0 : SetOption( VOPT_FORMULAS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
426 0 : break;
427 : case SCDISPLAYOPT_ZEROVALUE:
428 0 : SetOption( VOPT_NULLVALS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
429 0 : break;
430 : case SCDISPLAYOPT_NOTETAG:
431 0 : SetOption( VOPT_NOTES, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
432 0 : break;
433 : case SCDISPLAYOPT_VALUEHI:
434 0 : SetOption( VOPT_SYNTAX, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
435 0 : break;
436 : case SCDISPLAYOPT_ANCHOR:
437 0 : SetOption( VOPT_ANCHOR, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
438 0 : break;
439 : case SCDISPLAYOPT_TEXTOVER:
440 0 : SetOption( VOPT_CLIPMARKS, ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
441 0 : break;
442 : case SCDISPLAYOPT_OBJECTGRA:
443 0 : if ( pValues[nProp] >>= nIntVal )
444 : {
445 : //#i80528# adapt to new range eventually
446 0 : if((sal_Int32)VOBJ_MODE_HIDE < nIntVal) nIntVal = (sal_Int32)VOBJ_MODE_SHOW;
447 :
448 0 : SetObjMode( VOBJ_TYPE_OLE, (ScVObjMode)nIntVal);
449 : }
450 0 : break;
451 : case SCDISPLAYOPT_CHART:
452 0 : if ( pValues[nProp] >>= nIntVal )
453 : {
454 : //#i80528# adapt to new range eventually
455 0 : if((sal_Int32)VOBJ_MODE_HIDE < nIntVal) nIntVal = (sal_Int32)VOBJ_MODE_SHOW;
456 :
457 0 : SetObjMode( VOBJ_TYPE_CHART, (ScVObjMode)nIntVal);
458 : }
459 0 : break;
460 : case SCDISPLAYOPT_DRAWING:
461 0 : if ( pValues[nProp] >>= nIntVal )
462 : {
463 : //#i80528# adapt to new range eventually
464 0 : if((sal_Int32)VOBJ_MODE_HIDE < nIntVal) nIntVal = (sal_Int32)VOBJ_MODE_SHOW;
465 :
466 0 : SetObjMode( VOBJ_TYPE_DRAW, (ScVObjMode)nIntVal);
467 : }
468 0 : break;
469 : }
470 : }
471 : }
472 : }
473 0 : aDisplayItem.SetCommitLink( LINK( this, ScViewCfg, DisplayCommitHdl ) );
474 :
475 0 : ScGridOptions aGrid = GetGridOptions(); //! initialization necessary?
476 0 : aNames = GetGridPropertyNames();
477 0 : aValues = aGridItem.GetProperties(aNames);
478 0 : aGridItem.EnableNotification(aNames);
479 0 : pValues = aValues.getConstArray();
480 : OSL_ENSURE(aValues.getLength() == aNames.getLength(), "GetProperties failed");
481 0 : if(aValues.getLength() == aNames.getLength())
482 : {
483 0 : for(int nProp = 0; nProp < aNames.getLength(); nProp++)
484 : {
485 : OSL_ENSURE(pValues[nProp].hasValue(), "property value missing");
486 0 : if(pValues[nProp].hasValue())
487 : {
488 0 : switch(nProp)
489 : {
490 : case SCGRIDOPT_RESOLU_X:
491 0 : if (pValues[nProp] >>= nIntVal) aGrid.SetFldDrawX( nIntVal );
492 0 : break;
493 : case SCGRIDOPT_RESOLU_Y:
494 0 : if (pValues[nProp] >>= nIntVal) aGrid.SetFldDrawY( nIntVal );
495 0 : break;
496 : case SCGRIDOPT_SUBDIV_X:
497 0 : if (pValues[nProp] >>= nIntVal) aGrid.SetFldDivisionX( nIntVal );
498 0 : break;
499 : case SCGRIDOPT_SUBDIV_Y:
500 0 : if (pValues[nProp] >>= nIntVal) aGrid.SetFldDivisionY( nIntVal );
501 0 : break;
502 : case SCGRIDOPT_OPTION_X:
503 0 : if (pValues[nProp] >>= nIntVal) aGrid.SetFldSnapX( nIntVal );
504 0 : break;
505 : case SCGRIDOPT_OPTION_Y:
506 0 : if (pValues[nProp] >>= nIntVal) aGrid.SetFldSnapY( nIntVal );
507 0 : break;
508 : case SCGRIDOPT_SNAPTOGRID:
509 0 : aGrid.SetUseGridSnap( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
510 0 : break;
511 : case SCGRIDOPT_SYNCHRON:
512 0 : aGrid.SetSynchronize( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
513 0 : break;
514 : case SCGRIDOPT_VISIBLE:
515 0 : aGrid.SetGridVisible( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
516 0 : break;
517 : case SCGRIDOPT_SIZETOGRID:
518 0 : aGrid.SetEqualGrid( ScUnoHelpFunctions::GetBoolFromAny( pValues[nProp] ) );
519 0 : break;
520 : }
521 : }
522 : }
523 : }
524 0 : SetGridOptions( aGrid );
525 0 : aGridItem.SetCommitLink( LINK( this, ScViewCfg, GridCommitHdl ) );
526 0 : }
527 :
528 0 : IMPL_LINK_NOARG(ScViewCfg, LayoutCommitHdl)
529 : {
530 0 : Sequence<OUString> aNames = GetLayoutPropertyNames();
531 0 : Sequence<Any> aValues(aNames.getLength());
532 0 : Any* pValues = aValues.getArray();
533 :
534 0 : for(int nProp = 0; nProp < aNames.getLength(); nProp++)
535 : {
536 0 : switch(nProp)
537 : {
538 : case SCLAYOUTOPT_GRIDCOLOR:
539 0 : pValues[nProp] <<= (sal_Int32) GetGridColor().GetColor();
540 0 : break;
541 : case SCLAYOUTOPT_GRIDLINES:
542 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_GRID ) );
543 0 : break;
544 : case SCLAYOUTOPT_GRID_ONCOLOR:
545 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_GRID_ONTOP ) );
546 0 : break;
547 : case SCLAYOUTOPT_PAGEBREAK:
548 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_PAGEBREAKS ) );
549 0 : break;
550 : case SCLAYOUTOPT_GUIDE:
551 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_HELPLINES ) );
552 0 : break;
553 : case SCLAYOUTOPT_COLROWHDR:
554 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_HEADER ) );
555 0 : break;
556 : case SCLAYOUTOPT_HORISCROLL:
557 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_HSCROLL ) );
558 0 : break;
559 : case SCLAYOUTOPT_VERTSCROLL:
560 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_VSCROLL ) );
561 0 : break;
562 : case SCLAYOUTOPT_SHEETTAB:
563 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_TABCONTROLS ) );
564 0 : break;
565 : case SCLAYOUTOPT_OUTLINE:
566 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_OUTLINER ) );
567 0 : break;
568 : }
569 : }
570 0 : aLayoutItem.PutProperties(aNames, aValues);
571 :
572 0 : return 0;
573 : }
574 :
575 0 : IMPL_LINK_NOARG(ScViewCfg, DisplayCommitHdl)
576 : {
577 0 : Sequence<OUString> aNames = GetDisplayPropertyNames();
578 0 : Sequence<Any> aValues(aNames.getLength());
579 0 : Any* pValues = aValues.getArray();
580 :
581 0 : for(int nProp = 0; nProp < aNames.getLength(); nProp++)
582 : {
583 0 : switch(nProp)
584 : {
585 : case SCDISPLAYOPT_FORMULA:
586 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_FORMULAS ) );
587 0 : break;
588 : case SCDISPLAYOPT_ZEROVALUE:
589 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_NULLVALS ) );
590 0 : break;
591 : case SCDISPLAYOPT_NOTETAG:
592 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_NOTES ) );
593 0 : break;
594 : case SCDISPLAYOPT_VALUEHI:
595 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_SYNTAX ) );
596 0 : break;
597 : case SCDISPLAYOPT_ANCHOR:
598 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_ANCHOR ) );
599 0 : break;
600 : case SCDISPLAYOPT_TEXTOVER:
601 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], GetOption( VOPT_CLIPMARKS ) );
602 0 : break;
603 : case SCDISPLAYOPT_OBJECTGRA:
604 0 : pValues[nProp] <<= (sal_Int32) GetObjMode( VOBJ_TYPE_OLE );
605 0 : break;
606 : case SCDISPLAYOPT_CHART:
607 0 : pValues[nProp] <<= (sal_Int32) GetObjMode( VOBJ_TYPE_CHART );
608 0 : break;
609 : case SCDISPLAYOPT_DRAWING:
610 0 : pValues[nProp] <<= (sal_Int32) GetObjMode( VOBJ_TYPE_DRAW );
611 0 : break;
612 : }
613 : }
614 0 : aDisplayItem.PutProperties(aNames, aValues);
615 :
616 0 : return 0;
617 : }
618 :
619 0 : IMPL_LINK_NOARG(ScViewCfg, GridCommitHdl)
620 : {
621 0 : const ScGridOptions& rGrid = GetGridOptions();
622 :
623 0 : Sequence<OUString> aNames = GetGridPropertyNames();
624 0 : Sequence<Any> aValues(aNames.getLength());
625 0 : Any* pValues = aValues.getArray();
626 :
627 0 : for(int nProp = 0; nProp < aNames.getLength(); nProp++)
628 : {
629 0 : switch(nProp)
630 : {
631 : case SCGRIDOPT_RESOLU_X:
632 0 : pValues[nProp] <<= (sal_Int32) rGrid.GetFldDrawX();
633 0 : break;
634 : case SCGRIDOPT_RESOLU_Y:
635 0 : pValues[nProp] <<= (sal_Int32) rGrid.GetFldDrawY();
636 0 : break;
637 : case SCGRIDOPT_SUBDIV_X:
638 0 : pValues[nProp] <<= (sal_Int32) rGrid.GetFldDivisionX();
639 0 : break;
640 : case SCGRIDOPT_SUBDIV_Y:
641 0 : pValues[nProp] <<= (sal_Int32) rGrid.GetFldDivisionY();
642 0 : break;
643 : case SCGRIDOPT_OPTION_X:
644 0 : pValues[nProp] <<= (sal_Int32) rGrid.GetFldSnapX();
645 0 : break;
646 : case SCGRIDOPT_OPTION_Y:
647 0 : pValues[nProp] <<= (sal_Int32) rGrid.GetFldSnapY();
648 0 : break;
649 : case SCGRIDOPT_SNAPTOGRID:
650 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetUseGridSnap() );
651 0 : break;
652 : case SCGRIDOPT_SYNCHRON:
653 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetSynchronize() );
654 0 : break;
655 : case SCGRIDOPT_VISIBLE:
656 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetGridVisible() );
657 0 : break;
658 : case SCGRIDOPT_SIZETOGRID:
659 0 : ScUnoHelpFunctions::SetBoolInAny( pValues[nProp], rGrid.GetEqualGrid() );
660 0 : break;
661 : }
662 : }
663 0 : aGridItem.PutProperties(aNames, aValues);
664 :
665 0 : return 0;
666 : }
667 :
668 0 : void ScViewCfg::SetOptions( const ScViewOptions& rNew )
669 : {
670 0 : *(ScViewOptions*)this = rNew;
671 0 : aLayoutItem.SetModified();
672 0 : aDisplayItem.SetModified();
673 0 : aGridItem.SetModified();
674 0 : }
675 :
676 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|