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