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 : #undef SC_DLLIMPLEMENTATION
22 :
23 :
24 :
25 : //------------------------------------------------------------------
26 :
27 : #include "scitems.hxx"
28 : #include "tpview.hxx"
29 : #include "global.hxx"
30 : #include "viewopti.hxx"
31 : #include "tabvwsh.hxx"
32 : #include "uiitems.hxx"
33 : #include "scresid.hxx"
34 : #include "docsh.hxx"
35 : #include "sc.hrc" // -> Slot-IDs
36 : #include "optdlg.hrc"
37 : #include "globstr.hrc"
38 : #include <appoptio.hxx>
39 : #include <scmod.hxx>
40 : #include <svx/dlgutil.hxx>
41 : #include <svx/drawitem.hxx>
42 : #include <svx/xtable.hxx>
43 :
44 :
45 : // STATIC DATA -----------------------------------------------------------
46 :
47 :
48 :
49 0 : ScTpContentOptions::ScTpContentOptions( Window* pParent,
50 : const SfxItemSet& rArgSet ) :
51 : SfxTabPage(pParent, ScResId( RID_SCPAGE_CONTENT ), rArgSet),
52 :
53 : aLinesGB( this, ScResId(GB_LINES )),
54 : aGridFT( this, ScResId(FT_GRID )),
55 : aGridLB( this, ScResId(LB_GRID )),
56 : aColorFT( this, ScResId(FT_COLOR )),
57 : aColorLB( this, ScResId(LB_COLOR )),
58 : aBreakCB( this, ScResId(CB_PAGEBREAKS )),
59 : aGuideLineCB( this, ScResId(CB_GUIDELINE )),
60 :
61 : aSeparator1FL (this, ScResId(FL_SEPARATOR1 )),
62 : aDisplayGB( this, ScResId(GB_DISPLAY)),
63 : aFormulaCB( this, ScResId(CB_FORMULA)),
64 : aNilCB( this, ScResId(CB_NIL )),
65 : aAnnotCB( this, ScResId(CB_ANNOT )),
66 : aValueCB( this, ScResId(CB_VALUE )),
67 : aAnchorCB( this, ScResId(CB_ANCHOR )),
68 : aClipMarkCB( this, ScResId(CB_CLIP )),
69 : aRangeFindCB( this, ScResId( CB_RFIND )),
70 :
71 : aObjectGB( this, ScResId(GB_OBJECT )),
72 : aObjGrfFT( this, ScResId(FT_OBJGRF )),
73 : aObjGrfLB( this, ScResId(LB_OBJGRF )),
74 : aDiagramFT( this, ScResId(FT_DIAGRAM)),
75 : aDiagramLB( this, ScResId(LB_DIAGRAM)),
76 : aDrawFT( this, ScResId(FT_DRAW )),
77 : aDrawLB( this, ScResId(LB_DRAW )),
78 :
79 : aZoomGB( this, ScResId(GB_ZOOM) ),
80 : aSyncZoomCB( this, ScResId(CB_SYNCZOOM) ),
81 :
82 : aSeparator2FL (this, ScResId(FL_SEPARATOR2)),
83 : aWindowGB( this, ScResId(GB_WINDOW )),
84 : aRowColHeaderCB(this, ScResId(CB_ROWCOLHEADER )),
85 : aHScrollCB( this, ScResId(CB_HSCROLL )),
86 : aVScrollCB( this, ScResId(CB_VSCROLL )),
87 : aTblRegCB( this, ScResId(CB_TBLREG )),
88 : aOutlineCB( this, ScResId(CB_OUTLINE )),
89 0 : pLocalOptions(0)
90 : {
91 0 : FreeResource();
92 0 : aSeparator1FL.SetStyle( aSeparator1FL.GetStyle() | WB_VERT );
93 0 : aSeparator2FL.SetStyle( aSeparator2FL.GetStyle() | WB_VERT );
94 0 : SetExchangeSupport();
95 0 : Link aSelObjHdl(LINK( this, ScTpContentOptions, SelLbObjHdl ) );
96 0 : aObjGrfLB. SetSelectHdl(aSelObjHdl);
97 0 : aDiagramLB. SetSelectHdl(aSelObjHdl);
98 0 : aDrawLB. SetSelectHdl(aSelObjHdl);
99 0 : aGridLB. SetSelectHdl( LINK( this, ScTpContentOptions, GridHdl ) );
100 :
101 0 : Link aCBHdl(LINK( this, ScTpContentOptions, CBHdl ) );
102 0 : aFormulaCB .SetClickHdl(aCBHdl);
103 0 : aNilCB .SetClickHdl(aCBHdl);
104 0 : aAnnotCB .SetClickHdl(aCBHdl);
105 0 : aValueCB .SetClickHdl(aCBHdl);
106 0 : aAnchorCB .SetClickHdl(aCBHdl);
107 0 : aClipMarkCB .SetClickHdl(aCBHdl);
108 :
109 0 : aVScrollCB .SetClickHdl(aCBHdl);
110 0 : aHScrollCB .SetClickHdl(aCBHdl);
111 0 : aTblRegCB .SetClickHdl(aCBHdl);
112 0 : aOutlineCB .SetClickHdl(aCBHdl);
113 0 : aBreakCB .SetClickHdl(aCBHdl);
114 0 : aGuideLineCB.SetClickHdl(aCBHdl);
115 0 : aRowColHeaderCB.SetClickHdl(aCBHdl);
116 :
117 0 : }
118 :
119 0 : ScTpContentOptions::~ScTpContentOptions()
120 : {
121 0 : delete pLocalOptions;
122 0 : }
123 :
124 0 : SfxTabPage* ScTpContentOptions::Create( Window* pParent,
125 : const SfxItemSet& rCoreSet )
126 : {
127 0 : return new ScTpContentOptions(pParent, rCoreSet);
128 : }
129 :
130 0 : sal_Bool ScTpContentOptions::FillItemSet( SfxItemSet& rCoreSet )
131 : {
132 0 : sal_Bool bRet = false;
133 0 : if( aFormulaCB .GetSavedValue() != aFormulaCB .IsChecked() ||
134 0 : aNilCB .GetSavedValue() != aNilCB .IsChecked() ||
135 0 : aAnnotCB .GetSavedValue() != aAnnotCB .IsChecked() ||
136 0 : aValueCB .GetSavedValue() != aValueCB .IsChecked() ||
137 0 : aAnchorCB .GetSavedValue() != aAnchorCB .IsChecked() ||
138 0 : aClipMarkCB .GetSavedValue() != aClipMarkCB .IsChecked() ||
139 0 : aObjGrfLB .GetSavedValue() != aObjGrfLB .GetSelectEntryPos() ||
140 0 : aDiagramLB .GetSavedValue() != aDiagramLB .GetSelectEntryPos() ||
141 0 : aDrawLB .GetSavedValue() != aDrawLB .GetSelectEntryPos() ||
142 0 : aGridLB .GetSavedValue() != aGridLB .GetSelectEntryPos() ||
143 0 : aRowColHeaderCB .GetSavedValue() != aRowColHeaderCB.IsChecked() ||
144 0 : aHScrollCB .GetSavedValue() != aHScrollCB .IsChecked() ||
145 0 : aVScrollCB .GetSavedValue() != aVScrollCB .IsChecked() ||
146 0 : aTblRegCB .GetSavedValue() != aTblRegCB .IsChecked() ||
147 0 : aOutlineCB .GetSavedValue() != aOutlineCB .IsChecked() ||
148 0 : aColorLB .GetSavedValue() != aColorLB .GetSelectEntryPos() ||
149 0 : aBreakCB .GetSavedValue() != aBreakCB .IsChecked() ||
150 0 : aGuideLineCB .GetSavedValue() != aGuideLineCB .IsChecked())
151 : {
152 0 : pLocalOptions->SetGridColor( aColorLB.GetSelectEntryColor(),
153 0 : aColorLB.GetSelectEntry() );
154 0 : rCoreSet.Put(ScTpViewItem(SID_SCVIEWOPTIONS, *pLocalOptions));
155 0 : bRet = sal_True;
156 : }
157 0 : if(aRangeFindCB.GetSavedValue() != aRangeFindCB.IsChecked())
158 : {
159 0 : rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_RANGEFINDER, aRangeFindCB.IsChecked()));
160 0 : bRet = sal_True;
161 : }
162 0 : if(aSyncZoomCB.GetSavedValue() != aSyncZoomCB.IsChecked())
163 : {
164 0 : rCoreSet.Put(SfxBoolItem(SID_SC_OPT_SYNCZOOM, aSyncZoomCB.IsChecked()));
165 0 : bRet = sal_True;
166 : }
167 :
168 :
169 0 : return bRet;
170 : }
171 :
172 0 : void ScTpContentOptions::Reset( const SfxItemSet& rCoreSet )
173 : {
174 : const SfxPoolItem* pItem;
175 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SCVIEWOPTIONS, false , &pItem))
176 : pLocalOptions = new ScViewOptions(
177 0 : ((const ScTpViewItem*)pItem)->GetViewOptions() );
178 : else
179 0 : pLocalOptions = new ScViewOptions;
180 0 : aFormulaCB .Check(pLocalOptions->GetOption(VOPT_FORMULAS));
181 0 : aNilCB .Check(pLocalOptions->GetOption(VOPT_NULLVALS));
182 0 : aAnnotCB .Check(pLocalOptions->GetOption(VOPT_NOTES));
183 0 : aValueCB .Check(pLocalOptions->GetOption(VOPT_SYNTAX));
184 0 : aAnchorCB .Check(pLocalOptions->GetOption(VOPT_ANCHOR));
185 0 : aClipMarkCB .Check(pLocalOptions->GetOption(VOPT_CLIPMARKS));
186 :
187 0 : aObjGrfLB .SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_OLE) );
188 0 : aDiagramLB .SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_CHART) );
189 0 : aDrawLB .SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_DRAW) );
190 :
191 0 : aRowColHeaderCB.Check( pLocalOptions->GetOption(VOPT_HEADER) );
192 0 : aHScrollCB .Check( pLocalOptions->GetOption(VOPT_HSCROLL) );
193 0 : aVScrollCB .Check( pLocalOptions->GetOption(VOPT_VSCROLL) );
194 0 : aTblRegCB .Check( pLocalOptions->GetOption(VOPT_TABCONTROLS) );
195 0 : aOutlineCB .Check( pLocalOptions->GetOption(VOPT_OUTLINER) );
196 :
197 0 : InitGridOpt();
198 :
199 0 : aBreakCB.Check( pLocalOptions->GetOption(VOPT_PAGEBREAKS) );
200 0 : aGuideLineCB.Check( pLocalOptions->GetOption(VOPT_HELPLINES) );
201 :
202 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_RANGEFINDER, false, &pItem))
203 0 : aRangeFindCB.Check(((const SfxBoolItem*)pItem)->GetValue());
204 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_OPT_SYNCZOOM, false, &pItem))
205 0 : aSyncZoomCB.Check(((const SfxBoolItem*)pItem)->GetValue());
206 :
207 0 : aRangeFindCB.SaveValue();
208 0 : aSyncZoomCB.SaveValue();
209 :
210 0 : aFormulaCB .SaveValue();
211 0 : aNilCB .SaveValue();
212 0 : aAnnotCB .SaveValue();
213 0 : aValueCB .SaveValue();
214 0 : aAnchorCB .SaveValue();
215 0 : aClipMarkCB .SaveValue();
216 0 : aObjGrfLB .SaveValue();
217 0 : aDiagramLB .SaveValue();
218 0 : aDrawLB .SaveValue();
219 0 : aRowColHeaderCB .SaveValue();
220 0 : aHScrollCB .SaveValue();
221 0 : aVScrollCB .SaveValue();
222 0 : aTblRegCB .SaveValue();
223 0 : aOutlineCB .SaveValue();
224 0 : aGridLB .SaveValue();
225 0 : aColorLB .SaveValue();
226 0 : aBreakCB .SaveValue();
227 0 : aGuideLineCB .SaveValue();
228 0 : }
229 :
230 0 : void ScTpContentOptions::ActivatePage( const SfxItemSet& rSet)
231 : {
232 : const SfxPoolItem* pItem;
233 0 : if(SFX_ITEM_SET == rSet.GetItemState(SID_SCVIEWOPTIONS, false , &pItem))
234 0 : *pLocalOptions = ((const ScTpViewItem*)pItem)->GetViewOptions();
235 0 : }
236 :
237 0 : int ScTpContentOptions::DeactivatePage( SfxItemSet* pSetP )
238 : {
239 0 : if(pSetP)
240 0 : FillItemSet(*pSetP);
241 0 : return SfxTabPage::LEAVE_PAGE;
242 : }
243 :
244 0 : IMPL_LINK( ScTpContentOptions, SelLbObjHdl, ListBox*, pLb )
245 : {
246 0 : sal_uInt16 nSelPos = pLb->GetSelectEntryPos();
247 0 : ScVObjMode eMode = ScVObjMode(nSelPos);
248 0 : ScVObjType eType = VOBJ_TYPE_OLE;
249 :
250 0 : if ( pLb == &aDiagramLB )
251 0 : eType = VOBJ_TYPE_CHART;
252 0 : else if ( pLb == &aDrawLB )
253 0 : eType = VOBJ_TYPE_DRAW;
254 :
255 0 : pLocalOptions->SetObjMode( eType, eMode );
256 :
257 0 : return 0;
258 : }
259 :
260 0 : IMPL_LINK( ScTpContentOptions, CBHdl, CheckBox*, pBtn )
261 : {
262 0 : ScViewOption eOption = VOPT_FORMULAS;
263 0 : sal_Bool bChecked = pBtn->IsChecked();
264 :
265 0 : if ( &aFormulaCB == pBtn ) eOption = VOPT_FORMULAS;
266 0 : else if ( &aNilCB == pBtn ) eOption = VOPT_NULLVALS;
267 0 : else if ( &aAnnotCB == pBtn ) eOption = VOPT_NOTES;
268 0 : else if ( &aValueCB == pBtn ) eOption = VOPT_SYNTAX;
269 0 : else if ( &aAnchorCB == pBtn ) eOption = VOPT_ANCHOR;
270 0 : else if ( &aClipMarkCB == pBtn ) eOption = VOPT_CLIPMARKS;
271 0 : else if ( &aVScrollCB == pBtn ) eOption = VOPT_VSCROLL;
272 0 : else if ( &aHScrollCB == pBtn ) eOption = VOPT_HSCROLL;
273 0 : else if ( &aTblRegCB == pBtn ) eOption = VOPT_TABCONTROLS;
274 0 : else if ( &aOutlineCB == pBtn ) eOption = VOPT_OUTLINER;
275 0 : else if ( &aBreakCB == pBtn ) eOption = VOPT_PAGEBREAKS;
276 0 : else if ( &aGuideLineCB == pBtn ) eOption = VOPT_HELPLINES;
277 0 : else if ( &aRowColHeaderCB == pBtn ) eOption = VOPT_HEADER;
278 :
279 0 : pLocalOptions->SetOption( eOption, bChecked );
280 :
281 :
282 0 : return 0;
283 : }
284 :
285 0 : void ScTpContentOptions::InitGridOpt()
286 : {
287 0 : sal_Bool bGrid = pLocalOptions->GetOption( VOPT_GRID );
288 0 : sal_Bool bGridOnTop = pLocalOptions->GetOption( VOPT_GRID_ONTOP );
289 0 : sal_uInt16 nSelPos = 0;
290 :
291 0 : if ( bGrid || bGridOnTop )
292 : {
293 0 : aColorFT.Enable(), aColorLB.Enable();
294 0 : if ( !bGridOnTop )
295 0 : nSelPos = 0;
296 : else
297 0 : nSelPos = 1;
298 : }
299 : else
300 : {
301 0 : aColorFT.Disable(), aColorLB.Disable();
302 0 : nSelPos = 2;
303 : }
304 :
305 0 : aGridLB.SelectEntryPos (nSelPos);
306 :
307 0 : if ( aColorLB.GetEntryCount() == 0 )
308 : {
309 0 : SfxObjectShell* pDocSh = SfxObjectShell::Current();
310 : // there might be another DocShell here
311 0 : pDocSh = PTR_CAST(ScDocShell, pDocSh);
312 :
313 0 : XColorListRef pColorList;
314 0 : if ( pDocSh )
315 : {
316 0 : const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
317 0 : if ( pItem )
318 0 : pColorList = ((SvxColorListItem*)pItem)->GetColorList();
319 : }
320 : else
321 0 : pColorList = XColorList::GetStdColorList();
322 :
323 0 : if ( !pColorList.is() )
324 0 : return;
325 :
326 : //------------------------------------------------------
327 :
328 0 : aColorLB.SetUpdateMode( false );
329 :
330 : // items from ColorTable
331 :
332 0 : long nCount = pColorList->Count();
333 0 : for ( long n=0; n<nCount; n++ )
334 : {
335 0 : XColorEntry* pEntry = pColorList->GetColor(n);
336 0 : aColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
337 : }
338 :
339 : // default GridColor
340 :
341 0 : Color aStdCol( SC_STD_GRIDCOLOR ); // same default as in ScViewOptions
342 0 : if ( LISTBOX_ENTRY_NOTFOUND ==
343 0 : aColorLB.GetEntryPos( aStdCol ) )
344 0 : aColorLB.InsertEntry( aStdCol, ScGlobal::GetRscString( STR_GRIDCOLOR ) );
345 :
346 0 : aColorLB.SetUpdateMode( sal_True );
347 :
348 0 : Invalidate();
349 : }
350 :
351 : // also select grid color entry on subsequent calls
352 :
353 0 : String aName;
354 0 : Color aCol = pLocalOptions->GetGridColor( &aName );
355 0 : nSelPos = aColorLB.GetEntryPos( aCol );
356 :
357 0 : if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
358 0 : aColorLB.SelectEntryPos( nSelPos );
359 : else
360 0 : aColorLB.SelectEntryPos( aColorLB.InsertEntry( aCol, aName ) );
361 : }
362 :
363 0 : IMPL_LINK( ScTpContentOptions, GridHdl, ListBox*, pLb )
364 : {
365 0 : sal_uInt16 nSelPos = pLb->GetSelectEntryPos();
366 0 : sal_Bool bGrid = ( nSelPos <= 1 );
367 0 : sal_Bool bGridOnTop = ( nSelPos == 1 );
368 :
369 0 : aColorFT.Enable(bGrid);
370 0 : aColorLB.Enable(bGrid);
371 0 : pLocalOptions->SetOption( VOPT_GRID, bGrid );
372 0 : pLocalOptions->SetOption( VOPT_GRID_ONTOP, bGridOnTop );
373 0 : return 0;
374 : }
375 :
376 0 : ScTpLayoutOptions::ScTpLayoutOptions( Window* pParent,
377 : const SfxItemSet& rArgSet ) :
378 : SfxTabPage( pParent, "ScGeneralPage",
379 : "modules/scalc/ui/scgeneralpage.ui", rArgSet),
380 : aUnitArr( ScResId(SCSTR_UNIT )),
381 0 : pDoc(NULL)
382 : {
383 0 : get( m_pUnitLB, "unitlb");
384 0 : get( m_pTabMF, "tabmf");
385 :
386 0 : get( m_pAlwaysRB, "alwaysrb");
387 0 : get( m_pRequestRB, "requestrb");
388 0 : get( m_pNeverRB, "neverrb");
389 :
390 0 : get( m_pAlignCB, "aligncb");
391 0 : get( m_pAlignLB, "alignlb");
392 0 : get( m_pEditModeCB, "editmodecb");
393 0 : get( m_pFormatCB, "formatcb");
394 0 : get( m_pExpRefCB, "exprefcb");
395 0 : get( m_pMarkHdrCB, "markhdrcb");
396 0 : get( m_pTextFmtCB, "textfmtcb");
397 0 : get( m_pReplWarnCB, "replwarncb");
398 :
399 0 : SetExchangeSupport();
400 :
401 0 : m_pUnitLB->SetSelectHdl( LINK( this, ScTpLayoutOptions, MetricHdl ) );
402 :
403 0 : m_pAlignCB->SetClickHdl(LINK(this, ScTpLayoutOptions, AlignHdl));
404 :
405 :
406 0 : for ( sal_uInt16 i = 0; i < aUnitArr.Count(); ++i )
407 : {
408 0 : String sMetric = aUnitArr.GetStringByPos( i );
409 0 : FieldUnit eFUnit = (FieldUnit)aUnitArr.GetValue( i );
410 :
411 0 : switch ( eFUnit )
412 : {
413 : case FUNIT_MM:
414 : case FUNIT_CM:
415 : case FUNIT_POINT:
416 : case FUNIT_PICA:
417 : case FUNIT_INCH:
418 : {
419 : // nur diese Metriken benutzen
420 0 : sal_uInt16 nPos = m_pUnitLB->InsertEntry( sMetric );
421 0 : m_pUnitLB->SetEntryData( nPos, (void*)(sal_IntPtr)eFUnit );
422 : }
423 0 : break;
424 : default:
425 : {
426 : // added to avoid warnings
427 : }
428 : }
429 0 : }
430 :
431 0 : }
432 :
433 0 : ScTpLayoutOptions::~ScTpLayoutOptions()
434 : {
435 0 : }
436 :
437 0 : SfxTabPage* ScTpLayoutOptions::Create( Window* pParent,
438 : const SfxItemSet& rCoreSet )
439 : {
440 0 : ScTpLayoutOptions* pNew = new ScTpLayoutOptions(pParent, rCoreSet);
441 0 : ScDocShell* pDocSh = PTR_CAST(ScDocShell,SfxObjectShell::Current());
442 :
443 0 : if(pDocSh!=NULL)
444 0 : pNew->SetDocument(pDocSh->GetDocument());
445 0 : return pNew;
446 : }
447 :
448 0 : sal_Bool ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet )
449 : {
450 0 : sal_Bool bRet = sal_True;
451 0 : const sal_uInt16 nMPos = m_pUnitLB->GetSelectEntryPos();
452 0 : if ( nMPos != m_pUnitLB->GetSavedValue() )
453 : {
454 0 : sal_uInt16 nFieldUnit = (sal_uInt16)(sal_IntPtr)m_pUnitLB->GetEntryData( nMPos );
455 : rCoreSet.Put( SfxUInt16Item( SID_ATTR_METRIC,
456 0 : (sal_uInt16)nFieldUnit ) );
457 0 : bRet = sal_True;
458 : }
459 :
460 0 : if(m_pTabMF->GetText() != m_pTabMF->GetSavedValue())
461 : {
462 : rCoreSet.Put(SfxUInt16Item(SID_ATTR_DEFTABSTOP,
463 0 : sal::static_int_cast<sal_uInt16>( m_pTabMF->Denormalize(m_pTabMF->GetValue(FUNIT_TWIP)) )));
464 0 : bRet = sal_True;
465 : }
466 :
467 0 : ScLkUpdMode nSet=LM_ALWAYS;
468 :
469 0 : if(m_pRequestRB->IsChecked())
470 : {
471 0 : nSet=LM_ON_DEMAND;
472 : }
473 0 : else if(m_pNeverRB->IsChecked())
474 : {
475 0 : nSet=LM_NEVER;
476 : }
477 :
478 0 : if(m_pRequestRB->IsChecked() != m_pRequestRB->GetSavedValue() ||
479 0 : m_pNeverRB->IsChecked() != m_pNeverRB->GetSavedValue() )
480 : {
481 0 : if(pDoc)
482 0 : pDoc->SetLinkMode(nSet);
483 0 : ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
484 0 : aAppOptions.SetLinkMode(nSet );
485 0 : SC_MOD()->SetAppOptions(aAppOptions);
486 0 : bRet = sal_True;
487 : }
488 0 : if(m_pAlignCB->GetSavedValue() != m_pAlignCB->IsChecked())
489 : {
490 0 : rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_SELECTION, m_pAlignCB->IsChecked()));
491 0 : bRet = sal_True;
492 : }
493 :
494 0 : if(m_pAlignLB->GetSavedValue() != m_pAlignLB->GetSelectEntryPos())
495 : {
496 0 : rCoreSet.Put(SfxUInt16Item(SID_SC_INPUT_SELECTIONPOS, m_pAlignLB->GetSelectEntryPos()));
497 0 : bRet = sal_True;
498 : }
499 :
500 0 : if(m_pEditModeCB->GetSavedValue() != m_pEditModeCB->IsChecked())
501 : {
502 0 : rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_EDITMODE, m_pEditModeCB->IsChecked()));
503 0 : bRet = sal_True;
504 : }
505 :
506 0 : if(m_pFormatCB->GetSavedValue() != m_pFormatCB->IsChecked())
507 : {
508 0 : rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_FMT_EXPAND, m_pFormatCB->IsChecked()));
509 0 : bRet = sal_True;
510 : }
511 :
512 :
513 0 : if(m_pExpRefCB->GetSavedValue() != m_pExpRefCB->IsChecked())
514 : {
515 0 : rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_REF_EXPAND, m_pExpRefCB->IsChecked()));
516 0 : bRet = sal_True;
517 : }
518 :
519 0 : if(m_pMarkHdrCB->GetSavedValue() != m_pMarkHdrCB->IsChecked())
520 : {
521 0 : rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_MARK_HEADER, m_pMarkHdrCB->IsChecked()));
522 0 : bRet = sal_True;
523 : }
524 :
525 0 : if(m_pTextFmtCB->GetSavedValue() != m_pTextFmtCB->IsChecked())
526 : {
527 0 : rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_TEXTWYSIWYG, m_pTextFmtCB->IsChecked()));
528 0 : bRet = sal_True;
529 : }
530 :
531 0 : if( m_pReplWarnCB->GetSavedValue() != m_pReplWarnCB->IsChecked() )
532 : {
533 0 : rCoreSet.Put( SfxBoolItem( SID_SC_INPUT_REPLCELLSWARN, m_pReplWarnCB->IsChecked() ) );
534 0 : bRet = sal_True;
535 : }
536 :
537 0 : return bRet;
538 : }
539 :
540 0 : void ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet )
541 : {
542 0 : m_pUnitLB->SetNoSelection();
543 0 : if ( rCoreSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
544 : {
545 0 : const SfxUInt16Item& rItem = (SfxUInt16Item&)rCoreSet.Get( SID_ATTR_METRIC );
546 0 : FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
547 :
548 0 : for ( sal_uInt16 i = 0; i < m_pUnitLB->GetEntryCount(); ++i )
549 : {
550 0 : if ( (FieldUnit)(sal_IntPtr)m_pUnitLB->GetEntryData( i ) == eFieldUnit )
551 : {
552 0 : m_pUnitLB->SelectEntryPos( i );
553 0 : break;
554 : }
555 : }
556 0 : ::SetFieldUnit(*m_pTabMF, eFieldUnit);
557 : }
558 0 : m_pUnitLB->SaveValue();
559 :
560 : const SfxPoolItem* pItem;
561 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_ATTR_DEFTABSTOP, false, &pItem))
562 0 : m_pTabMF->SetValue(m_pTabMF->Normalize(((SfxUInt16Item*)pItem)->GetValue()), FUNIT_TWIP);
563 0 : m_pTabMF->SaveValue();
564 :
565 0 : m_pUnitLB ->SaveValue();
566 0 : m_pTabMF ->SaveValue();
567 :
568 0 : ScLkUpdMode nSet=LM_UNKNOWN;
569 :
570 0 : if(pDoc!=NULL)
571 : {
572 0 : nSet=pDoc->GetLinkMode();
573 : }
574 :
575 0 : if(nSet==LM_UNKNOWN)
576 : {
577 0 : ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
578 0 : nSet=aAppOptions.GetLinkMode();
579 : }
580 :
581 0 : switch(nSet)
582 : {
583 0 : case LM_ALWAYS: m_pAlwaysRB-> Check(); break;
584 0 : case LM_NEVER: m_pNeverRB-> Check(); break;
585 0 : case LM_ON_DEMAND: m_pRequestRB-> Check(); break;
586 : default:
587 : {
588 : // added to avoid warnings
589 : }
590 : }
591 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTION, false, &pItem))
592 0 : m_pAlignCB->Check(((const SfxBoolItem*)pItem)->GetValue());
593 :
594 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTIONPOS, false, &pItem))
595 0 : m_pAlignLB->SelectEntryPos(((const SfxUInt16Item*)pItem)->GetValue());
596 :
597 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_EDITMODE, false, &pItem))
598 0 : m_pEditModeCB->Check(((const SfxBoolItem*)pItem)->GetValue());
599 :
600 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_FMT_EXPAND, false, &pItem))
601 0 : m_pFormatCB->Check(((const SfxBoolItem*)pItem)->GetValue());
602 :
603 :
604 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_REF_EXPAND, false, &pItem))
605 0 : m_pExpRefCB->Check(((const SfxBoolItem*)pItem)->GetValue());
606 :
607 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_MARK_HEADER, false, &pItem))
608 0 : m_pMarkHdrCB->Check(((const SfxBoolItem*)pItem)->GetValue());
609 :
610 0 : if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_TEXTWYSIWYG, false, &pItem))
611 0 : m_pTextFmtCB->Check(((const SfxBoolItem*)pItem)->GetValue());
612 :
613 0 : if( SFX_ITEM_SET == rCoreSet.GetItemState( SID_SC_INPUT_REPLCELLSWARN, false, &pItem ) )
614 0 : m_pReplWarnCB->Check( ( (const SfxBoolItem*)pItem)->GetValue() );
615 :
616 0 : m_pAlignCB ->SaveValue();
617 0 : m_pAlignLB ->SaveValue();
618 0 : m_pEditModeCB ->SaveValue();
619 0 : m_pFormatCB ->SaveValue();
620 :
621 0 : m_pExpRefCB ->SaveValue();
622 0 : m_pMarkHdrCB ->SaveValue();
623 0 : m_pTextFmtCB ->SaveValue();
624 0 : m_pReplWarnCB ->SaveValue();
625 0 : AlignHdl(m_pAlignCB);
626 :
627 0 : m_pAlwaysRB->SaveValue();
628 0 : m_pNeverRB->SaveValue();
629 0 : m_pRequestRB->SaveValue();
630 0 : }
631 :
632 0 : void ScTpLayoutOptions::ActivatePage( const SfxItemSet& /* rCoreSet */ )
633 : {
634 0 : }
635 :
636 0 : int ScTpLayoutOptions::DeactivatePage( SfxItemSet* pSetP )
637 : {
638 0 : if(pSetP)
639 0 : FillItemSet(*pSetP);
640 0 : return SfxTabPage::LEAVE_PAGE;
641 : }
642 :
643 0 : IMPL_LINK_NOARG(ScTpLayoutOptions, MetricHdl)
644 : {
645 0 : const sal_uInt16 nMPos = m_pUnitLB->GetSelectEntryPos();
646 0 : if(nMPos != USHRT_MAX)
647 : {
648 0 : FieldUnit eFieldUnit = (FieldUnit)(sal_IntPtr)m_pUnitLB->GetEntryData( nMPos );
649 : sal_Int64 nVal =
650 0 : m_pTabMF->Denormalize( m_pTabMF->GetValue( FUNIT_TWIP ) );
651 0 : ::SetFieldUnit( *m_pTabMF, eFieldUnit );
652 0 : m_pTabMF->SetValue( m_pTabMF->Normalize( nVal ), FUNIT_TWIP );
653 : }
654 :
655 0 : return 0;
656 : }
657 :
658 0 : IMPL_LINK( ScTpLayoutOptions, AlignHdl, CheckBox*, pBox )
659 : {
660 0 : m_pAlignLB->Enable(pBox->IsChecked());
661 0 : return 0;
662 0 : }
663 :
664 :
665 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|