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