xref: /aoo41x/main/sc/source/ui/optdlg/tpview.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_sc.hxx"
30 
31 #undef SC_DLLIMPLEMENTATION
32 
33 
34 
35 //------------------------------------------------------------------
36 
37 #include "scitems.hxx"
38 #include "tpview.hxx"
39 #include "global.hxx"
40 #include "viewopti.hxx"
41 #include "tabvwsh.hxx"
42 #include "uiitems.hxx"
43 #include "scresid.hxx"
44 #include "docsh.hxx"
45 #include "sc.hrc"       // -> Slot-IDs
46 #include "optdlg.hrc"
47 #include "globstr.hrc"
48 #include <appoptio.hxx>
49 #include <scmod.hxx>
50 #include <svx/dlgutil.hxx>
51 #include <svx/drawitem.hxx>
52 #include <svx/xtable.hxx>
53 
54 
55 // STATIC DATA -----------------------------------------------------------
56 
57 
58 
59 /*-----------------11.01.97 10.52-------------------
60 	Optionen Inhalte
61 --------------------------------------------------*/
62 
63 ScTpContentOptions::ScTpContentOptions( Window*			pParent,
64 							 const SfxItemSet&	rArgSet ) :
65 	SfxTabPage(pParent, ScResId( RID_SCPAGE_CONTENT ), rArgSet),
66 
67     aLinesGB( this,         ScResId(GB_LINES          )),
68 	aGridCB( this, 			ScResId(CB_GRID			)),
69 	aColorFT( this, 		ScResId(FT_COLOR			)),
70 	aColorLB( this, 		ScResId(LB_COLOR			)),
71 	aBreakCB( this,			ScResId(CB_PAGEBREAKS		)),
72 	aGuideLineCB( this, 	ScResId(CB_GUIDELINE		)),
73 	aHandleCB( this,	 	ScResId(CB_HANDLES		)),
74 	aBigHandleCB( this,	 	ScResId(CB_BIGHANDLES		)),
75 
76     aSeparator1FL    (this, ScResId(FL_SEPARATOR1 )),
77     aDisplayGB( this,   ScResId(GB_DISPLAY)),
78 	aFormulaCB( this, 	ScResId(CB_FORMULA)),
79 	aNilCB( this, 		ScResId(CB_NIL	)),
80 	aAnnotCB( this, 	ScResId(CB_ANNOT	)),
81 	aValueCB( this, 	ScResId(CB_VALUE	)),
82 	aAnchorCB( this, 	ScResId(CB_ANCHOR	)),
83 	aClipMarkCB( this, 	ScResId(CB_CLIP	)),
84     aRangeFindCB( this,     ScResId( CB_RFIND     )),
85 
86     aObjectGB( this,    ScResId(GB_OBJECT )),
87 	aObjGrfFT( this, 	ScResId(FT_OBJGRF	)),
88 	aObjGrfLB( this, 	ScResId(LB_OBJGRF	)),
89     aDiagramFT( this,   ScResId(FT_DIAGRAM)),
90 	aDiagramLB( this, 	ScResId(LB_DIAGRAM)),
91 	aDrawFT( this, 		ScResId(FT_DRAW	)),
92 	aDrawLB( this, 		ScResId(LB_DRAW	)),
93 
94     aZoomGB( this,      ScResId(GB_ZOOM) ),
95     aSyncZoomCB( this,  ScResId(CB_SYNCZOOM) ),
96 
97     aSeparator2FL    (this, ScResId(FL_SEPARATOR2)),
98     aWindowGB( this,        ScResId(GB_WINDOW         )),
99 	aRowColHeaderCB(this,	ScResId(CB_ROWCOLHEADER	)),
100 	aHScrollCB( this, 		ScResId(CB_HSCROLL		)),
101 	aVScrollCB( this, 		ScResId(CB_VSCROLL		)),
102 	aTblRegCB( this, 		ScResId(CB_TBLREG			)),
103 	aOutlineCB( this, 		ScResId(CB_OUTLINE		)),
104     pLocalOptions(0)
105 {
106 	FreeResource();
107     aSeparator1FL.SetStyle( aSeparator1FL.GetStyle() | WB_VERT );
108     aSeparator2FL.SetStyle( aSeparator2FL.GetStyle() | WB_VERT );
109     SetExchangeSupport();
110     Link aSelObjHdl(LINK( this, ScTpContentOptions, SelLbObjHdl ) );
111     aObjGrfLB.  SetSelectHdl(aSelObjHdl);
112     aDiagramLB. SetSelectHdl(aSelObjHdl);
113     aDrawLB.    SetSelectHdl(aSelObjHdl);
114 
115     Link aCBHdl(LINK( this, ScTpContentOptions, CBHdl ) );
116     aFormulaCB  .SetClickHdl(aCBHdl);
117     aNilCB      .SetClickHdl(aCBHdl);
118     aAnnotCB    .SetClickHdl(aCBHdl);
119     aValueCB    .SetClickHdl(aCBHdl);
120     aAnchorCB   .SetClickHdl(aCBHdl);
121     aClipMarkCB .SetClickHdl(aCBHdl);
122 
123     aVScrollCB  .SetClickHdl(aCBHdl);
124     aHScrollCB  .SetClickHdl(aCBHdl);
125     aTblRegCB   .SetClickHdl(aCBHdl);
126     aOutlineCB  .SetClickHdl(aCBHdl);
127     aBreakCB    .SetClickHdl(aCBHdl);
128     aGuideLineCB.SetClickHdl(aCBHdl);
129     aHandleCB   .SetClickHdl(aCBHdl);
130     aBigHandleCB.SetClickHdl(aCBHdl);
131     aRowColHeaderCB.SetClickHdl(aCBHdl);
132 
133     aGridCB     .SetClickHdl( LINK( this, ScTpContentOptions, GridHdl ) );
134 }
135 /*-----------------11.01.97 10.52-------------------
136 
137 --------------------------------------------------*/
138 
139 ScTpContentOptions::~ScTpContentOptions()
140 {
141 	delete pLocalOptions;
142 }
143 /*-----------------11.01.97 10.52-------------------
144 
145 --------------------------------------------------*/
146 
147 SfxTabPage*	ScTpContentOptions::Create( Window*		pParent,
148 							  const SfxItemSet&		rCoreSet )
149 {
150 	return new ScTpContentOptions(pParent, rCoreSet);
151 }
152 /*-----------------11.01.97 10.52-------------------
153 
154 --------------------------------------------------*/
155 sal_Bool	ScTpContentOptions::FillItemSet( SfxItemSet& rCoreSet )
156 {
157 	sal_Bool bRet = sal_False;
158 	if(	aFormulaCB	.GetSavedValue() != aFormulaCB	.IsChecked() ||
159 		aNilCB		.GetSavedValue() != aNilCB		.IsChecked() ||
160 		aAnnotCB  	.GetSavedValue() != aAnnotCB	.IsChecked() ||
161 		aValueCB  	.GetSavedValue() != aValueCB  	.IsChecked() ||
162 		aAnchorCB 	.GetSavedValue() != aAnchorCB 	.IsChecked() ||
163 		aClipMarkCB	.GetSavedValue() != aClipMarkCB	.IsChecked() ||
164 		aObjGrfLB   .GetSavedValue() != aObjGrfLB  	.GetSelectEntryPos() ||
165 		aDiagramLB  .GetSavedValue() != aDiagramLB 	.GetSelectEntryPos() ||
166         aDrawLB     .GetSavedValue() != aDrawLB     .GetSelectEntryPos() ||
167         aGridCB         .GetSavedValue() != aGridCB.IsChecked() ||
168 		aRowColHeaderCB	.GetSavedValue() != aRowColHeaderCB.IsChecked() ||
169 		aHScrollCB      .GetSavedValue() != aHScrollCB     .IsChecked() ||
170 		aVScrollCB      .GetSavedValue() != aVScrollCB     .IsChecked() ||
171 		aTblRegCB       .GetSavedValue() != aTblRegCB      .IsChecked() ||
172 		aOutlineCB      .GetSavedValue() != aOutlineCB     .IsChecked() ||
173 		aColorLB        .GetSavedValue() != aColorLB       .GetSelectEntryPos() ||
174 		aBreakCB		.GetSavedValue() != aBreakCB	   .IsChecked() ||
175 		aGuideLineCB    .GetSavedValue() != aGuideLineCB   .IsChecked() ||
176 		aHandleCB		.GetSavedValue() != aHandleCB	   .IsChecked() ||
177         aBigHandleCB    .GetSavedValue() != aBigHandleCB   .IsChecked())
178 	{
179         pLocalOptions->SetGridColor( aColorLB.GetSelectEntryColor(),
180 									 aColorLB.GetSelectEntry() );
181         rCoreSet.Put(ScTpViewItem(SID_SCVIEWOPTIONS, *pLocalOptions));
182 		bRet = sal_True;
183 	}
184     if(aRangeFindCB.GetSavedValue() != aRangeFindCB.IsChecked())
185     {
186         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_RANGEFINDER, aRangeFindCB.IsChecked()));
187         bRet = sal_True;
188     }
189     if(aSyncZoomCB.GetSavedValue() != aSyncZoomCB.IsChecked())
190     {
191         rCoreSet.Put(SfxBoolItem(SID_SC_OPT_SYNCZOOM, aSyncZoomCB.IsChecked()));
192         bRet = sal_True;
193     }
194 
195 
196     return bRet;
197 }
198 /*-----------------11.01.97 10.53-------------------
199 
200 --------------------------------------------------*/
201 
202 void	ScTpContentOptions::Reset( const SfxItemSet& rCoreSet )
203 {
204 	const SfxPoolItem* pItem;
205 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SCVIEWOPTIONS, sal_False , &pItem))
206 		pLocalOptions  = new ScViewOptions(
207 							((const ScTpViewItem*)pItem)->GetViewOptions() );
208 	else
209 		pLocalOptions = new ScViewOptions;
210 	aFormulaCB	.Check(pLocalOptions->GetOption(VOPT_FORMULAS));
211 	aNilCB		.Check(pLocalOptions->GetOption(VOPT_NULLVALS));
212 	aAnnotCB  	.Check(pLocalOptions->GetOption(VOPT_NOTES));
213 	aValueCB  	.Check(pLocalOptions->GetOption(VOPT_SYNTAX));
214 	aAnchorCB 	.Check(pLocalOptions->GetOption(VOPT_ANCHOR));
215 	aClipMarkCB	.Check(pLocalOptions->GetOption(VOPT_CLIPMARKS));
216 
217 	aObjGrfLB 	.SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_OLE) );
218 	aDiagramLB  .SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_CHART) );
219 	aDrawLB     .SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_DRAW) );
220 
221 	aRowColHeaderCB.Check( pLocalOptions->GetOption(VOPT_HEADER) );
222 	aHScrollCB .Check( pLocalOptions->GetOption(VOPT_HSCROLL) );
223 	aVScrollCB .Check( pLocalOptions->GetOption(VOPT_VSCROLL) );
224 	aTblRegCB  .Check( pLocalOptions->GetOption(VOPT_TABCONTROLS) );
225 	aOutlineCB .Check( pLocalOptions->GetOption(VOPT_OUTLINER) );
226 
227 	InitGridOpt();
228 
229 	aBreakCB.Check( pLocalOptions->GetOption(VOPT_PAGEBREAKS) );
230 	aGuideLineCB.Check( pLocalOptions->GetOption(VOPT_HELPLINES) );
231 	aHandleCB.Check( !pLocalOptions->GetOption(VOPT_SOLIDHANDLES) );	// inverted
232 	aBigHandleCB.Check( pLocalOptions->GetOption(VOPT_BIGHANDLES) );
233 
234     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_RANGEFINDER, sal_False, &pItem))
235 		aRangeFindCB.Check(((const SfxBoolItem*)pItem)->GetValue());
236     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_OPT_SYNCZOOM, sal_False, &pItem))
237 		aSyncZoomCB.Check(((const SfxBoolItem*)pItem)->GetValue());
238 
239     aRangeFindCB.SaveValue();
240     aSyncZoomCB.SaveValue();
241 
242     aFormulaCB  .SaveValue();
243 	aNilCB		.SaveValue();
244 	aAnnotCB  	.SaveValue();
245 	aValueCB  	.SaveValue();
246 	aAnchorCB 	.SaveValue();
247 	aClipMarkCB	.SaveValue();
248 	aObjGrfLB   .SaveValue();
249 	aDiagramLB  .SaveValue();
250 	aDrawLB     .SaveValue();
251     aRowColHeaderCB .SaveValue();
252 	aHScrollCB      .SaveValue();
253 	aVScrollCB      .SaveValue();
254 	aTblRegCB       .SaveValue();
255 	aOutlineCB      .SaveValue();
256 	aGridCB         .SaveValue();
257 	aColorLB        .SaveValue();
258 	aBreakCB		.SaveValue();
259 	aGuideLineCB    .SaveValue();
260 	aHandleCB		.SaveValue();
261 	aBigHandleCB	.SaveValue();
262 }
263 /*-----------------11.01.97 12.45-------------------
264 
265 --------------------------------------------------*/
266 
267 void ScTpContentOptions::ActivatePage( const SfxItemSet& rSet)
268 {
269 	const SfxPoolItem* pItem;
270 	if(SFX_ITEM_SET == rSet.GetItemState(SID_SCVIEWOPTIONS, sal_False , &pItem))
271 		*pLocalOptions = ((const ScTpViewItem*)pItem)->GetViewOptions();
272 }
273 /*-----------------11.01.97 12.45-------------------
274 
275 --------------------------------------------------*/
276 
277 int	ScTpContentOptions::DeactivatePage( SfxItemSet* pSetP )
278 {
279     if(pSetP)
280         FillItemSet(*pSetP);
281 	return SfxTabPage::LEAVE_PAGE;
282 }
283 /*-----------------11.01.97 13.43-------------------
284 
285 --------------------------------------------------*/
286 
287 IMPL_LINK( ScTpContentOptions, SelLbObjHdl, ListBox*, pLb )
288 {
289 	sal_uInt16		nSelPos = pLb->GetSelectEntryPos();
290 	ScVObjMode	eMode	= ScVObjMode(nSelPos);
291 	ScVObjType	eType	= VOBJ_TYPE_OLE;
292 
293 	if ( pLb == &aDiagramLB )
294 		eType = VOBJ_TYPE_CHART;
295 	else if ( pLb == &aDrawLB )
296 		eType = VOBJ_TYPE_DRAW;
297 
298 	pLocalOptions->SetObjMode( eType, eMode );
299 
300 	return 0;
301 }
302 
303 /*-----------------11.01.97 14.25-------------------
304 
305 --------------------------------------------------*/
306 
307 IMPL_LINK( ScTpContentOptions, CBHdl, CheckBox*, pBtn )
308 {
309     ScViewOption eOption = VOPT_FORMULAS;
310 	sal_Bool		 bChecked = pBtn->IsChecked();
311 
312 	if ( 	  &aFormulaCB 	== pBtn )	eOption = VOPT_FORMULAS;
313 	else if ( &aNilCB 		== pBtn )	eOption = VOPT_NULLVALS;
314 	else if ( &aAnnotCB		== pBtn )	eOption = VOPT_NOTES;
315 	else if ( &aValueCB		== pBtn )	eOption = VOPT_SYNTAX;
316 	else if ( &aAnchorCB	== pBtn )   eOption = VOPT_ANCHOR;
317 	else if ( &aClipMarkCB	== pBtn )   eOption = VOPT_CLIPMARKS;
318     else if ( &aVScrollCB       == pBtn )   eOption = VOPT_VSCROLL;
319 	else if ( &aHScrollCB		== pBtn )	eOption = VOPT_HSCROLL;
320 	else if ( &aTblRegCB		== pBtn )	eOption = VOPT_TABCONTROLS;
321 	else if ( &aOutlineCB 		== pBtn )	eOption = VOPT_OUTLINER;
322 	else if ( &aBreakCB			== pBtn )	eOption = VOPT_PAGEBREAKS;
323 	else if ( &aGuideLineCB 	== pBtn )	eOption = VOPT_HELPLINES;
324 	else if ( &aHandleCB	 	== pBtn )	eOption = VOPT_SOLIDHANDLES;
325 	else if ( &aBigHandleCB	 	== pBtn )	eOption = VOPT_BIGHANDLES;
326 	else if ( &aRowColHeaderCB 	== pBtn )	eOption = VOPT_HEADER;
327 
328 	//	VOPT_SOLIDHANDLES is inverted (CheckBox is "simple handles")
329 	if ( eOption == VOPT_SOLIDHANDLES )
330 		pLocalOptions->SetOption( eOption, !bChecked );
331 	else
332 		pLocalOptions->SetOption( eOption, bChecked );
333 
334 
335 	return 0;
336 }
337 /*-----------------11.01.97 13.13-------------------
338 
339 --------------------------------------------------*/
340 
341 void ScTpContentOptions::InitGridOpt()
342 {
343 	sal_Bool bGrid = pLocalOptions->GetOption( VOPT_GRID );
344 
345 	aGridCB.Check( bGrid );
346 
347 	if ( bGrid )
348 		aColorFT.Enable(), aColorLB.Enable();
349 	else
350 		aColorFT.Disable(), aColorLB.Disable();
351 
352 	if ( aColorLB.GetEntryCount() == 0 )
353 	{
354 		SfxObjectShell*	pDocSh = SfxObjectShell::Current();
355 		// hier koennte auch eine andere DocShell kommen!
356 		pDocSh = PTR_CAST(ScDocShell, pDocSh);
357 
358 		XColorTable* pColorTable = NULL;
359 
360 		if ( pDocSh  )
361 		{
362             const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
363 
364 			if ( pItem )
365 				pColorTable = ((SvxColorTableItem*)pItem)->GetColorTable();
366 		}
367 		else
368 			pColorTable = XColorTable::GetStdColorTable();
369 
370 		if ( !pColorTable )
371 			return;
372 
373 		//------------------------------------------------------
374 
375 		aColorLB.SetUpdateMode( sal_False );
376 
377 		//	Eintraege aus der Colortable
378 
379 		long nCount = pColorTable->Count();
380 		for ( long n=0; n<nCount; n++ )
381 		{
382 			XColorEntry* pEntry = pColorTable->GetColor(n);
383 			aColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
384 		}
385 
386 		//	Standard-Gitterfarbe
387 
388 		Color aStdCol( SC_STD_GRIDCOLOR );			// wie Default in ScViewOptions
389 		if ( LISTBOX_ENTRY_NOTFOUND ==
390 				aColorLB.GetEntryPos( aStdCol ) )
391 			aColorLB.InsertEntry( aStdCol, ScGlobal::GetRscString( STR_GRIDCOLOR ) );
392 
393 		aColorLB.SetUpdateMode( sal_True );
394 
395 		Invalidate();
396 	}
397 
398 	//	#79720# also select grid color entry on subsequent calls
399 
400 	String	aName;
401 	Color	aCol	= pLocalOptions->GetGridColor( &aName );
402 	sal_uInt16	nSelPos	= aColorLB.GetEntryPos( aCol );
403 
404 	if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
405 		aColorLB.SelectEntryPos( nSelPos );
406 	else
407 		aColorLB.SelectEntryPos( aColorLB.InsertEntry( aCol, aName ) );
408 }
409 /*-----------------11.01.97 13.40-------------------
410 
411 --------------------------------------------------*/
412 
413 IMPL_LINK( ScTpContentOptions, GridHdl, CheckBox*, pBox )
414 {
415 	sal_Bool bChecked = pBox->IsChecked();
416 	aColorFT.Enable(bChecked);
417 	aColorLB.Enable(bChecked);
418 	pLocalOptions->SetOption( VOPT_GRID, bChecked );
419 	return 0;
420 }
421 /*-----------------11.01.97 10.53-------------------
422 
423 --------------------------------------------------*/
424 
425 ScTpLayoutOptions::ScTpLayoutOptions( 	Window*	pParent,
426 										const SfxItemSet&	rArgSet ) :
427 	SfxTabPage(pParent, ScResId( RID_SCPAGE_LAYOUT ), rArgSet),
428     aUnitGB( this,          ScResId(GB_UNIT           )),
429     aUnitFT( this,          ScResId(FT_UNIT           )),
430     aUnitLB( this,          ScResId(LB_UNIT           )),
431     aTabFT( this,           ScResId( FT_TAB           )),
432     aTabMF( this,           ScResId( MF_TAB           )),
433     aSeparatorFL( this,     ScResId( FL_SEPARATOR         )),
434 	aLinkGB		(this, ScResId(GB_LINK	)),
435     aLinkFT(this, ScResId(FT_UPDATE_LINKS )),
436 	aAlwaysRB	(this, ScResId(RB_ALWAYS	)),
437 	aRequestRB	(this, ScResId(RB_REQUEST	)),
438 	aNeverRB	(this, ScResId(RB_NEVER	)),
439 
440     aOptionsGB( this,       ScResId( GB_OPTIONS   )),
441 	aAlignCB  ( this, 		ScResId( CB_ALIGN		)),
442 	aAlignLB  ( this, 		ScResId( LB_ALIGN		)),
443 	aEditModeCB( this, 		ScResId( CB_EDITMODE	)),
444 	aFormatCB( this, 		ScResId( CB_FORMAT	)),
445     aExpRefCB( this,        ScResId( CB_EXPREF    )),
446     aMarkHdrCB( this,       ScResId( CB_MARKHDR   )),
447 	aTextFmtCB( this,       ScResId( CB_TEXTFMT   )),
448     aReplWarnCB( this,      ScResId( CB_REPLWARN  )),
449     aUnitArr(               ScResId(ST_UNIT           )),
450     pDoc(NULL)
451 {
452 	FreeResource();
453     aSeparatorFL.SetStyle( aSeparatorFL.GetStyle() | WB_VERT );
454     SetExchangeSupport();
455 
456     aUnitLB.    SetSelectHdl( LINK( this, ScTpLayoutOptions, MetricHdl ) );
457 
458     aAlignCB.SetClickHdl(LINK(this, ScTpLayoutOptions, AlignHdl));
459 
460 
461 	for ( sal_uInt16 i = 0; i < aUnitArr.Count(); ++i )
462 	{
463 		String sMetric = aUnitArr.GetStringByPos( i );
464 		FieldUnit eFUnit = (FieldUnit)aUnitArr.GetValue( i );
465 
466 		switch ( eFUnit )
467 		{
468 			case FUNIT_MM:
469 			case FUNIT_CM:
470 			case FUNIT_POINT:
471 			case FUNIT_PICA:
472 			case FUNIT_INCH:
473 			{
474 				// nur diese Metriken benutzen
475 				sal_uInt16 nPos = aUnitLB.InsertEntry( sMetric );
476 				aUnitLB.SetEntryData( nPos, (void*)(long)eFUnit );
477 			}
478             break;
479             default:
480             {
481                 // added to avoid warnings
482             }
483 		}
484 	}
485 
486 }
487 /*-----------------11.01.97 10.53-------------------
488 
489 --------------------------------------------------*/
490 
491 ScTpLayoutOptions::~ScTpLayoutOptions()
492 {
493 }
494 /*-----------------11.01.97 10.53-------------------
495 
496 --------------------------------------------------*/
497 
498 SfxTabPage*	ScTpLayoutOptions::Create( Window*			pParent,
499 									const SfxItemSet&	rCoreSet )
500 {
501     ScTpLayoutOptions* pNew = new ScTpLayoutOptions(pParent, rCoreSet);
502     ScDocShell* pDocSh = PTR_CAST(ScDocShell,SfxObjectShell::Current());
503 
504 	if(pDocSh!=NULL)
505 		pNew->SetDocument(pDocSh->GetDocument());
506     return pNew;
507 }
508 /*-----------------11.01.97 10.53-------------------
509 
510 --------------------------------------------------*/
511 
512 sal_Bool	ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet )
513 {
514 	sal_Bool bRet = sal_True;
515     const sal_uInt16 nMPos = aUnitLB.GetSelectEntryPos();
516 	if ( nMPos != aUnitLB.GetSavedValue() )
517 	{
518 		sal_uInt16 nFieldUnit = (sal_uInt16)(long)aUnitLB.GetEntryData( nMPos );
519 		rCoreSet.Put( SfxUInt16Item( SID_ATTR_METRIC,
520 									 (sal_uInt16)nFieldUnit ) );
521 		bRet = sal_True;
522 	}
523 
524 	if(aTabMF.GetText() != aTabMF.GetSavedValue())
525 	{
526 		rCoreSet.Put(SfxUInt16Item(SID_ATTR_DEFTABSTOP,
527                     sal::static_int_cast<sal_uInt16>( aTabMF.Denormalize(aTabMF.GetValue(FUNIT_TWIP)) )));
528 		bRet = sal_True;
529 	}
530 
531     ScLkUpdMode nSet=LM_ALWAYS;
532 
533 	if(aRequestRB.IsChecked())
534 	{
535 		nSet=LM_ON_DEMAND;
536 	}
537 	else if(aNeverRB.IsChecked())
538 	{
539 		nSet=LM_NEVER;
540 	}
541 
542     if(aRequestRB.IsChecked() != aRequestRB.GetSavedValue() ||
543             aNeverRB.IsChecked() != aNeverRB.GetSavedValue() )
544 	{
545         if(pDoc)
546             pDoc->SetLinkMode(nSet);
547         ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
548 		aAppOptions.SetLinkMode(nSet );
549 		SC_MOD()->SetAppOptions(aAppOptions);
550         bRet = sal_True;
551     }
552     if(aAlignCB.GetSavedValue() != aAlignCB.IsChecked())
553     {
554 		rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_SELECTION, aAlignCB.IsChecked()));
555         bRet = sal_True;
556     }
557 
558 	if(aAlignLB.GetSavedValue() != aAlignLB.GetSelectEntryPos())
559     {
560         rCoreSet.Put(SfxUInt16Item(SID_SC_INPUT_SELECTIONPOS, aAlignLB.GetSelectEntryPos()));
561         bRet = sal_True;
562     }
563 
564 	if(aEditModeCB.GetSavedValue() != aEditModeCB.IsChecked())
565     {
566         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_EDITMODE, aEditModeCB.IsChecked()));
567         bRet = sal_True;
568     }
569 
570 	if(aFormatCB.GetSavedValue() != aFormatCB.IsChecked())
571     {
572         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_FMT_EXPAND, aFormatCB.IsChecked()));
573         bRet = sal_True;
574     }
575 
576 
577     if(aExpRefCB.GetSavedValue() != aExpRefCB.IsChecked())
578     {
579         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_REF_EXPAND, aExpRefCB.IsChecked()));
580         bRet = sal_True;
581     }
582 
583 	if(aMarkHdrCB.GetSavedValue() != aMarkHdrCB.IsChecked())
584     {
585         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_MARK_HEADER, aMarkHdrCB.IsChecked()));
586         bRet = sal_True;
587     }
588 
589 	if(aTextFmtCB.GetSavedValue() != aTextFmtCB.IsChecked())
590     {
591         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_TEXTWYSIWYG, aTextFmtCB.IsChecked()));
592         bRet = sal_True;
593     }
594 
595     if( aReplWarnCB.GetSavedValue() != aReplWarnCB.IsChecked() )
596     {
597         rCoreSet.Put( SfxBoolItem( SID_SC_INPUT_REPLCELLSWARN, aReplWarnCB.IsChecked() ) );
598         bRet = sal_True;
599     }
600 
601     return bRet;
602 }
603 /*-----------------11.01.97 10.53-------------------
604 
605 --------------------------------------------------*/
606 
607 void	ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet )
608 {
609 	aUnitLB.SetNoSelection();
610 	if ( rCoreSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
611 	{
612 		const SfxUInt16Item& rItem = (SfxUInt16Item&)rCoreSet.Get( SID_ATTR_METRIC );
613 		FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
614 
615 		for ( sal_uInt16 i = 0; i < aUnitLB.GetEntryCount(); ++i )
616 		{
617 			if ( (FieldUnit)(long)aUnitLB.GetEntryData( i ) == eFieldUnit )
618 			{
619 				aUnitLB.SelectEntryPos( i );
620 				break;
621 			}
622 		}
623 		::SetFieldUnit(aTabMF, eFieldUnit);
624 	}
625 	aUnitLB.SaveValue();
626 
627     const SfxPoolItem* pItem;
628     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_ATTR_DEFTABSTOP, sal_False, &pItem))
629 		aTabMF.SetValue(aTabMF.Normalize(((SfxUInt16Item*)pItem)->GetValue()), FUNIT_TWIP);
630 	aTabMF.SaveValue();
631 
632     aUnitLB         .SaveValue();
633 	aTabMF			.SaveValue();
634 
635     ScLkUpdMode nSet=LM_UNKNOWN;
636 
637 	if(pDoc!=NULL)
638 	{
639 		nSet=pDoc->GetLinkMode();
640 	}
641 
642 	if(nSet==LM_UNKNOWN)
643 	{
644 		ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
645 		nSet=aAppOptions.GetLinkMode();
646 	}
647 
648 	switch(nSet)
649 	{
650 		case LM_ALWAYS:		aAlwaysRB.	Check();	break;
651 		case LM_NEVER:		aNeverRB.	Check();	break;
652 		case LM_ON_DEMAND:	aRequestRB.	Check();	break;
653         default:
654         {
655             // added to avoid warnings
656         }
657 	}
658     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTION, sal_False, &pItem))
659 		aAlignCB.Check(((const SfxBoolItem*)pItem)->GetValue());
660 
661 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTIONPOS, sal_False, &pItem))
662 		aAlignLB.SelectEntryPos(((const SfxUInt16Item*)pItem)->GetValue());
663 
664 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_EDITMODE, sal_False, &pItem))
665 		aEditModeCB.Check(((const SfxBoolItem*)pItem)->GetValue());
666 
667 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_FMT_EXPAND, sal_False, &pItem))
668 		aFormatCB.Check(((const SfxBoolItem*)pItem)->GetValue());
669 
670 
671     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_REF_EXPAND, sal_False, &pItem))
672 		aExpRefCB.Check(((const SfxBoolItem*)pItem)->GetValue());
673 
674 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_MARK_HEADER, sal_False, &pItem))
675 		aMarkHdrCB.Check(((const SfxBoolItem*)pItem)->GetValue());
676 
677 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_TEXTWYSIWYG, sal_False, &pItem))
678 		aTextFmtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
679 
680     if( SFX_ITEM_SET == rCoreSet.GetItemState( SID_SC_INPUT_REPLCELLSWARN, sal_False, &pItem ) )
681         aReplWarnCB.Check( ( (const SfxBoolItem*)pItem)->GetValue() );
682 
683     aAlignCB    .SaveValue();
684 	aAlignLB  	.SaveValue();
685 	aEditModeCB	.SaveValue();
686 	aFormatCB	.SaveValue();
687 
688     aExpRefCB   .SaveValue();
689 	aMarkHdrCB	.SaveValue();
690 	aTextFmtCB	.SaveValue();
691     aReplWarnCB .SaveValue();
692 	AlignHdl(&aAlignCB);
693 
694     aAlwaysRB.SaveValue();
695     aNeverRB.SaveValue();
696     aRequestRB.SaveValue();
697 }
698 
699 /*-----------------11.01.97 12.46-------------------
700 
701 --------------------------------------------------*/
702 
703 void	ScTpLayoutOptions::ActivatePage( const SfxItemSet& /* rCoreSet */ )
704 {
705 }
706 /*-----------------11.01.97 12.46-------------------
707 
708 --------------------------------------------------*/
709 
710 int	ScTpLayoutOptions::DeactivatePage( SfxItemSet* pSetP )
711 {
712     if(pSetP)
713         FillItemSet(*pSetP);
714 	return SfxTabPage::LEAVE_PAGE;
715 }
716 
717 
718 /*-----------------13.01.97 14.44-------------------
719 	Metric des Deftabstops umschalten
720 --------------------------------------------------*/
721 
722 IMPL_LINK(ScTpLayoutOptions, MetricHdl, ListBox*, EMPTYARG)
723 {
724 	const sal_uInt16 nMPos = aUnitLB.GetSelectEntryPos();
725 	if(nMPos != USHRT_MAX)
726 	{
727 		FieldUnit eFieldUnit = (FieldUnit)(long)aUnitLB.GetEntryData( nMPos );
728         sal_Int64 nVal =
729 			aTabMF.Denormalize( aTabMF.GetValue( FUNIT_TWIP ) );
730 		::SetFieldUnit( aTabMF, eFieldUnit );
731 		aTabMF.SetValue( aTabMF.Normalize( nVal ), FUNIT_TWIP );
732 	}
733 
734 	return 0;
735 }
736 /*-----------------11.01.97 15.30-------------------
737 
738 --------------------------------------------------*/
739 IMPL_LINK( ScTpLayoutOptions, AlignHdl, CheckBox*, pBox )
740 {
741 	aAlignLB.Enable(pBox->IsChecked());
742 	return 0;
743 }
744 
745 
746