xref: /trunk/main/sw/source/ui/config/optpage.cxx (revision 33b37506)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 #ifdef SW_DLLIMPLEMENTATION
28 #undef SW_DLLIMPLEMENTATION
29 #endif
30 
31 #ifndef _SVSTDARR_HXX
32 #define _SVSTDARR_STRINGSDTOR
33 #include <svl/svstdarr.hxx>
34 #endif
35 
36 #include <optpage.hxx>
37 #include <doc.hxx>
38 #include <hintids.hxx>
39 #include <cmdid.h>
40 #include <fmtcol.hxx>
41 #include <charatr.hxx>
42 #include <swtypes.hxx>
43 #include <view.hxx>
44 #include <docsh.hxx>
45 #include <IDocumentDeviceAccess.hxx>
46 #include <swmodule.hxx>
47 #include <wrtsh.hxx>
48 #include <uitool.hxx>
49 #include <cfgitems.hxx>
50 #include <poolfmt.hxx>
51 #include <uiitems.hxx>
52 #include <initui.hxx>
53 #include <printdata.hxx>
54 #include <modcfg.hxx>
55 #include <srcview.hxx>
56 #include <crstate.hxx>
57 #include <viewopt.hxx>
58 #include <globals.hrc>
59 #include <config.hrc>
60 #include <redlopt.hrc>
61 #include <optdlg.hrc>
62 #include <swwrtshitem.hxx>
63 #include <unomid.h>
64 
65 #include <editeng/fhgtitem.hxx>
66 #include <editeng/fontitem.hxx>
67 #include <editeng/langitem.hxx>
68 #include <sfx2/request.hxx>
69 #include <sfx2/printer.hxx>
70 #include <sfx2/bindings.hxx>
71 #include <svl/slstitm.hxx>
72 #include <svl/ctloptions.hxx>
73 #include <svl/eitem.hxx>
74 #include <svl/cjkoptions.hxx>
75 #include <svtools/ctrltool.hxx>
76 #include <svx/htmlmode.hxx>
77 #include <svx/xtable.hxx>
78 #include <svx/dlgutil.hxx>
79 #include <svx/strarray.hxx>
80 #include <vcl/svapp.hxx>
81 
82 
83 
84 using namespace ::com::sun::star;
85 
86 
87 /*******************************************************
88  ******************************************************/
89 
90 /*-----------------31.08.96 10.16-------------------
91 	TabPage Anzeige/Inhalt
92 --------------------------------------------------*/
93 
SwContentOptPage(Window * pParent,const SfxItemSet & rCoreSet)94 SwContentOptPage::SwContentOptPage( Window* pParent,
95 									  const SfxItemSet& rCoreSet ) :
96 	SfxTabPage( pParent, SW_RES( TP_CONTENT_OPT ), rCoreSet ),
97     aLineFL       ( this,   SW_RES( FL_LINE     ) ),
98 	aCrossCB   	  ( this,	SW_RES( CB_CROSS     ) ),
99 	aBigHandleCB  ( this, 	SW_RES( CB_BIGHANDLE) ),
100 
101     aWindowFL     ( this,   SW_RES( FL_WINDOW   ) ),
102 	aHScrollBox   ( this,	SW_RES( CB_HSCROLL   ) ),
103 	aVScrollBox   ( this,	SW_RES( CB_VSCROLL   ) ),
104     aAnyRulerCB   ( this,   SW_RES( CB_ANY_RULER ) ),
105     aHRulerCBox   ( this,   SW_RES( CB_HRULER   ) ),
106     aHMetric      ( this,   SW_RES( LB_HMETRIC    ) ),
107 	aVRulerCBox   ( this,	SW_RES( CB_VRULER    ) ),
108     aVRulerRightCBox( this, SW_RES( CB_VRULER_RIGHT    ) ),
109     aVMetric      ( this,   SW_RES( LB_VMETRIC    ) ),
110     aSmoothCBox   ( this,   SW_RES( CB_SMOOTH_SCROLL    ) ),
111 
112     aDispFL      ( this,   SW_RES( FL_DISP     ) ),
113 	aGrfCB        ( this,	SW_RES( CB_GRF  		) ),
114 	aTblCB        ( this,	SW_RES( CB_TBL		) ),
115 	aDrwCB        ( this,	SW_RES( CB_DRWFAST   ) ),
116 	aFldNameCB    ( this,	SW_RES( CB_FIELD 	) ),
117 	aPostItCB     ( this,	SW_RES( CB_POSTIT 	) ),
118 
119     aSettingsFL   ( this,   SW_RES( FL_SETTINGS   ) ),
120     aMetricFT     ( this,   SW_RES( FT_METRIC   ) ),
121     aMetricLB     ( this,   SW_RES( LB_METRIC   ) )
122 {
123 	FreeResource();
124 	const SfxPoolItem* pItem;
125 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
126 		&& ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
127 	{
128         aMetricLB.Show();
129         aSettingsFL.Show();
130         aMetricFT.Show();
131     }
132     SvtCJKOptions aCJKOptions;
133     if(aCJKOptions.IsVerticalTextEnabled() )
134     {
135         Point aSmoothPos(aSmoothCBox.GetPosPixel());
136         aSmoothPos.Y() += aSmoothPos.Y() - aVRulerCBox.GetPosPixel().Y();
137         aSmoothCBox.SetPosPixel(aSmoothPos);
138     }
139     else
140         aVRulerRightCBox.Hide();
141     aVRulerCBox.SetClickHdl(LINK(this, SwContentOptPage, VertRulerHdl ));
142     aAnyRulerCB.SetClickHdl(LINK(this, SwContentOptPage, AnyRulerHdl));
143 
144     SvxStringArray aMetricArr( SW_RES( STR_ARR_METRIC ) );
145     for ( sal_uInt16 i = 0; i < aMetricArr.Count(); ++i )
146 	{
147 		String sMetric = aMetricArr.GetStringByPos( i );
148 		FieldUnit eFUnit = (FieldUnit)aMetricArr.GetValue( i );
149 
150 		switch ( eFUnit )
151 		{
152 			case FUNIT_MM:
153 			case FUNIT_CM:
154 			case FUNIT_POINT:
155 			case FUNIT_PICA:
156 			case FUNIT_INCH:
157 			{
158 				// nur diese Metriken benutzen
159 				sal_uInt16 nPos = aMetricLB.InsertEntry( sMetric );
160 				aMetricLB.SetEntryData( nPos, (void*)(long)eFUnit );
161                 aVMetric.InsertEntry( sMetric );
162                 aVMetric.SetEntryData( nPos, (void*)(long)eFUnit );
163                 aHMetric.InsertEntry( sMetric );
164                 aHMetric.SetEntryData( nPos, (void*)(long)eFUnit );
165 			}
166             default:;//prevent warning
167 		}
168 	}
169 }
170 
171 /*-----------------31.08.96 13.58-------------------
172 
173 --------------------------------------------------*/
~SwContentOptPage()174 SwContentOptPage::~SwContentOptPage()
175 {
176 }
177 
178 /*-----------------31.08.96 13.58-------------------
179 
180 --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)181 SfxTabPage*	SwContentOptPage::Create( Window* pParent,
182 								const SfxItemSet& rAttrSet)
183 {
184 	return new SwContentOptPage(pParent, rAttrSet);
185 }
186 /* -----------------------------07.04.01 16:57--------------------------------
187 
188  ---------------------------------------------------------------------------*/
lcl_SelectMetricLB(ListBox & rMetric,sal_uInt16 nSID,const SfxItemSet & rSet)189 static void lcl_SelectMetricLB(ListBox& rMetric, sal_uInt16 nSID, const SfxItemSet& rSet)
190 {
191     const SfxPoolItem* pItem;
192     if( rSet.GetItemState( nSID, sal_False, &pItem ) >= SFX_ITEM_AVAILABLE )
193 	{
194         FieldUnit eFieldUnit = (FieldUnit)((SfxUInt16Item*)pItem)->GetValue();
195         for ( sal_uInt16 i = 0; i < rMetric.GetEntryCount(); ++i )
196 		{
197             if ( (int)(sal_IntPtr)rMetric.GetEntryData( i ) == (int)eFieldUnit )
198 			{
199                 rMetric.SelectEntryPos( i );
200 				break;
201 			}
202 		}
203     }
204     rMetric.SaveValue();
205 }
206 /*-----------------31.08.96 13.58-------------------
207 
208 --------------------------------------------------*/
Reset(const SfxItemSet & rSet)209 void SwContentOptPage::Reset(const SfxItemSet& rSet)
210 {
211     const SwElemItem* pElemAttr = 0;
212 
213 	rSet.GetItemState( FN_PARAM_ELEM , sal_False,
214 									(const SfxPoolItem**)&pElemAttr );
215 	if(pElemAttr)
216     {
217         aTblCB      .Check  (pElemAttr->bTable                );
218         aGrfCB      .Check  (pElemAttr->bGraphic              );
219         aDrwCB      .Check  (pElemAttr->bDrawing              );
220         aFldNameCB  .Check  (pElemAttr->bFieldName            );
221         aPostItCB   .Check  (pElemAttr->bNotes                );
222         aCrossCB   .Check( pElemAttr->bCrosshair        );
223         aBigHandleCB.Check(pElemAttr->bBigHandles       );
224         aHScrollBox.Check( pElemAttr->bHorzScrollbar     );
225         aVScrollBox.Check( pElemAttr->bVertScrollbar     );
226         aAnyRulerCB.Check( pElemAttr->bAnyRuler );
227         aHRulerCBox.Check( pElemAttr->bHorzRuler         );
228         aVRulerCBox.Check( pElemAttr->bVertRuler         );
229         aVRulerRightCBox.Check(pElemAttr->bVertRulerRight);
230         aSmoothCBox.Check( pElemAttr->bSmoothScroll      );
231 	}
232     aMetricLB.SetNoSelection();
233     lcl_SelectMetricLB(aMetricLB, SID_ATTR_METRIC, rSet);
234     lcl_SelectMetricLB(aHMetric, FN_HSCROLL_METRIC, rSet);
235     lcl_SelectMetricLB(aVMetric, FN_VSCROLL_METRIC, rSet);
236     AnyRulerHdl(&aAnyRulerCB);
237 }
238 
239 /*-----------------31.08.96 13.58-------------------
240 
241 --------------------------------------------------*/
FillItemSet(SfxItemSet & rSet)242 sal_Bool SwContentOptPage::FillItemSet(SfxItemSet& rSet)
243 {
244     const SwElemItem*   pOldAttr = (const SwElemItem*)
245 						GetOldItem(GetItemSet(), FN_PARAM_ELEM);
246 
247 	SwElemItem aElem;
248 	if(pOldAttr)
249 		aElem = *pOldAttr;
250     aElem.bTable                = aTblCB        .IsChecked();
251     aElem.bGraphic              = aGrfCB        .IsChecked();
252     aElem.bDrawing              = aDrwCB        .IsChecked();
253     aElem.bFieldName            = aFldNameCB    .IsChecked();
254     aElem.bNotes                = aPostItCB     .IsChecked();
255     aElem.bCrosshair     = aCrossCB   .IsChecked();
256     aElem.bBigHandles    = aBigHandleCB.IsChecked();
257     aElem.bHorzScrollbar = aHScrollBox.IsChecked();
258     aElem.bVertScrollbar = aVScrollBox.IsChecked();
259     aElem.bAnyRuler = aAnyRulerCB.IsChecked();
260     aElem.bHorzRuler     = aHRulerCBox.IsChecked();
261     aElem.bVertRuler     = aVRulerCBox.IsChecked();
262     aElem.bVertRulerRight= aVRulerRightCBox.IsChecked();
263     aElem.bSmoothScroll  = aSmoothCBox.IsChecked();
264 
265 
266     sal_Bool bRet = !pOldAttr || aElem != *pOldAttr;
267 	if(bRet)
268         bRet = 0 != rSet.Put(aElem);
269     sal_uInt16 nMPos = aMetricLB.GetSelectEntryPos();
270     sal_uInt16 nGlobalMetricPos = nMPos;
271 	if ( nMPos != aMetricLB.GetSavedValue() )
272 	{
273 		// Doppel-Cast fuer VA3.0
274 		sal_uInt16 nFieldUnit = (sal_uInt16)(long)aMetricLB.GetEntryData( nMPos );
275         rSet.Put( SfxUInt16Item( SID_ATTR_METRIC, (sal_uInt16)nFieldUnit ) );
276         bRet = sal_True;
277 	}
278 
279     nMPos = aHMetric.GetSelectEntryPos();
280     if ( nMPos != aHMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
281 	{
282 		// Doppel-Cast fuer VA3.0
283         sal_uInt16 nFieldUnit = (sal_uInt16)(long)aHMetric.GetEntryData( nMPos );
284         rSet.Put( SfxUInt16Item( FN_HSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
285         bRet = sal_True;
286 	}
287     nMPos = aVMetric.GetSelectEntryPos();
288     if ( nMPos != aVMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
289 	{
290 		// Doppel-Cast fuer VA3.0
291         sal_uInt16 nFieldUnit = (sal_uInt16)(long)aVMetric.GetEntryData( nMPos );
292         rSet.Put( SfxUInt16Item( FN_VSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
293         bRet = sal_True;
294 	}
295     return bRet;
296 }
297 /* -----------------------------05.03.2002 15:07------------------------------
298 
299  ---------------------------------------------------------------------------*/
IMPL_LINK(SwContentOptPage,VertRulerHdl,CheckBox *,pBox)300 IMPL_LINK(SwContentOptPage, VertRulerHdl, CheckBox*, pBox)
301 {
302     aVRulerRightCBox.Enable(pBox->IsEnabled() && pBox->IsChecked());
303     return 0;
304 }
305 /* -----------------20.09.2002 11:30-----------------
306  *
307  * --------------------------------------------------*/
IMPL_LINK(SwContentOptPage,AnyRulerHdl,CheckBox *,pBox)308 IMPL_LINK( SwContentOptPage, AnyRulerHdl, CheckBox*, pBox)
309 {
310     sal_Bool bChecked = pBox->IsChecked();
311     aHRulerCBox      .Enable(bChecked);
312     aHMetric         .Enable(bChecked);
313     aVRulerCBox      .Enable(bChecked);
314     aVMetric         .Enable(bChecked);
315     VertRulerHdl(&aVRulerCBox);
316     return 0;
317 }
318 /*----------------- OS 27.01.95  -----------------------
319  TabPage Drucker Zusatzeinstellungen
320 -------------------------------------------------------*/
SwAddPrinterTabPage(Window * pParent,const SfxItemSet & rCoreSet)321 SwAddPrinterTabPage::SwAddPrinterTabPage( Window* pParent,
322 									  const SfxItemSet& rCoreSet) :
323 	SfxTabPage( pParent, SW_RES( TP_OPTPRINT_PAGE ), rCoreSet),
324     aFL1          (this, SW_RES(FL_1)),
325 	aGrfCB           (this, SW_RES(CB_PGRF)),
326 //	aTabCB           (this, SW_RES(CB_PTAB)),
327 //	aDrawCB          (this, SW_RES(CB_PDRAW)),
328 	aCtrlFldCB       (this, SW_RES(CB_CTRLFLD)),
329 	aBackgroundCB    (this, SW_RES(CB_BACKGROUND)),
330 	aBlackFontCB 	 (this, SW_RES(CB_BLACK_FONT)),
331     aPrintHiddenTextCB(this, SW_RES(CB_HIDDEN_TEXT)),
332     aPrintTextPlaceholderCB(this, SW_RES(CB_TEXT_PLACEHOLDER)),
333     aSeparatorLFL    (this, SW_RES(FL_SEP_PRT_LEFT )),
334     aFL2          (this, SW_RES(FL_2)),
335     aLeftPageCB      (this, SW_RES(CB_LEFTP)),
336     aRightPageCB     (this, SW_RES(CB_RIGHTP)),
337 //    aReverseCB       (this, SW_RES(CB_REVERSE)),
338     aProspectCB      (this, SW_RES(CB_PROSPECT)),
339     aProspectCB_RTL      (this, SW_RES(CB_PROSPECT_RTL)),
340     aSeparatorRFL    (this, SW_RES(FL_SEP_PRT_RIGHT)),
341 	aFL3          (this, SW_RES(FL_3)),
342     aNoRB            (this, SW_RES(RB_NO)),
343 	aOnlyRB          (this, SW_RES(RB_ONLY)),
344 	aEndRB           (this, SW_RES(RB_END)),
345 	aEndPageRB       (this, SW_RES(RB_PAGEEND)),
346     aFL4          (this, SW_RES(FL_4)),
347     aPrintEmptyPagesCB(this, SW_RES(CB_PRINTEMPTYPAGES)),
348 //    aSingleJobsCB    (this, SW_RES(CB_SINGLEJOBS)),
349     aPaperFromSetupCB(this, SW_RES(CB_PAPERFROMSETUP)),
350     aFaxFT           (this, SW_RES(FT_FAX)),
351     aFaxLB           (this, SW_RES(LB_FAX)),
352     sNone(SW_RES(ST_NONE)),
353     bAttrModified( sal_False ),
354     bPreview  ( sal_False )
355 {
356 	Init();
357 	FreeResource();
358     Link aLk = LINK( this, SwAddPrinterTabPage, AutoClickHdl);
359 	aGrfCB.SetClickHdl( aLk );
360 	aRightPageCB.SetClickHdl( aLk );
361 	aLeftPageCB.SetClickHdl( aLk );
362 //	aTabCB.SetClickHdl( aLk );
363 //	aDrawCB.SetClickHdl( aLk );
364 	aCtrlFldCB.SetClickHdl( aLk );
365 	aBackgroundCB.SetClickHdl( aLk );
366 	aBlackFontCB.SetClickHdl( aLk );
367     aPrintHiddenTextCB.SetClickHdl( aLk );
368     aPrintTextPlaceholderCB.SetClickHdl( aLk );
369 //	aReverseCB.SetClickHdl( aLk );
370 	aProspectCB.SetClickHdl( aLk );
371 	aProspectCB_RTL.SetClickHdl( aLk );
372 	aPaperFromSetupCB.SetClickHdl( aLk );
373     aPrintEmptyPagesCB.SetClickHdl( aLk );
374 	aEndPageRB.SetClickHdl( aLk );
375 	aEndRB.SetClickHdl( aLk );
376 	aOnlyRB.SetClickHdl( aLk );
377 	aNoRB.SetClickHdl( aLk );
378 //	aSingleJobsCB.SetClickHdl( aLk );
379 	aFaxLB.SetSelectHdl( LINK( this, SwAddPrinterTabPage, SelectHdl ) );
380 
381 	const SfxPoolItem* pItem;
382 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
383 		&& ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
384 	{
385 //		aDrawCB      .Hide();
386 		aLeftPageCB  .Hide();
387 		aRightPageCB .Hide();
388         aPrintHiddenTextCB.Hide();
389         aPrintTextPlaceholderCB.Hide();
390 //		aReverseCB.SetPosPixel(aLeftPageCB.GetPosPixel());
391 		aProspectCB.SetPosPixel(aLeftPageCB.GetPosPixel());
392         Point aPt( aRightPageCB.GetPosPixel() );
393         aPt.setX(aPt.getX() + 15); // indent
394         aProspectCB_RTL.SetPosPixel(aPt);
395 //		aBlackFontCB.SetPosPixel(aBackgroundCB.GetPosPixel());
396 //        aPrintHiddenTextCB.SetPosPixel(aBlackFontCB.GetPosPixel());
397 //		aBackgroundCB.SetPosPixel(aCtrlFldCB.GetPosPixel());
398 //		aCtrlFldCB.SetPosPixel(aDrawCB.GetPosPixel());
399 
400         // hide aPrintEmptyPagesCB and move everything below up accordingly
401         long nDeltaY = aPaperFromSetupCB.GetPosPixel().getY() - aPrintEmptyPagesCB.GetPosPixel().getY();
402         aPrintEmptyPagesCB.Hide();
403         aPt = aPaperFromSetupCB.GetPosPixel();
404         aPt.setY( aPt.getY() - nDeltaY );
405         aPaperFromSetupCB.SetPosPixel( aPt );
406         aPt = aFaxFT.GetPosPixel();
407         aPt.setY( aPt.getY() - nDeltaY );
408         aFaxFT.SetPosPixel( aPt );
409         aPt = aFaxLB.GetPosPixel();
410         aPt.setY( aPt.getY() - nDeltaY );
411         aFaxLB.SetPosPixel( aPt );
412 	}
413 	aProspectCB_RTL.Disable();
414     SvtCTLOptions aCTLOptions;
415     aProspectCB_RTL.Show(aCTLOptions.IsCTLFontEnabled());
416 }
417 
418 //------------------------------------------------------------------------
419 
SetPreview(sal_Bool bPrev)420 void SwAddPrinterTabPage::SetPreview(sal_Bool bPrev)
421 {
422 	bPreview = bPrev;
423 
424 	if (bPreview)
425 	{
426 		aLeftPageCB.Disable();
427 		aRightPageCB.Disable();
428 		aProspectCB.Disable();
429 		aProspectCB_RTL.Disable();
430         aFL3.Disable();
431 		aNoRB.Disable();
432 		aOnlyRB.Disable();
433 		aEndRB.Disable();
434 		aEndPageRB.Disable();
435 	}
436 }
437 
438 //------------------------------------------------------------------------
439 
Create(Window * pParent,const SfxItemSet & rAttrSet)440 SfxTabPage*	SwAddPrinterTabPage::Create( Window* pParent,
441 									   const SfxItemSet& rAttrSet )
442 {
443 	return ( new SwAddPrinterTabPage( pParent, rAttrSet ) );
444 }
445 //------------------------------------------------------------------------
446 
447 
FillItemSet(SfxItemSet & rCoreSet)448 sal_Bool 	SwAddPrinterTabPage::FillItemSet( SfxItemSet& rCoreSet )
449 {
450 	if ( bAttrModified )
451 	{
452 		SwAddPrinterItem aAddPrinterAttr (FN_PARAM_ADDPRINTER);
453 		aAddPrinterAttr.bPrintGraphic 	= aGrfCB.IsChecked();
454 		aAddPrinterAttr.bPrintTable 	= sal_True; // always enabled since CWS printerpullgpages /*aTabCB.IsChecked();*/
455         aAddPrinterAttr.bPrintDraw      = aGrfCB.IsChecked(); // UI merged with aGrfCB in CWS printerpullgpages /*aDrawCB.IsChecked()*/;
456 		aAddPrinterAttr.bPrintControl 	= aCtrlFldCB.IsChecked();
457 		aAddPrinterAttr.bPrintPageBackground = aBackgroundCB.IsChecked();
458 		aAddPrinterAttr.bPrintBlackFont = aBlackFontCB.IsChecked();
459         aAddPrinterAttr.bPrintHiddenText = aPrintHiddenTextCB.IsChecked();
460         aAddPrinterAttr.bPrintTextPlaceholder = aPrintTextPlaceholderCB.IsChecked();
461 
462         aAddPrinterAttr.bPrintLeftPages     = aLeftPageCB.IsChecked();
463         aAddPrinterAttr.bPrintRightPages    = aRightPageCB.IsChecked();
464         aAddPrinterAttr.bPrintReverse       = sal_False; // handled by vcl itself since CWS printerpullpages /*aReverseCB.IsChecked()*/;
465         aAddPrinterAttr.bPrintProspect      = aProspectCB.IsChecked();
466         aAddPrinterAttr.bPrintProspectRTL   = aProspectCB_RTL.IsChecked();
467         aAddPrinterAttr.bPaperFromSetup     = aPaperFromSetupCB.IsChecked();
468         aAddPrinterAttr.bPrintEmptyPages    = aPrintEmptyPagesCB.IsChecked();
469         aAddPrinterAttr.bPrintSingleJobs    = sal_True; // handled by vcl in new print dialog since CWS printerpullpages /*aSingleJobsCB.IsChecked()*/;
470 
471 		if (aNoRB.IsChecked()) 	aAddPrinterAttr.nPrintPostIts =
472 														POSTITS_NONE;
473 		if (aOnlyRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
474 														POSTITS_ONLY;
475 		if (aEndRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
476 														POSTITS_ENDDOC;
477 		if (aEndPageRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
478 														POSTITS_ENDPAGE;
479 
480         String sFax = aFaxLB.GetSelectEntry();
481         aAddPrinterAttr.sFaxName = sNone == sFax ? aEmptyStr : sFax;
482 		rCoreSet.Put(aAddPrinterAttr);
483 	}
484 	return bAttrModified;
485 }
486 //------------------------------------------------------------------------
487 
488 
Reset(const SfxItemSet &)489 void 	SwAddPrinterTabPage::Reset( const SfxItemSet&  )
490 {
491 	const 	SfxItemSet&			rSet = GetItemSet();
492 	const 	SwAddPrinterItem*	pAddPrinterAttr = 0;
493 
494 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER , sal_False,
495 									(const SfxPoolItem**)&pAddPrinterAttr ))
496 	{
497 		aGrfCB.Check(			pAddPrinterAttr->bPrintGraphic || pAddPrinterAttr->bPrintDraw );
498 //		aTabCB.Check(			pAddPrinterAttr->bPrintTable);
499 //        aDrawCB.Check(          pAddPrinterAttr->bPrintDraw);
500 		aCtrlFldCB.Check(		pAddPrinterAttr->bPrintControl);
501 		aBackgroundCB.Check(    pAddPrinterAttr->bPrintPageBackground);
502 		aBlackFontCB.Check(		pAddPrinterAttr->bPrintBlackFont);
503         aPrintHiddenTextCB.Check( pAddPrinterAttr->bPrintHiddenText);
504         aPrintTextPlaceholderCB.Check(pAddPrinterAttr->bPrintTextPlaceholder);
505         aLeftPageCB.Check(      pAddPrinterAttr->bPrintLeftPages);
506         aRightPageCB.Check(     pAddPrinterAttr->bPrintRightPages);
507 //		aReverseCB.Check(		pAddPrinterAttr->bPrintReverse);
508 		aPaperFromSetupCB.Check(pAddPrinterAttr->bPaperFromSetup);
509         aPrintEmptyPagesCB.Check(pAddPrinterAttr->bPrintEmptyPages);
510 		aProspectCB.Check(      pAddPrinterAttr->bPrintProspect);
511         aProspectCB_RTL.Check(      pAddPrinterAttr->bPrintProspectRTL);
512 //		aSingleJobsCB.Check(    pAddPrinterAttr->bPrintSingleJobs);
513 
514 		aNoRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_NONE ) ;
515 		aOnlyRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ONLY ) ;
516 		aEndRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDDOC ) ;
517 		aEndPageRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDPAGE ) ;
518         aFaxLB.SelectEntry( pAddPrinterAttr->sFaxName );
519 	}
520 	if (aProspectCB.IsChecked())
521     {
522 		aProspectCB_RTL.Enable(sal_True);
523         aNoRB.Enable( sal_False );
524         aOnlyRB.Enable( sal_False );
525         aEndRB.Enable( sal_False );
526         aEndPageRB.Enable( sal_False );
527     }
528 	else
529 		aProspectCB_RTL.Enable( sal_False );
530 }
531 //-----------------------------------------------------------------------
532 
533 
Init()534 void 	SwAddPrinterTabPage::Init()
535 {
536 
537 }
538 //------------------------------------------------------------------------
539 
540 
IMPL_LINK_INLINE_START(SwAddPrinterTabPage,AutoClickHdl,CheckBox *,EMPTYARG)541 IMPL_LINK_INLINE_START( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
542 {
543 	bAttrModified = sal_True;
544     bool bIsProspect = aProspectCB.IsChecked();
545     if (!bIsProspect)
546 	    aProspectCB_RTL.Check( sal_False );
547 	aProspectCB_RTL.Enable( bIsProspect );
548     aNoRB.Enable( !bIsProspect );
549     aOnlyRB.Enable( !bIsProspect );
550     aEndRB.Enable( !bIsProspect );
551     aEndPageRB.Enable( !bIsProspect );
552 	return 0;
553 }
IMPL_LINK_INLINE_END(SwAddPrinterTabPage,AutoClickHdl,CheckBox *,EMPTYARG)554 IMPL_LINK_INLINE_END( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
555 
556 //------------------------------------------------------------------------
557 
558 
559 void  SwAddPrinterTabPage::SetFax( const SvStringsDtor& rFaxLst )
560 {
561     aFaxLB.InsertEntry(sNone);
562     for ( sal_uInt16 i = 0; i < rFaxLst.Count(); ++i )
563 		aFaxLB.InsertEntry( *rFaxLst.GetObject(i) );
564     aFaxLB.SelectEntryPos(0);
565 }
566 
567 //------------------------------------------------------------------------
568 
569 
IMPL_LINK_INLINE_START(SwAddPrinterTabPage,SelectHdl,ListBox *,EMPTYARG)570 IMPL_LINK_INLINE_START( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
571 {
572 	bAttrModified=sal_True;
573 	return 0;
574 }
IMPL_LINK_INLINE_END(SwAddPrinterTabPage,SelectHdl,ListBox *,EMPTYARG)575 IMPL_LINK_INLINE_END( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
576 
577 void SwAddPrinterTabPage::PageCreated (SfxAllItemSet aSet)
578 {
579 	//SFX_ITEMSET_ARG (&aSet,pListItem,SfxStringListItem,SID_FAX_LIST,sal_False);
580 	SFX_ITEMSET_ARG (&aSet,pListItem,SfxBoolItem,SID_FAX_LIST,sal_False);
581 	SFX_ITEMSET_ARG (&aSet,pPreviewItem,SfxBoolItem,SID_PREVIEWFLAG_TYPE,sal_False);
582 	if (pPreviewItem)
583 	{
584 		SetPreview(pPreviewItem->GetValue());
585 		Reset(aSet);
586 	}
587 	if (pListItem && pListItem->GetValue())
588 	{
589 		SvStringsDtor aFaxList;
590         const std::vector<rtl::OUString>& rPrinters = Printer::GetPrinterQueues();
591 		for (unsigned int i = 0; i < rPrinters.size(); ++i)
592 		{
593 			String* pString = new String( rPrinters[i] );
594 			String* &rpString = pString;
595 			aFaxList.Insert(rpString, 0);
596 		}
597 		SetFax( aFaxList );
598 /*		SvStringsDtor aFaxList;
599 		const List *pList = (pListItem)->GetList();
600 		sal_uInt32 nCount = pList->Count();
601         for(sal_uInt32 i = 0; i < nCount ; i++)
602 		{
603 			String* pString = (String*)(pList->GetObject(i));
604 			String* &rpString = pString;
605 			aFaxList.Insert(rpString, 0 );
606 		}
607 		SetFax(aFaxList);
608 */
609 	}
610 }
611 /*-----------------03.09.96 11.53-------------------
612 	Tabpage Standardfonts
613 --------------------------------------------------*/
614 
615 
SwStdFontTabPage(Window * pParent,const SfxItemSet & rSet)616 SwStdFontTabPage::SwStdFontTabPage( Window* pParent,
617 									   const SfxItemSet& rSet ) :
618 	SfxTabPage( pParent, SW_RES( TP_STD_FONT ), rSet),
619     aStdChrFL  (this, SW_RES(FL_STDCHR  )),
620     aTypeFT(        this, SW_RES( FT_TYPE          )),
621 
622     aStandardLbl(this, SW_RES(FT_STANDARD)),
623     aStandardBox(this, SW_RES(LB_STANDARD)),
624 
625     aHeightFT(        this, SW_RES( FT_SIZE          )),
626     aStandardHeightLB(this, SW_RES( LB_STANDARD_SIZE )),
627 
628     aTitleLbl   (this, SW_RES(FT_TITLE   )),
629     aTitleBox   (this, SW_RES(LB_TITLE   )),
630     aTitleHeightLB(   this, SW_RES( LB_TITLE_SIZE    )),
631 
632     aListLbl    (this, SW_RES(FT_LIST    )),
633     aListBox    (this, SW_RES(LB_LIST    )),
634     aListHeightLB(    this, SW_RES( LB_LIST_SIZE     )),
635 
636     aLabelLbl   (this, SW_RES(FT_LABEL   )),
637     aLabelBox   (this, SW_RES(LB_LABEL   )),
638     aLabelHeightLB(   this, SW_RES( LB_LABEL_SIZE    )),
639 
640     aIdxLbl     (this, SW_RES(FT_IDX     )),
641     aIdxBox     (this, SW_RES(LB_IDX     )),
642     aIndexHeightLB(   this, SW_RES( LB_INDEX_SIZE    )),
643 
644     aDocOnlyCB  (this, SW_RES(CB_DOCONLY )),
645 	aStandardPB (this, SW_RES(PB_STANDARD)),
646     pPrt(0),
647     pFontList(0),
648     pFontConfig(0),
649     pWrtShell(0),
650     eLanguage( GetAppLanguage() ),
651 
652     bListDefault(sal_False),
653     bSetListDefault(sal_True),
654     bLabelDefault(sal_False),
655     bSetLabelDefault(sal_True),
656     bIdxDefault(sal_False),
657     bSetIdxDefault(sal_True),
658     bDeletePrinter(sal_False),
659 
660     bListHeightDefault    (sal_False),
661     bSetListHeightDefault (sal_False),
662     bLabelHeightDefault   (sal_False),
663     bSetLabelHeightDefault(sal_False),
664     bIndexHeightDefault     (sal_False),
665     bSetIndexHeightDefault  (sal_False),
666 
667     nFontGroup(FONT_GROUP_DEFAULT),
668 
669     sScriptWestern(SW_RES(ST_SCRIPT_WESTERN)),
670     sScriptAsian(SW_RES(ST_SCRIPT_ASIAN)),
671     sScriptComplex(SW_RES(ST_SCRIPT_CTL))
672 {
673 	FreeResource();
674 	aStandardPB.SetClickHdl(LINK(this, SwStdFontTabPage, StandardHdl));
675 	aStandardBox.SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
676 	aListBox    .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
677 	aLabelBox	.SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
678 	aIdxBox		.SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
679     Link aFocusLink = LINK( this, SwStdFontTabPage, LoseFocusHdl);
680     aStandardBox.SetLoseFocusHdl( aFocusLink );
681     aTitleBox   .SetLoseFocusHdl( aFocusLink );
682     aListBox    .SetLoseFocusHdl( aFocusLink );
683     aLabelBox   .SetLoseFocusHdl( aFocusLink );
684     aIdxBox     .SetLoseFocusHdl( aFocusLink );
685 
686     Link aModifyHeightLink( LINK( this, SwStdFontTabPage, ModifyHeightHdl));
687     aStandardHeightLB.SetModifyHdl( aModifyHeightLink );
688     aTitleHeightLB.   SetModifyHdl( aModifyHeightLink );
689     aListHeightLB.    SetModifyHdl( aModifyHeightLink );
690     aLabelHeightLB.   SetModifyHdl( aModifyHeightLink );
691     aIndexHeightLB.   SetModifyHdl( aModifyHeightLink );
692 
693 	aDocOnlyCB.Check(SW_MOD()->GetModuleConfig()->IsDefaultFontInCurrDocOnly());
694 }
695 
696 /*-----------------03.09.96 11.53-------------------
697 
698 --------------------------------------------------*/
699 
~SwStdFontTabPage()700 SwStdFontTabPage::~SwStdFontTabPage()
701 {
702 	if(bDeletePrinter)
703 		delete pPrt;
704 }
705 
706 /*-----------------03.09.96 11.53-------------------
707 
708 --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)709 SfxTabPage*	SwStdFontTabPage::Create( Window* pParent,
710 								const SfxItemSet& rAttrSet )
711 {
712 	return new SwStdFontTabPage(pParent, rAttrSet);
713 }
714 
715 /*-----------------03.09.96 11.53-------------------
716 
717 --------------------------------------------------*/
lcl_SetColl(SwWrtShell * pWrtShell,sal_uInt16 nType,SfxPrinter * pPrt,const String & rStyle,sal_uInt16 nFontWhich)718 void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
719                     SfxPrinter* pPrt, const String& rStyle,
720                     sal_uInt16 nFontWhich)
721 {
722 	Font aFont( rStyle, Size( 0, 10 ) );
723 	if( pPrt )
724 	    aFont = pPrt->GetFontMetric( aFont );
725 	SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
726     pColl->SetFmtAttr(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
727                 aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
728 }
729 /*-- 11.10.2005 15:47:52---------------------------------------------------
730 
731   -----------------------------------------------------------------------*/
lcl_SetColl(SwWrtShell * pWrtShell,sal_uInt16 nType,sal_Int32 nHeight,sal_uInt16 nFontHeightWhich)732 void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
733                     sal_Int32 nHeight, sal_uInt16 nFontHeightWhich)
734 {
735     float fSize = (float)nHeight / 10;
736     nHeight = CalcToUnit( fSize, SFX_MAPUNIT_TWIP );
737     SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
738     pColl->SetFmtAttr(SvxFontHeightItem(nHeight, 100, nFontHeightWhich));
739 }
740 /*-----------------03.09.96 11.53-------------------
741 
742 --------------------------------------------------*/
FillItemSet(SfxItemSet &)743 sal_Bool SwStdFontTabPage::FillItemSet( SfxItemSet& )
744 {
745 	sal_Bool bNotDocOnly = !aDocOnlyCB.IsChecked();
746 	SW_MOD()->GetModuleConfig()->SetDefaultFontInCurrDocOnly(!bNotDocOnly);
747 
748 	String sStandard 	= aStandardBox.GetText();
749 	String sTitle 		=  aTitleBox   .GetText();
750 	String sList 		=  aListBox    .GetText();
751 	String sLabel 		=  aLabelBox   .GetText();
752 	String sIdx 		=  aIdxBox     .GetText();
753 	String sStandardBak	= aStandardBox.GetSavedValue();
754 	String sTitleBak 	= aTitleBox   .GetSavedValue();
755 	String sListBak 	= aListBox    .GetSavedValue();
756 	String sLabelBak 	= aLabelBox   .GetSavedValue();
757 	String sIdxBak  	= aIdxBox     .GetSavedValue();
758 
759     bool bStandardHeightChanged = aStandardHeightLB.GetSavedValue() != aStandardHeightLB.GetText();
760     bool bTitleHeightChanged = aTitleHeightLB.GetSavedValue() != aTitleHeightLB.GetText();
761     bool bListHeightChanged = aListHeightLB.GetSavedValue() != aListHeightLB.GetText() && (!bListHeightDefault || !bSetListHeightDefault );
762     bool bLabelHeightChanged = aLabelHeightLB.GetSavedValue() != aLabelHeightLB.GetText() && (!bLabelHeightDefault || !bSetLabelHeightDefault );
763     bool bIndexHeightChanged = aIndexHeightLB.GetSavedValue() != aIndexHeightLB.GetText() && (!bIndexHeightDefault || !bSetIndexHeightDefault );
764     if(bNotDocOnly)
765 	{
766         pFontConfig->SetFontStandard(sStandard, nFontGroup);
767         pFontConfig->SetFontOutline(sTitle, nFontGroup);
768         pFontConfig->SetFontList(sList, nFontGroup);
769         pFontConfig->SetFontCaption(sLabel, nFontGroup);
770         pFontConfig->SetFontIndex(sIdx, nFontGroup);
771         if(bStandardHeightChanged)
772         {
773             float fSize = (float)aStandardHeightLB.GetValue() / 10;
774             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_STANDARD, nFontGroup );
775         }
776         if(bTitleHeightChanged)
777         {
778             float fSize = (float)aTitleHeightLB.GetValue() / 10;
779             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_OUTLINE, nFontGroup );
780         }
781         if(bListHeightChanged)
782         {
783             float fSize = (float)aListHeightLB.GetValue() / 10;
784             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_LIST, nFontGroup );
785         }
786         if(bLabelHeightChanged)
787         {
788             float fSize = (float)aLabelHeightLB.GetValue() / 10;
789             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_CAPTION, nFontGroup );
790         }
791         if(bIndexHeightChanged)
792         {
793             float fSize = (float)aIndexHeightLB.GetValue() / 10;
794             pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_INDEX, nFontGroup );
795         }
796     }
797 	if(pWrtShell)
798 	{
799 		pWrtShell->StartAllAction();
800         SfxPrinter* pPrinter = pWrtShell->getIDocumentDeviceAccess()->getPrinter( false );
801 		sal_Bool bMod = sal_False;
802         sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
803             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONT :
804             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
805         sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
806             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONTSIZE :
807             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE);
808         if(sStandard != sShellStd)
809 		{
810 			Font aFont( sStandard, Size( 0, 10 ) );
811 			if( pPrinter )
812 			    aFont = pPrinter->GetFontMetric( aFont );
813 			pWrtShell->SetDefault(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
814                                   aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
815 			SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
816             pColl->ResetFmtAttr(nFontWhich);
817 //          lcl_SetColl(pWrtShell, RES_POOLCOLL_STANDARD, pPrinter, sStandard);
818 			bMod = sal_True;
819 		}
820         if(bStandardHeightChanged)
821         {
822             float fSize = (float)aStandardHeightLB.GetValue() / 10;
823             pWrtShell->SetDefault(SvxFontHeightItem( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), 100, nFontHeightWhich ) );
824             SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
825             pColl->ResetFmtAttr(nFontHeightWhich);
826             bMod = sal_True;
827         }
828 
829 		if(sTitle != sShellTitle )
830 		{
831             lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE, pPrinter, sTitle, nFontWhich);
832 			bMod = sal_True;
833 		}
834         if(bTitleHeightChanged)
835         {
836             lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE,
837                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aTitleHeightLB.GetValue()), nFontHeightWhich);
838             bMod = sal_True;
839         }
840         if(sList != sShellList && (!bListDefault || !bSetListDefault ))
841 		{
842             lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE, pPrinter, sList, nFontWhich);
843 			bMod = sal_True;
844 		}
845         if(bListHeightChanged)
846         {
847             lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE,
848                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aListHeightLB.GetValue()), nFontHeightWhich);
849             bMod = sal_True;
850         }
851         if(sLabel != sShellLabel && (!bLabelDefault || !bSetLabelDefault))
852 		{
853             lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL, pPrinter, sLabel, nFontWhich);
854 			bMod = sal_True;
855 		}
856         if(bLabelHeightChanged)
857         {
858             lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL,
859                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aLabelHeightLB.GetValue()), nFontHeightWhich);
860             bMod = sal_True;
861         }
862         if(sIdx != sShellIndex && (!bIdxDefault || !bSetIdxDefault))
863 		{
864             lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE, pPrinter, sIdx, nFontWhich);
865 			bMod = sal_True;
866 		}
867         if(bIndexHeightChanged)
868         {
869             lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE,
870                 sal::static_int_cast< sal_uInt16, sal_Int64 >(aIndexHeightLB.GetValue()), nFontHeightWhich);
871             bMod = sal_True;
872         }
873         if ( bMod )
874 			pWrtShell->SetModified();
875 		pWrtShell->EndAllAction();
876 	}
877 
878 	return sal_False;
879 }
880 
881 /*-----------------03.09.96 11.53-------------------
882 
883 --------------------------------------------------*/
Reset(const SfxItemSet & rSet)884 void SwStdFontTabPage::Reset( const SfxItemSet& rSet)
885 {
886     const SfxPoolItem* pLang;
887     sal_uInt16 nLangSlot = nFontGroup == FONT_GROUP_DEFAULT  ? SID_ATTR_LANGUAGE :
888         FONT_GROUP_CJK == nFontGroup ? SID_ATTR_CHAR_CJK_LANGUAGE : SID_ATTR_CHAR_CTL_LANGUAGE;
889 
890 
891     if( SFX_ITEM_SET == rSet.GetItemState(nLangSlot, sal_False, &pLang))
892         eLanguage = ((const SvxLanguageItem*)pLang)->GetValue();
893 
894     String sTmp(aStdChrFL.GetText());
895     String sToReplace = sScriptWestern;
896     if(FONT_GROUP_CJK == nFontGroup )
897         sToReplace = sScriptAsian;
898     else if(FONT_GROUP_CTL == nFontGroup )
899         sToReplace = sScriptComplex;
900 
901     sTmp.SearchAndReplaceAscii("%1", sToReplace);
902     aStdChrFL.SetText(sTmp);
903     const SfxPoolItem* pItem;
904 
905 	if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_PRINTER, sal_False, &pItem))
906 	{
907 		pPrt = (SfxPrinter*)((const SwPtrItem*)pItem)->GetValue();
908 	}
909 	else
910 	{
911         SfxItemSet* pPrinterSet = new SfxItemSet( *rSet.GetPool(),
912 					SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
913 					SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
914 					0 );
915         pPrt = new SfxPrinter(pPrinterSet);
916 		bDeletePrinter = sal_True;
917 	}
918     pFontList = new FontList( pPrt );
919     // #i94536# prevent duplication of font entries when 'reset' button is pressed
920     if( !aStandardBox.GetEntryCount() )
921     {
922         // get the set of disctinct available family names
923         std::set< String > aFontNames;
924         int nFontNames = pPrt->GetDevFontCount();
925         for( int i = 0; i < nFontNames; i++ )
926         {
927             FontInfo aInf( pPrt->GetDevFont( i ) );
928             aFontNames.insert( aInf.GetName() );
929         }
930 
931         // insert to listboxes
932         for( std::set< String >::const_iterator it = aFontNames.begin();
933              it != aFontNames.end(); ++it )
934         {
935             aStandardBox.InsertEntry( *it );
936             aTitleBox   .InsertEntry( *it );
937             aListBox    .InsertEntry( *it );
938             aLabelBox   .InsertEntry( *it );
939             aIdxBox     .InsertEntry( *it );
940         }
941     }
942 	if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_STDFONTS, sal_False, &pItem))
943 	{
944 		 pFontConfig = (SwStdFontConfig*)((const SwPtrItem*)pItem)->GetValue();
945 	}
946 
947 	if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_WRTSHELL, sal_False, &pItem))
948 	{
949 		pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
950 	}
951 	String sStdBackup;
952 	String sOutBackup;
953 	String sListBackup;
954 	String sCapBackup;
955 	String sIdxBackup;
956     sal_Int32 nStandardHeight = -1;
957     sal_Int32 nTitleHeight = -1;
958     sal_Int32 nListHeight = -1;
959     sal_Int32 nLabelHeight = -1;
960     sal_Int32 nIndexHeight = -1;
961 
962 	if(!pWrtShell)
963 	{
964         sStdBackup = pFontConfig->GetFontStandard(nFontGroup);
965         sOutBackup = pFontConfig->GetFontOutline(nFontGroup);
966         sListBackup= pFontConfig->GetFontList(nFontGroup);
967         sCapBackup = pFontConfig->GetFontCaption(nFontGroup);
968         sIdxBackup = pFontConfig->GetFontIndex(nFontGroup);
969         nStandardHeight = pFontConfig->GetFontHeight( FONT_STANDARD, nFontGroup, eLanguage );
970         nTitleHeight =    pFontConfig->GetFontHeight( FONT_OUTLINE , nFontGroup, eLanguage );
971         nListHeight =     pFontConfig->GetFontHeight( FONT_LIST    , nFontGroup, eLanguage );
972         nLabelHeight =    pFontConfig->GetFontHeight( FONT_CAPTION , nFontGroup, eLanguage );
973         nIndexHeight =    pFontConfig->GetFontHeight( FONT_INDEX   , nFontGroup, eLanguage );
974         if( nStandardHeight <= 0)
975             nStandardHeight = pFontConfig->GetDefaultHeightFor( FONT_STANDARD + nFontGroup * FONT_PER_GROUP, eLanguage);
976         if( nTitleHeight <= 0)
977             nTitleHeight = pFontConfig->GetDefaultHeightFor( FONT_OUTLINE + nFontGroup * FONT_PER_GROUP, eLanguage);
978         if( nListHeight <= 0)
979             nListHeight = pFontConfig->GetDefaultHeightFor( FONT_LIST + nFontGroup * FONT_PER_GROUP, eLanguage);
980         if( nLabelHeight <= 0)
981             nLabelHeight = pFontConfig->GetDefaultHeightFor( FONT_CAPTION + nFontGroup * FONT_PER_GROUP, eLanguage);
982         if( nIndexHeight <= 0)
983             nIndexHeight = pFontConfig->GetDefaultHeightFor( FONT_INDEX + nFontGroup * FONT_PER_GROUP, eLanguage);
984 
985 	   aDocOnlyCB.Enable(sal_False);
986 	}
987 	else
988 	{
989 		SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
990         const SvxFontItem& rFont = !nFontGroup ? pColl->GetFont() :
991                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
992         sShellStd = sStdBackup =  rFont.GetFamilyName();
993 
994         sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
995             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONTSIZE :
996             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE );
997         const SvxFontHeightItem& rFontHeightStandard = (const SvxFontHeightItem& )pColl->GetFmtAttr(nFontHeightWhich);
998         nStandardHeight = (sal_Int32)rFontHeightStandard.GetHeight();
999 
1000 		pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_HEADLINE_BASE);
1001         const SvxFontItem& rFontHL = !nFontGroup ? pColl->GetFont() :
1002                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1003         sShellTitle = sOutBackup = rFontHL.GetFamilyName();
1004 
1005         const SvxFontHeightItem& rFontHeightTitle = (const SvxFontHeightItem&)pColl->GetFmtAttr( nFontHeightWhich, sal_True );
1006         nTitleHeight = (sal_Int32)rFontHeightTitle.GetHeight();
1007 
1008         sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
1009             nFontGroup == FONT_GROUP_DEFAULT  ? RES_CHRATR_FONT :
1010             FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
1011         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_NUMBUL_BASE);
1012         const SvxFontItem& rFontLS = !nFontGroup ? pColl->GetFont() :
1013                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1014         bListDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1015         sShellList = sListBackup = rFontLS.GetFamilyName();
1016 
1017         const SvxFontHeightItem& rFontHeightList = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
1018         nListHeight = (sal_Int32)rFontHeightList.GetHeight();
1019         bListHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1020 
1021 
1022         pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_LABEL);
1023         bLabelDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1024         const SvxFontItem& rFontCP = !nFontGroup ? pColl->GetFont() :
1025                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1026         sShellLabel = sCapBackup = rFontCP.GetFamilyName();
1027         const SvxFontHeightItem& rFontHeightLabel = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
1028         nLabelHeight = (sal_Int32)rFontHeightLabel.GetHeight();
1029         bLabelHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1030 
1031 		pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_REGISTER_BASE);
1032         bIdxDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1033         const SvxFontItem& rFontIDX = !nFontGroup ? pColl->GetFont() :
1034                 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1035         sShellIndex = sIdxBackup = rFontIDX.GetFamilyName();
1036         const SvxFontHeightItem& rFontHeightIndex = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
1037         nIndexHeight = (sal_Int32)rFontHeightIndex.GetHeight();
1038         bIndexHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1039     }
1040 	aStandardBox.SetText(sStdBackup );
1041 	aTitleBox   .SetText(sOutBackup );
1042 	aListBox    .SetText(sListBackup);
1043 	aLabelBox   .SetText(sCapBackup );
1044 	aIdxBox     .SetText(sIdxBackup );
1045 
1046 	FontInfo aFontInfo( pFontList->Get(sStdBackup, sStdBackup) );
1047     aStandardHeightLB.Fill( &aFontInfo, pFontList );
1048 	aFontInfo = pFontList->Get(sOutBackup, sOutBackup );
1049     aTitleHeightLB.Fill( &aFontInfo, pFontList );
1050 	aFontInfo = pFontList->Get(sListBackup,sListBackup);
1051 	aListHeightLB.Fill( &aFontInfo, pFontList );
1052 	aFontInfo = pFontList->Get(sCapBackup, sCapBackup );
1053     aLabelHeightLB.Fill( &aFontInfo, pFontList );
1054 	aFontInfo = pFontList->Get(sIdxBackup, sIdxBackup );
1055     aIndexHeightLB.Fill( &aFontInfo, pFontList );
1056 
1057     aStandardHeightLB.SetValue( CalcToPoint( nStandardHeight, SFX_MAPUNIT_TWIP, 10 ) );
1058     aTitleHeightLB.   SetValue( CalcToPoint( nTitleHeight   , SFX_MAPUNIT_TWIP, 10 ) );
1059     aListHeightLB.    SetValue( CalcToPoint( nListHeight    , SFX_MAPUNIT_TWIP, 10 ) );
1060     aLabelHeightLB.   SetValue( CalcToPoint( nLabelHeight   , SFX_MAPUNIT_TWIP, 10 ));
1061     aIndexHeightLB.   SetValue( CalcToPoint( nIndexHeight   , SFX_MAPUNIT_TWIP, 10 ));
1062 
1063     aStandardBox.SaveValue();
1064 	aTitleBox   .SaveValue();
1065 	aListBox    .SaveValue();
1066 	aLabelBox   .SaveValue();
1067 	aIdxBox     .SaveValue();
1068 
1069     aStandardHeightLB.SaveValue();
1070     aTitleHeightLB.   SaveValue();
1071     aListHeightLB.    SaveValue();
1072     aLabelHeightLB.   SaveValue();
1073     aIndexHeightLB.   SaveValue();
1074 }
1075 
1076 /*-----------------07.09.96 12.28-------------------
1077 
1078 --------------------------------------------------*/
1079 
1080 
IMPL_LINK(SwStdFontTabPage,StandardHdl,PushButton *,EMPTYARG)1081 IMPL_LINK( SwStdFontTabPage, StandardHdl, PushButton *, EMPTYARG )
1082 {
1083     sal_uInt8 nFontOffset = nFontGroup * FONT_PER_GROUP;
1084     aStandardBox.SetText(SwStdFontConfig::GetDefaultFor(FONT_STANDARD + nFontOffset, eLanguage));
1085     aTitleBox   .SetText(SwStdFontConfig::GetDefaultFor(FONT_OUTLINE  + nFontOffset, eLanguage));
1086     aListBox    .SetText(SwStdFontConfig::GetDefaultFor(FONT_LIST     + nFontOffset, eLanguage));
1087     aLabelBox   .SetText(SwStdFontConfig::GetDefaultFor(FONT_CAPTION  + nFontOffset, eLanguage));
1088     aIdxBox     .SetText(SwStdFontConfig::GetDefaultFor(FONT_INDEX    + nFontOffset, eLanguage));
1089 
1090 	aStandardBox.SaveValue();
1091 	aTitleBox   .SaveValue();
1092 	aListBox    .SaveValue();
1093 	aLabelBox   .SaveValue();
1094 	aIdxBox     .SaveValue();
1095 
1096     aStandardHeightLB.SetValue( CalcToPoint(
1097         SwStdFontConfig::GetDefaultHeightFor(FONT_STANDARD + nFontOffset, eLanguage),
1098             SFX_MAPUNIT_TWIP, 10 ) );
1099     aTitleHeightLB   .SetValue(CalcToPoint(
1100         SwStdFontConfig::GetDefaultHeightFor(FONT_OUTLINE  +
1101             nFontOffset, eLanguage), SFX_MAPUNIT_TWIP, 10 ));
1102     aListHeightLB    .SetValue(CalcToPoint(
1103         SwStdFontConfig::GetDefaultHeightFor(FONT_LIST + nFontOffset, eLanguage),
1104             SFX_MAPUNIT_TWIP, 10 ));
1105     aLabelHeightLB   .SetValue(CalcToPoint(
1106         SwStdFontConfig::GetDefaultHeightFor(FONT_CAPTION  + nFontOffset, eLanguage),
1107             SFX_MAPUNIT_TWIP, 10 ));
1108     aIndexHeightLB   .SetValue(CalcToPoint(
1109         SwStdFontConfig::GetDefaultHeightFor(FONT_INDEX    + nFontOffset, eLanguage),
1110             SFX_MAPUNIT_TWIP, 10 ));
1111 
1112     return 0;
1113 }
1114 /*-----------------17.01.97 15.43-------------------
1115 
1116 --------------------------------------------------*/
1117 
IMPL_LINK(SwStdFontTabPage,ModifyHdl,ComboBox *,pBox)1118 IMPL_LINK( SwStdFontTabPage, ModifyHdl, ComboBox*, pBox )
1119 {
1120     if(pBox == &aStandardBox)
1121 	{
1122         String sEntry = pBox->GetText();
1123         if(bSetListDefault && bListDefault)
1124 			aListBox.SetText(sEntry);
1125 		if(bSetLabelDefault && bLabelDefault)
1126 			aLabelBox.SetText(sEntry);
1127 		if(bSetIdxDefault && bIdxDefault)
1128 			aIdxBox.SetText(sEntry);
1129 	}
1130 	else if(pBox == &aListBox)
1131 	{
1132 		bSetListDefault = sal_False;
1133 	}
1134 	else if(pBox == &aLabelBox)
1135 	{
1136 		bSetLabelDefault = sal_False;
1137 	}
1138 	else if(pBox == &aIdxBox)
1139 	{
1140 		bSetIdxDefault = sal_False;
1141 	}
1142 	return 0;
1143 }
1144 
1145 /*-- 11.10.2005 15:11:23---------------------------------------------------
1146 
1147   -----------------------------------------------------------------------*/
IMPL_LINK(SwStdFontTabPage,ModifyHeightHdl,FontSizeBox *,pBox)1148 IMPL_LINK( SwStdFontTabPage, ModifyHeightHdl, FontSizeBox*, pBox )
1149 {
1150     if(pBox == &aStandardHeightLB)
1151     {
1152         sal_Int64 nValue = pBox->GetValue(FUNIT_TWIP);
1153         if(bSetListHeightDefault && bListHeightDefault)
1154             aListHeightLB.SetValue(nValue, FUNIT_TWIP);
1155         if(bSetLabelHeightDefault && bLabelHeightDefault)
1156             aLabelHeightLB.SetValue(nValue, FUNIT_TWIP);
1157         if(bSetIndexHeightDefault && bIndexHeightDefault)
1158             aIndexHeightLB.SetValue(nValue, FUNIT_TWIP);
1159     }
1160     else if(pBox == &aListHeightLB)
1161     {
1162         bSetListHeightDefault = sal_False;
1163     }
1164     else if(pBox == &aLabelHeightLB)
1165     {
1166         bSetLabelHeightDefault = sal_False;
1167     }
1168     else if(pBox == &aIndexHeightLB)
1169     {
1170         bSetIndexHeightDefault = sal_False;
1171     }
1172     return 0;
1173 }
1174 
1175 /*-- 28.09.2005 13:22:36---------------------------------------------------
1176 
1177   -----------------------------------------------------------------------*/
IMPL_LINK(SwStdFontTabPage,LoseFocusHdl,ComboBox *,pBox)1178 IMPL_LINK( SwStdFontTabPage, LoseFocusHdl, ComboBox*, pBox )
1179 {
1180     FontSizeBox* pHeightLB = 0;
1181     String sEntry = pBox->GetText();
1182     if(pBox == &aStandardBox)
1183     {
1184         pHeightLB = &aStandardHeightLB;
1185     }
1186     else if(pBox == &aTitleBox)
1187     {
1188         pHeightLB = &aTitleHeightLB;
1189     }
1190     else if(pBox == &aListBox)
1191     {
1192         pHeightLB = &aListHeightLB;
1193     }
1194     else if(pBox == &aLabelBox)
1195     {
1196         pHeightLB = &aLabelHeightLB;
1197     }
1198     else /*if(pBox == &aIdxBox)*/
1199     {
1200         pHeightLB = &aIndexHeightLB;
1201     }
1202 	FontInfo aFontInfo( pFontList->Get(sEntry, sEntry) );
1203     pHeightLB->Fill( &aFontInfo, pFontList );
1204 
1205     return 0;
1206 }
1207 
1208 
PageCreated(SfxAllItemSet aSet)1209 void SwStdFontTabPage::PageCreated (SfxAllItemSet aSet)
1210 {
1211     SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt16Item, SID_FONTMODE_TYPE, sal_False);
1212 	if (pFlagItem)
1213         SetFontMode(sal::static_int_cast< sal_uInt8, sal_uInt16>( pFlagItem->GetValue()));
1214 }
1215 /*-----------------18.01.97 12.14-------------------
1216 	Optionen Tabelle
1217 --------------------------------------------------*/
1218 
SwTableOptionsTabPage(Window * pParent,const SfxItemSet & rSet)1219 SwTableOptionsTabPage::SwTableOptionsTabPage( Window* pParent, const SfxItemSet& rSet ) :
1220 	SfxTabPage(pParent, SW_RES(TP_OPTTABLE_PAGE), rSet),
1221     aTableFL        (this, SW_RES(FL_TABLE           )),
1222     aHeaderCB       (this, SW_RES(CB_HEADER          )),
1223     aRepeatHeaderCB (this, SW_RES(CB_REPEAT_HEADER    )),
1224     aDontSplitCB    (this, SW_RES(CB_DONT_SPLIT       )),
1225     aBorderCB       (this, SW_RES(CB_BORDER           )),
1226 
1227     aSeparatorFL     (this, SW_RES(FL_TABLE_SEPARATOR)),
1228 
1229     aTableInsertFL  (this, SW_RES(FL_TABLE_INSERT    )),
1230     aNumFormattingCB(this, SW_RES(CB_NUMFORMATTING   )),
1231     aNumFmtFormattingCB(this, SW_RES(CB_NUMFMT_FORMATTING )),
1232     aNumAlignmentCB (this, SW_RES(CB_NUMALIGNMENT )),
1233 
1234     aMoveFL(        this, SW_RES(FL_MOVE     )),
1235     aMoveFT(        this, SW_RES(FT_MOVE     )),
1236     aRowMoveFT(     this, SW_RES(FT_ROWMOVE  )),
1237     aRowMoveMF(     this, SW_RES(MF_ROWMOVE   )),
1238     aColMoveFT(     this, SW_RES(FT_COLMOVE   )),
1239     aColMoveMF(     this, SW_RES(MF_COLMOVE   )),
1240 
1241     aInsertFT(      this, SW_RES(FT_INSERT   )),
1242     aRowInsertFT(   this, SW_RES(FT_ROWINSERT)),
1243     aRowInsertMF(   this, SW_RES(MF_ROWINSERT)),
1244     aColInsertFT(   this, SW_RES(FT_COLINSERT)),
1245     aColInsertMF(   this, SW_RES(MF_COLINSERT)),
1246 
1247     aHandlingFT(    this, SW_RES(FT_HANDLING )),
1248     aFixRB(         this, SW_RES(RB_FIX       )),
1249     aFixPropRB(     this, SW_RES(RB_FIXPROP  )),
1250     aVarRB(         this, SW_RES(RB_VAR      )),
1251     aFixFT(         this, SW_RES(FT_FIX      )),
1252     aFixPropFT(     this, SW_RES(FT_FIXPROP   )),
1253     aVarFT(         this, SW_RES(FT_VAR       )),
1254     pWrtShell(0),
1255     bHTMLMode(sal_False)
1256 {
1257 	FreeResource();
1258 
1259     Link aLnk(LINK(this, SwTableOptionsTabPage, CheckBoxHdl));
1260 	aNumFormattingCB.SetClickHdl(aLnk);
1261 	aNumFmtFormattingCB.SetClickHdl(aLnk);
1262 	aHeaderCB.SetClickHdl(aLnk);
1263 }
1264 
1265 /*-----------------18.01.97 12.43-------------------
1266 
1267 --------------------------------------------------*/
1268 
~SwTableOptionsTabPage()1269 SwTableOptionsTabPage::~SwTableOptionsTabPage()
1270 {
1271 }
1272 
1273 /*-----------------18.01.97 12.43-------------------
1274 
1275 --------------------------------------------------*/
1276 
Create(Window * pParent,const SfxItemSet & rAttrSet)1277 SfxTabPage*	SwTableOptionsTabPage::Create( Window* pParent,
1278 								const SfxItemSet& rAttrSet )
1279 {
1280 	return new SwTableOptionsTabPage(pParent, rAttrSet );
1281 }
1282 
1283 /*-----------------18.01.97 12.42-------------------
1284 
1285 --------------------------------------------------*/
1286 
FillItemSet(SfxItemSet &)1287 sal_Bool SwTableOptionsTabPage::FillItemSet( SfxItemSet& )
1288 {
1289 	sal_Bool bRet = sal_False;
1290 	SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
1291 
1292 	if(aRowMoveMF.IsModified())
1293 		pModOpt->SetTblHMove( (sal_uInt16)aRowMoveMF.Denormalize( aRowMoveMF.GetValue(FUNIT_TWIP)));
1294 
1295 	if(aColMoveMF.IsModified())
1296 		pModOpt->SetTblVMove( (sal_uInt16)aColMoveMF.Denormalize( aColMoveMF.GetValue(FUNIT_TWIP)));
1297 
1298 	if(aRowInsertMF.IsModified())
1299 		pModOpt->SetTblHInsert((sal_uInt16)aRowInsertMF.Denormalize( aRowInsertMF.GetValue(FUNIT_TWIP)));
1300 
1301 	if(aColInsertMF.IsModified())
1302 		pModOpt->SetTblVInsert((sal_uInt16)aColInsertMF.Denormalize( aColInsertMF.GetValue(FUNIT_TWIP)));
1303 
1304 	TblChgMode eMode;
1305 	if(aFixRB.IsChecked())
1306 		eMode = TBLFIX_CHGABS;
1307 	else if(aFixPropRB.IsChecked())
1308 		eMode = TBLFIX_CHGPROP;
1309 	else
1310 		eMode = TBLVAR_CHGABS;
1311 	if(eMode != pModOpt->GetTblMode())
1312 	{
1313 		pModOpt->SetTblMode(eMode);
1314 		// der Tabellen-Tastatur-Modus hat sich geaendert, das soll
1315 		// jetzt auch die aktuelle Tabelle erfahren
1316 		if(pWrtShell && nsSelectionType::SEL_TBL & pWrtShell->GetSelectionType())
1317 		{
1318 			pWrtShell->SetTblChgMode(eMode);
1319 			static sal_uInt16 __READONLY_DATA aInva[] =
1320 								{   FN_TABLE_MODE_FIX,
1321 									FN_TABLE_MODE_FIX_PROP,
1322 									FN_TABLE_MODE_VARIABLE,
1323 									0
1324 								};
1325 			pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
1326 		}
1327 
1328 		bRet = sal_True;
1329 	}
1330 
1331     SwInsertTableOptions aInsOpts( 0, 0 );
1332 
1333 	if (aHeaderCB.IsChecked())
1334         aInsOpts.mnInsMode |= tabopts::HEADLINE;
1335 
1336 	if (aRepeatHeaderCB.IsEnabled() )
1337 		aInsOpts.mnRowsToRepeat = aRepeatHeaderCB.IsChecked()? 1 : 0;
1338 
1339 	if (!aDontSplitCB.IsChecked())
1340         aInsOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
1341 
1342 	if (aBorderCB.IsChecked())
1343         aInsOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
1344 
1345 	if (aHeaderCB.GetSavedValue() != aHeaderCB.GetState() ||
1346 		aRepeatHeaderCB.GetSavedValue() != aRepeatHeaderCB.GetState() ||
1347 		aDontSplitCB.GetSavedValue() != aDontSplitCB.GetState() ||
1348 		aBorderCB.GetSavedValue() != aBorderCB.GetState())
1349 	{
1350 		pModOpt->SetInsTblFlags(bHTMLMode, aInsOpts);
1351 	}
1352 
1353 	if (aNumFormattingCB.GetSavedValue() != aNumFormattingCB.GetState())
1354 	{
1355 		pModOpt->SetInsTblFormatNum(bHTMLMode, aNumFormattingCB.IsChecked());
1356 		bRet = sal_True;
1357 	}
1358 
1359 	if (aNumFmtFormattingCB.GetSavedValue() != aNumFmtFormattingCB.GetState())
1360 	{
1361 		pModOpt->SetInsTblChangeNumFormat(bHTMLMode, aNumFmtFormattingCB.IsChecked());
1362 		bRet = sal_True;
1363 	}
1364 
1365     if (aNumAlignmentCB.GetSavedValue() != aNumAlignmentCB.GetState())
1366 	{
1367 		pModOpt->SetInsTblAlignNum(bHTMLMode, aNumAlignmentCB.IsChecked());
1368 		bRet = sal_True;
1369 	}
1370 
1371     return bRet;
1372 }
1373 /*-----------------18.01.97 12.42-------------------
1374 
1375 --------------------------------------------------*/
Reset(const SfxItemSet & rSet)1376 void SwTableOptionsTabPage::Reset( const SfxItemSet& rSet)
1377 {
1378 	const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
1379 	if ( rSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
1380 	{
1381 		const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet.Get( SID_ATTR_METRIC );
1382 		FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
1383 		::SetFieldUnit( aRowMoveMF, eFieldUnit );
1384 		::SetFieldUnit( aColMoveMF, eFieldUnit );
1385 		::SetFieldUnit( aRowInsertMF, eFieldUnit );
1386 		::SetFieldUnit( aColInsertMF, eFieldUnit );
1387 	}
1388 
1389 	aRowMoveMF  .SetValue(aRowMoveMF.Normalize(pModOpt->GetTblHMove()), FUNIT_TWIP);
1390 	aColMoveMF  .SetValue(aColMoveMF.Normalize(pModOpt->GetTblVMove()), FUNIT_TWIP);
1391 	aRowInsertMF.SetValue(aRowInsertMF.Normalize(pModOpt->GetTblHInsert()), FUNIT_TWIP);
1392 	aColInsertMF.SetValue(aColInsertMF.Normalize(pModOpt->GetTblVInsert()), FUNIT_TWIP);
1393 
1394 	switch(pModOpt->GetTblMode())
1395 	{
1396 		case TBLFIX_CHGABS: 	aFixRB.Check();		break;
1397 		case TBLFIX_CHGPROP: 	aFixPropRB.Check();	break;
1398 		case TBLVAR_CHGABS: 	aVarRB.Check();	break;
1399 	}
1400     const SfxPoolItem* pItem;
1401 	if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem))
1402 	{
1403 		bHTMLMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
1404 	}
1405 
1406 	//bestimmte Controls fuer HTML verstecken
1407 	if(bHTMLMode)
1408 	{
1409 /*        Point aPos(aCaptionFL.GetPosPixel());
1410         long nYDiff = aTableFL.GetPosPixel().Y() - aPos.Y();
1411         aTableFL.SetPosPixel(aPos);
1412 
1413 		aPos = aHeaderCB.GetPosPixel();
1414 		aPos.Y() -= nYDiff;
1415 		aHeaderCB.SetPosPixel(aPos);
1416 
1417 		aPos = aRepeatHeaderCB.GetPosPixel();
1418 		aPos.Y() -= nYDiff;
1419 		aRepeatHeaderCB.SetPosPixel(aPos);
1420 
1421 		aPos = aDontSplitCB.GetPosPixel(); // hier muss eine Luecke geschlossen werden
1422 		aPos.Y() -= nYDiff;
1423 		aBorderCB.SetPosPixel(aPos);
1424 
1425         aPos = aTableInsertFL.GetPosPixel();
1426 		aPos.Y() -= nYDiff;
1427         aTableInsertFL.SetPosPixel(aPos);
1428 
1429 		aPos = aNumFormattingCB.GetPosPixel();
1430 		aPos.Y() -= nYDiff;
1431 		aNumFormattingCB.SetPosPixel(aPos);
1432 
1433 		aPos = aNumFmtFormattingCB.GetPosPixel();
1434 		aPos.Y() -= nYDiff;
1435 		aNumFmtFormattingCB.SetPosPixel(aPos);
1436 
1437 		aPos = aNumAlignmentCB.GetPosPixel();
1438 		aPos.Y() -= nYDiff;
1439 		aNumAlignmentCB.SetPosPixel(aPos);
1440 
1441         aCaptionFL.Hide();
1442 		aCaptionCB.Hide();
1443 		aCaptionFT.Hide();
1444 		aCaptionPB.Hide();
1445 */
1446 		aDontSplitCB.Hide();
1447 	}
1448 
1449 	SwInsertTableOptions aInsOpts = pModOpt->GetInsTblFlags(bHTMLMode);
1450 	sal_uInt16 nInsTblFlags = aInsOpts.mnInsMode;
1451 
1452     aHeaderCB.Check(0 != (nInsTblFlags & tabopts::HEADLINE));
1453     aRepeatHeaderCB.Check(aInsOpts.mnRowsToRepeat > 0);
1454     aDontSplitCB.Check(!(nInsTblFlags & tabopts::SPLIT_LAYOUT));
1455     aBorderCB.Check(0 != (nInsTblFlags & tabopts::DEFAULT_BORDER));
1456 
1457 	aNumFormattingCB.Check(pModOpt->IsInsTblFormatNum(bHTMLMode));
1458 	aNumFmtFormattingCB.Check(pModOpt->IsInsTblChangeNumFormat(bHTMLMode));
1459 	aNumAlignmentCB.Check(pModOpt->IsInsTblAlignNum(bHTMLMode));
1460 
1461     aHeaderCB.SaveValue();
1462 	aRepeatHeaderCB.SaveValue();
1463 	aDontSplitCB.SaveValue();
1464 	aBorderCB.SaveValue();
1465 	aNumFormattingCB.SaveValue();
1466 	aNumFmtFormattingCB.SaveValue();
1467 	aNumAlignmentCB.SaveValue();
1468 
1469     CheckBoxHdl(0);
1470 }
1471 /*-----------------18.01.97 12.42-------------------
1472 
1473 --------------------------------------------------*/
IMPL_LINK(SwTableOptionsTabPage,CheckBoxHdl,CheckBox *,EMPTYARG)1474 IMPL_LINK(SwTableOptionsTabPage, CheckBoxHdl, CheckBox*, EMPTYARG)
1475 {
1476 	aNumFmtFormattingCB.Enable(aNumFormattingCB.IsChecked());
1477 	aNumAlignmentCB.Enable(aNumFormattingCB.IsChecked());
1478 	aRepeatHeaderCB.Enable(aHeaderCB.IsChecked());
1479 	return 0;
1480 }
1481 
PageCreated(SfxAllItemSet aSet)1482 void SwTableOptionsTabPage::PageCreated (SfxAllItemSet aSet)
1483 {
1484 	SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
1485 	if (pWrtSh)
1486 		SetWrtShell(pWrtSh->GetValue());
1487 }
1488 /*  */
1489 
1490 /*-----------------31.10.97 17:55-------------------
1491  TabPage fuer ShadowCrsr
1492 --------------------------------------------------*/
1493 
SwShdwCrsrOptionsTabPage(Window * pParent,const SfxItemSet & rSet)1494 SwShdwCrsrOptionsTabPage::SwShdwCrsrOptionsTabPage( Window* pParent,
1495 													const SfxItemSet& rSet )
1496 	: SfxTabPage(pParent, SW_RES(TP_OPTSHDWCRSR), rSet),
1497     aUnprintFL   ( this,   SW_RES( FL_NOPRINT  ) ),
1498     aParaCB       ( this,   SW_RES( CB_PARA      ) ),
1499     aSHyphCB      ( this,   SW_RES( CB_SHYPH        ) ),
1500     aSpacesCB     ( this,   SW_RES( CB_SPACE    ) ),
1501     aHSpacesCB    ( this,   SW_RES( CB_HSPACE   ) ),
1502     aTabCB        ( this,   SW_RES( CB_TAB      ) ),
1503     aBreakCB      ( this,   SW_RES( CB_BREAK        ) ),
1504     aCharHiddenCB     ( this,   SW_RES( CB_CHAR_HIDDEN   ) ),
1505     aFldHiddenCB     ( this,   SW_RES( CB_FLD_HIDDEN   ) ),
1506     aFldHiddenParaCB ( this,   SW_RES( CB_FLD_HIDDEN_PARA ) ),
1507 
1508     aSeparatorFL(   this, SW_RES( FL_SEPARATOR_SHDW)),
1509 
1510     aFlagFL( this, SW_RES( FL_SHDWCRSFLAG )),
1511     aOnOffCB( this, SW_RES( CB_SHDWCRSONOFF )),
1512 
1513     aFillModeFT( this, SW_RES( FT_SHDWCRSFILLMODE )),
1514     aFillMarginRB( this, SW_RES( RB_SHDWCRSFILLMARGIN )),
1515     aFillIndentRB( this, SW_RES( RB_SHDWCRSFILLINDENT )),
1516     aFillTabRB( this, SW_RES( RB_SHDWCRSFILLTAB )),
1517     aFillSpaceRB( this, SW_RES( RB_SHDWCRSFILLSPACE )),
1518     aCrsrOptFL   ( this, SW_RES( FL_CRSR_OPT)),
1519     aCrsrInProtCB( this, SW_RES( CB_ALLOW_IN_PROT )),
1520     m_aLayoutOptionsFL( this, SW_RES( FL_LAYOUT_OPTIONS ) ),
1521     m_aMathBaselineAlignmentCB( this, SW_RES( CB_MATH_BASELINE_ALIGNMENT ) ),
1522     m_pWrtShell( NULL )
1523 {
1524 	FreeResource();
1525     const SfxPoolItem* pItem = 0;
1526 
1527     SwShadowCursorItem aOpt;
1528 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
1529 		aOpt = *(SwShadowCursorItem*)pItem;
1530 	aOnOffCB.Check( aOpt.IsOn() );
1531 
1532 	sal_uInt8 eMode = aOpt.GetMode();
1533 	aFillIndentRB.Check( FILL_INDENT == eMode );
1534 	aFillMarginRB.Check( FILL_MARGIN == eMode );
1535 	aFillTabRB.Check( FILL_TAB == eMode );
1536 	aFillSpaceRB.Check( FILL_SPACE == eMode );
1537 
1538     if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
1539 		&& ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
1540 	{
1541 		aTabCB		.Hide();
1542         aCharHiddenCB.Hide();
1543         aFldHiddenCB    .Hide();
1544         aFldHiddenParaCB.Hide();
1545         aBreakCB.SetPosPixel(aTabCB.GetPosPixel());
1546         aFlagFL         .Hide();
1547         aOnOffCB        .Hide();
1548         aFillModeFT     .Hide();
1549         aFillMarginRB   .Hide();
1550         aFillIndentRB   .Hide();
1551         aFillTabRB      .Hide();
1552         aFillSpaceRB    .Hide();
1553         aCrsrOptFL      .Hide();
1554         aCrsrInProtCB   .Hide();
1555         aSeparatorFL.Hide();
1556         long nWidth = aFlagFL.GetSizePixel().Width() + aFlagFL.GetPosPixel().X()
1557                                                         - aUnprintFL.GetPosPixel().X();
1558         Size aSize(aUnprintFL.GetSizePixel());
1559         aSize.Width() = nWidth;
1560         aUnprintFL.SetSizePixel(aSize);
1561     }
1562 }
1563 
~SwShdwCrsrOptionsTabPage()1564 SwShdwCrsrOptionsTabPage::~SwShdwCrsrOptionsTabPage()
1565 {
1566 }
1567 
1568 
Create(Window * pParent,const SfxItemSet & rSet)1569 SfxTabPage*	SwShdwCrsrOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
1570 {
1571 	return new SwShdwCrsrOptionsTabPage( pParent, rSet );
1572 }
1573 
1574 
PageCreated(SfxAllItemSet aSet)1575 void SwShdwCrsrOptionsTabPage::PageCreated( SfxAllItemSet aSet )
1576 {
1577     SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
1578     if (pWrtSh)
1579         SetWrtShell(pWrtSh->GetValue());
1580 }
1581 
1582 
FillItemSet(SfxItemSet & rSet)1583 sal_Bool SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet& rSet )
1584 {
1585     SwShadowCursorItem aOpt;
1586     aOpt.SetOn( aOnOffCB.IsChecked() );
1587 
1588     sal_uInt8 eMode;
1589     if( aFillIndentRB.IsChecked() )
1590         eMode= FILL_INDENT;
1591     else if( aFillMarginRB.IsChecked() )
1592         eMode = FILL_MARGIN;
1593     else if( aFillTabRB.IsChecked() )
1594         eMode = FILL_TAB;
1595     else
1596         eMode = FILL_SPACE;
1597     aOpt.SetMode( eMode );
1598 
1599     sal_Bool bRet = sal_False;
1600     const SfxPoolItem* pItem = 0;
1601     if( SFX_ITEM_SET != rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem )
1602         ||  ((SwShadowCursorItem&)*pItem) != aOpt )
1603     {
1604         rSet.Put( aOpt );
1605         bRet = sal_True;
1606     }
1607 
1608     if ( m_pWrtShell )
1609     {
1610         m_pWrtShell->GetDoc()->set(
1611             IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
1612             m_aMathBaselineAlignmentCB.IsChecked() );
1613         bRet |= m_aMathBaselineAlignmentCB.IsChecked() != m_aMathBaselineAlignmentCB.GetSavedValue();
1614     }
1615 
1616     if( aCrsrInProtCB.IsChecked() != aCrsrInProtCB.GetSavedValue())
1617     {
1618         rSet.Put(SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aCrsrInProtCB.IsChecked()));
1619         bRet |= sal_True;
1620     }
1621 
1622     const SwDocDisplayItem* pOldAttr =
1623         (const SwDocDisplayItem*)GetOldItem(GetItemSet(), FN_PARAM_DOCDISP);
1624 
1625     SwDocDisplayItem aDisp;
1626     if(pOldAttr)
1627         aDisp = *pOldAttr;
1628     //
1629     aDisp.bParagraphEnd         = aParaCB       .IsChecked();
1630     aDisp.bTab                  = aTabCB        .IsChecked();
1631     aDisp.bSpace                = aSpacesCB     .IsChecked();
1632     aDisp.bNonbreakingSpace     = aHSpacesCB    .IsChecked();
1633     aDisp.bSoftHyphen           = aSHyphCB      .IsChecked();
1634     aDisp.bFldHiddenText        = aFldHiddenCB     .IsChecked();
1635     aDisp.bCharHiddenText       = aCharHiddenCB.IsChecked();
1636     aDisp.bShowHiddenPara       = aFldHiddenParaCB .IsChecked();
1637     aDisp.bManualBreak          = aBreakCB      .IsChecked();
1638 
1639     bRet |= (!pOldAttr || aDisp != *pOldAttr);
1640     if(bRet)
1641         bRet = 0 != rSet.Put(aDisp);
1642 
1643     return bRet;
1644 }
1645 
Reset(const SfxItemSet & rSet)1646 void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet& rSet )
1647 {
1648     const SfxPoolItem* pItem = 0;
1649 
1650     SwShadowCursorItem aOpt;
1651     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
1652     {
1653         aOpt = *(SwShadowCursorItem*)pItem;
1654     }
1655     aOnOffCB.Check( aOpt.IsOn() );
1656 
1657     sal_uInt8 eMode = aOpt.GetMode();
1658     aFillIndentRB.Check( FILL_INDENT == eMode );
1659     aFillMarginRB.Check( FILL_MARGIN == eMode );
1660     aFillTabRB.Check( FILL_TAB == eMode );
1661     aFillSpaceRB.Check( FILL_SPACE == eMode );
1662 
1663     if ( m_pWrtShell )
1664     {
1665         m_aMathBaselineAlignmentCB.Check( m_pWrtShell->GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
1666         m_aMathBaselineAlignmentCB.SaveValue();
1667     }
1668     else
1669     {
1670         m_aMathBaselineAlignmentCB.Disable();
1671     }
1672 
1673     if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, sal_False, &pItem ))
1674     {
1675         aCrsrInProtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
1676     }
1677     aCrsrInProtCB.SaveValue();
1678 
1679     const SwDocDisplayItem* pDocDisplayAttr = 0;
1680 
1681     rSet.GetItemState( FN_PARAM_DOCDISP, sal_False, (const SfxPoolItem**)&pDocDisplayAttr );
1682     if(pDocDisplayAttr)
1683     {
1684         aParaCB     .Check  (pDocDisplayAttr->bParagraphEnd         );
1685         aTabCB      .Check  (pDocDisplayAttr->bTab                  );
1686         aSpacesCB   .Check  (pDocDisplayAttr->bSpace                );
1687         aHSpacesCB  .Check  (pDocDisplayAttr->bNonbreakingSpace     );
1688         aSHyphCB    .Check  (pDocDisplayAttr->bSoftHyphen           );
1689         aCharHiddenCB.Check (pDocDisplayAttr->bCharHiddenText );
1690         aFldHiddenCB   .Check  (pDocDisplayAttr->bFldHiddenText );
1691         aFldHiddenParaCB.Check (pDocDisplayAttr->bShowHiddenPara       );
1692         aBreakCB    .Check  (pDocDisplayAttr->bManualBreak          );
1693     }
1694 }
1695 
1696 /*-----------------31.10.97 17:55-------------------
1697  TabPage fuer Redlining
1698 --------------------------------------------------*/
1699 
1700 struct CharAttr
1701 {
1702 	sal_uInt16 nItemId;
1703 	sal_uInt16 nAttr;
1704 };
1705 
1706 // Editieren entspricht Einfuegen-Attributen
1707 static CharAttr __FAR_DATA aRedlineAttr[] =
1708 {
1709 	{ SID_ATTR_CHAR_CASEMAP,		SVX_CASEMAP_NOT_MAPPED },
1710 	{ SID_ATTR_CHAR_WEIGHT,			WEIGHT_BOLD },
1711 	{ SID_ATTR_CHAR_POSTURE,  		ITALIC_NORMAL },
1712 	{ SID_ATTR_CHAR_UNDERLINE,    	UNDERLINE_SINGLE },
1713 	{ SID_ATTR_CHAR_UNDERLINE,    	UNDERLINE_DOUBLE },
1714     { SID_ATTR_CHAR_STRIKEOUT,    	STRIKEOUT_SINGLE },
1715     { SID_ATTR_CHAR_CASEMAP,      	SVX_CASEMAP_VERSALIEN },
1716 	{ SID_ATTR_CHAR_CASEMAP,      	SVX_CASEMAP_GEMEINE },
1717 	{ SID_ATTR_CHAR_CASEMAP,      	SVX_CASEMAP_KAPITAELCHEN },
1718 	{ SID_ATTR_CHAR_CASEMAP,      	SVX_CASEMAP_TITEL },
1719 	{ SID_ATTR_BRUSH,				0 }
1720 };
1721 // Items from aRedlineAttr relevant for InsertAttr: strikethrough is
1722 // not used
1723 static sal_uInt16 aInsertAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
1724 
1725 // Items from aRedlineAttr relevant for DeleteAttr: underline and
1726 // double underline is not used
1727 static sal_uInt16 aDeletedAttrMap[] = { 0, 1, 2, 5, 6, 7, 8, 9, 10 };
1728 
1729 // Items from aRedlineAttr relevant for ChangeAttr: strikethrough is
1730 // not used
1731 static sal_uInt16 aChangedAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
1732 
1733 /*-----------------------------------------------------------------------
1734 	Beschreibung: Markierungsvorschau
1735  -----------------------------------------------------------------------*/
1736 
SwMarkPreview(Window * pParent,const ResId & rResID)1737 SwMarkPreview::SwMarkPreview( Window *pParent, const ResId& rResID ) :
1738 
1739 	Window(pParent, rResID),
1740 	m_aTransCol( COL_TRANSPARENT ),
1741 	m_aMarkCol( COL_LIGHTRED ),
1742 	nMarkPos(0)
1743 
1744 {
1745 	InitColors();
1746 	SetMapMode(MAP_PIXEL);
1747 
1748 	const Size aSz(GetOutputSizePixel());
1749 
1750 	// Seite
1751 	aPage.SetSize(Size(aSz.Width() - 3, aSz.Height() - 3));
1752 
1753 	sal_uLong nOutWPix = aPage.GetWidth();
1754 	sal_uLong nOutHPix = aPage.GetHeight();
1755 
1756 	// PrintArea
1757 	sal_uLong nLBorder = 8;
1758 	sal_uLong nRBorder = 8;
1759 	sal_uLong nTBorder = 4;
1760 	sal_uLong nBBorder = 4;
1761 
1762 	aLeftPagePrtArea = Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
1763 	sal_uInt16 nWidth = (sal_uInt16)aLeftPagePrtArea.GetWidth();
1764 	sal_uInt16 nKorr = (nWidth & 1) != 0 ? 0 : 1;
1765 	aLeftPagePrtArea.SetSize(Size(nWidth / 2 - (nLBorder + nRBorder) / 2 + nKorr, aLeftPagePrtArea.GetHeight()));
1766 
1767 	aRightPagePrtArea = aLeftPagePrtArea;
1768 	aRightPagePrtArea.Move(aLeftPagePrtArea.GetWidth() + nLBorder + nRBorder + 1, 0);
1769 }
1770 
~SwMarkPreview()1771 SwMarkPreview::~SwMarkPreview()
1772 {
1773 }
1774 
InitColors(void)1775 void SwMarkPreview::InitColors( void )
1776 {
1777 	// m_aTransCol and m_aMarkCol are _not_ changed because they are set from outside!
1778 
1779 	const StyleSettings& rSettings = GetSettings().GetStyleSettings();
1780 	m_aBgCol = Color( rSettings.GetWindowColor() );
1781 
1782 	sal_Bool bHC = rSettings.GetHighContrastMode();
1783     m_aLineCol = bHC? SwViewOption::GetFontColor() : Color( COL_BLACK );
1784 	m_aShadowCol = bHC? m_aBgCol : rSettings.GetShadowColor();
1785     m_aTxtCol = bHC? SwViewOption::GetFontColor() : Color( COL_GRAY );
1786 	m_aPrintAreaCol = m_aTxtCol;
1787 }
1788 
DataChanged(const DataChangedEvent & rDCEvt)1789 void SwMarkPreview::DataChanged( const DataChangedEvent& rDCEvt )
1790 {
1791 	Window::DataChanged( rDCEvt );
1792 
1793 	if( rDCEvt.GetType() == DATACHANGED_SETTINGS && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
1794 		InitColors();
1795 }
1796 
Paint(const Rectangle &)1797 void SwMarkPreview::Paint(const Rectangle &/*rRect*/)
1798 {
1799 	// Schatten zeichnen
1800 	Rectangle aShadow(aPage);
1801 	aShadow += Point(3, 3);
1802 	DrawRect( aShadow, m_aShadowCol, m_aTransCol );
1803 
1804 	// Seite zeichnen
1805 	DrawRect( aPage, m_aBgCol, m_aLineCol );
1806 
1807 	// Separator zeichnen
1808 	Rectangle aPageSeparator(aPage);
1809 	aPageSeparator.SetSize(Size(2, aPageSeparator.GetHeight()));
1810 	aPageSeparator.Move(aPage.GetWidth() / 2 - 1, 0);
1811 	DrawRect( aPageSeparator, m_aLineCol, m_aTransCol );
1812 
1813 	PaintPage(aLeftPagePrtArea);
1814 	PaintPage(aRightPagePrtArea);
1815 
1816 	Rectangle aLeftMark(Point(aPage.Left() + 2, aLeftPagePrtArea.Top() + 4), Size(aLeftPagePrtArea.Left() - 4, 2));
1817 	Rectangle aRightMark(Point(aRightPagePrtArea.Right() + 2, aRightPagePrtArea.Bottom() - 6), Size(aLeftPagePrtArea.Left() - 4, 2));
1818 
1819 	switch (nMarkPos)
1820 	{
1821 		case 1:		// Links
1822 			aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
1823 			break;
1824 
1825 		case 2:		// Rechts
1826 			aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
1827 			break;
1828 
1829 		case 3:		// Aussen
1830 			break;
1831 
1832 		case 4:		// Innen
1833 			aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
1834 			aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
1835 			break;
1836 
1837 		case 0:		// Keine
1838 		default:
1839 			return;
1840 	}
1841 	DrawRect( aLeftMark, m_aMarkCol, m_aTransCol );
1842 	DrawRect( aRightMark, m_aMarkCol, m_aTransCol );
1843 }
1844 
PaintPage(const Rectangle & rRect)1845 void SwMarkPreview::PaintPage(const Rectangle &rRect)
1846 {
1847 	// PrintArea zeichnen
1848 	DrawRect(rRect, m_aTransCol, m_aPrintAreaCol );
1849 
1850 	// Testabsatz zeichnen
1851 	sal_uLong nLTxtBorder = 4;
1852 	sal_uLong nRTxtBorder = 4;
1853 	sal_uLong nTTxtBorder = 4;
1854 
1855 	Rectangle aTextLine = rRect;
1856 	aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
1857 	aTextLine.Left()	+= nLTxtBorder;
1858 	aTextLine.Right()	-= nRTxtBorder;
1859 	aTextLine.Move(0, nTTxtBorder);
1860 
1861     sal_Int32 nStep;
1862     sal_uInt16 nLines;
1863 
1864 	nStep = aTextLine.GetHeight() + 2;
1865 	nLines = (sal_uInt16)(rRect.GetHeight() / (aTextLine.GetHeight() + 2)) - 1;
1866 
1867 	// Text simulieren
1868 	//
1869 	for (sal_uInt16 i = 0; i < nLines; ++i)
1870 	{
1871 		if (i == (nLines - 1))
1872 			aTextLine.SetSize(Size(aTextLine.GetWidth() / 2, aTextLine.GetHeight()));
1873 
1874 		if (aPage.IsInside(aTextLine))
1875 			DrawRect(aTextLine, m_aTxtCol, m_aTransCol );
1876 
1877 		aTextLine.Move(0, nStep);
1878 	}
1879 	aTextLine.Move(0, -nStep);
1880 }
1881 
DrawRect(const Rectangle & rRect,const Color & rFillColor,const Color & rLineColor)1882 void SwMarkPreview::DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor)
1883 {
1884 	SetFillColor(rFillColor);
1885 	SetLineColor(rLineColor);
1886 	Window::DrawRect(rRect);
1887 }
1888 
1889 namespace
1890 {
lcl_FillRedlineAttrListBox(ListBox & rLB,const AuthorCharAttr & rAttrToSelect,const sal_uInt16 * pAttrMap,const sal_uInt16 nAttrMapSize)1891     void lcl_FillRedlineAttrListBox(
1892             ListBox& rLB, const AuthorCharAttr& rAttrToSelect,
1893             const sal_uInt16* pAttrMap, const sal_uInt16 nAttrMapSize)
1894     {
1895         for (sal_uInt16 i = 0; i != nAttrMapSize; ++i)
1896         {
1897             CharAttr& rAttr(aRedlineAttr[pAttrMap[i]]);
1898             rLB.SetEntryData(i, &rAttr);
1899             if (rAttr.nItemId == rAttrToSelect.nItemId &&
1900                 rAttr.nAttr == rAttrToSelect.nAttr)
1901                 rLB.SelectEntryPos(i);
1902         }
1903     }
1904 }
1905 
SwRedlineOptionsTabPage(Window * pParent,const SfxItemSet & rSet)1906 SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( Window* pParent,
1907 													const SfxItemSet& rSet )
1908 	: SfxTabPage(pParent, SW_RES(TP_REDLINE_OPT), rSet),
1909 
1910     aInsertFL(          this, SW_RES( FL_TE )),
1911 
1912     aInsertFT(          this, SW_RES( FT_CHG_INSERT     )),
1913     aInsertAttrFT(          this, SW_RES( FT_INS_ATTR     )),
1914     aInsertLB(          this, SW_RES( LB_INS_ATTR     )),
1915     aInsertColorFT(     this, SW_RES( FT_INS_COL      )),
1916     aInsertColorLB(     this, SW_RES( LB_INS_COL      )),
1917     aInsertedPreviewWN( this, SW_RES( WIN_INS         )),
1918 
1919     aDeletedFT(         this, SW_RES( FT_CHG_DELETE     )),
1920     aDeletedAttrFT(         this, SW_RES( FT_DEL_ATTR     )),
1921     aDeletedLB(         this, SW_RES( LB_DEL_ATTR     )),
1922     aDeletedColorFT(    this, SW_RES( FT_DEL_COL      )),
1923     aDeletedColorLB(    this, SW_RES( LB_DEL_COL      )),
1924     aDeletedPreviewWN(  this, SW_RES( WIN_DEL         )),
1925 
1926     aChangedFT(         this, SW_RES( FT_CHG_CHANGE     )),
1927     aChangedAttrFT(         this, SW_RES( FT_CHG_ATTR     )),
1928     aChangedLB(         this, SW_RES( LB_CHG_ATTR     )),
1929     aChangedColorFT(    this, SW_RES( FT_CHG_COL      )),
1930     aChangedColorLB(    this, SW_RES( LB_CHG_COL      )),
1931     aChangedPreviewWN(  this, SW_RES( WIN_CHG         )),
1932 
1933     aChangedFL          ( this, SW_RES( FL_LC )),
1934 
1935 	aMarkPosFT			( this, SW_RES( FT_MARKPOS )),
1936 	aMarkPosLB			( this, SW_RES( LB_MARKPOS )),
1937 	aMarkColorFT		( this, SW_RES( FT_LC_COL )),
1938 	aMarkColorLB		( this, SW_RES( LB_LC_COL )),
1939 	aMarkPreviewWN		( this, SW_RES( WIN_MARK )),
1940 
1941     sAuthor             ( SW_RES( STR_AUTHOR )),
1942 	sNone				( SW_RES( STR_NOTHING ))
1943 
1944 {
1945 	FreeResource();
1946 
1947     for(sal_uInt16 i = 0; i < aInsertLB.GetEntryCount(); i++)
1948     {
1949         String sEntry(aInsertLB.GetEntry(i));
1950         aDeletedLB.InsertEntry(sEntry);
1951         aChangedLB.InsertEntry(sEntry);
1952     };
1953 
1954     // remove strikethrough from insert and change and underline + double
1955     // underline from delete
1956     aInsertLB.RemoveEntry(5);
1957     aChangedLB.RemoveEntry(5);
1958     aDeletedLB.RemoveEntry(4);
1959     aDeletedLB.RemoveEntry(3);
1960 
1961     Link aLk = LINK(this, SwRedlineOptionsTabPage, AttribHdl);
1962 	aInsertLB.SetSelectHdl( aLk );
1963 	aDeletedLB.SetSelectHdl( aLk );
1964 	aChangedLB.SetSelectHdl( aLk );
1965 
1966 	aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
1967 	aInsertColorLB.SetSelectHdl( aLk );
1968 	aDeletedColorLB.SetSelectHdl( aLk );
1969 	aChangedColorLB.SetSelectHdl( aLk );
1970 
1971 	aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
1972 	aMarkPosLB.SetSelectHdl( aLk );
1973 	aMarkColorLB.SetSelectHdl( aLk );
1974 	//solution: set different accessible name of four color box
1975 	aInsertColorLB.SetAccessibleName(::rtl::OUString( aInsertFT.GetDisplayText()) + ::rtl::OUString(aInsertColorFT.GetDisplayText()));
1976 	aDeletedColorLB.SetAccessibleName(::rtl::OUString( aDeletedFT.GetDisplayText()) + ::rtl::OUString( aDeletedColorFT.GetDisplayText()));
1977 	aChangedColorLB.SetAccessibleName(::rtl::OUString( aChangedFT.GetDisplayText()) + ::rtl::OUString( aChangedColorFT.GetDisplayText()));
1978 	aMarkColorLB.SetAccessibleName(::rtl::OUString( aMarkPosFT.GetDisplayText()) + ::rtl::OUString( aMarkColorFT.GetDisplayText()));
1979 }
1980 
~SwRedlineOptionsTabPage()1981 SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
1982 {
1983 }
1984 
Create(Window * pParent,const SfxItemSet & rSet)1985 SfxTabPage* SwRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet)
1986 {
1987 	return new SwRedlineOptionsTabPage( pParent, rSet );
1988 }
1989 
FillItemSet(SfxItemSet &)1990 sal_Bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet& )
1991 {
1992 	CharAttr *pAttr;
1993 	SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
1994 
1995     AuthorCharAttr aInsertedAttr;
1996 	AuthorCharAttr aDeletedAttr;
1997 	AuthorCharAttr aChangedAttr;
1998 
1999 	AuthorCharAttr aOldInsertAttr(pOpt->GetInsertAuthorAttr());
2000 	AuthorCharAttr aOldDeletedAttr(pOpt->GetDeletedAuthorAttr());
2001 	AuthorCharAttr aOldChangedAttr(pOpt->GetFormatAuthorAttr());
2002 
2003 	ColorData nOldMarkColor = pOpt->GetMarkAlignColor().GetColor();
2004 	sal_uInt16 nOldMarkMode = pOpt->GetMarkAlignMode();
2005 
2006 	sal_uInt16 nPos = aInsertLB.GetSelectEntryPos();
2007 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
2008 	{
2009 		pAttr = (CharAttr *)aInsertLB.GetEntryData(nPos);
2010         aInsertedAttr.nItemId = pAttr->nItemId;
2011         aInsertedAttr.nAttr = pAttr->nAttr;
2012 
2013 		nPos = aInsertColorLB.GetSelectEntryPos();
2014 
2015 		switch (nPos)
2016 		{
2017 			case 0:
2018                 aInsertedAttr.nColor = COL_NONE;
2019 				break;
2020 			case 1:
2021 			case LISTBOX_ENTRY_NOTFOUND:
2022                 aInsertedAttr.nColor = COL_TRANSPARENT;
2023 				break;
2024 			default:
2025                 aInsertedAttr.nColor = aInsertColorLB.GetEntryColor(nPos).GetColor();
2026 				break;
2027 		}
2028 
2029         pOpt->SetInsertAuthorAttr(aInsertedAttr);
2030 	}
2031 
2032 	nPos = aDeletedLB.GetSelectEntryPos();
2033 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
2034 	{
2035 		pAttr = (CharAttr *)aDeletedLB.GetEntryData(nPos);
2036 		aDeletedAttr.nItemId = pAttr->nItemId;
2037 		aDeletedAttr.nAttr = pAttr->nAttr;
2038 
2039 		nPos = aDeletedColorLB.GetSelectEntryPos();
2040 
2041 		switch (nPos)
2042 		{
2043 			case 0:
2044 				aDeletedAttr.nColor = COL_NONE;
2045 				break;
2046 			case 1:
2047 			case LISTBOX_ENTRY_NOTFOUND:
2048 				aDeletedAttr.nColor = COL_TRANSPARENT;
2049 				break;
2050 			default:
2051 				aDeletedAttr.nColor = aDeletedColorLB.GetEntryColor(nPos).GetColor();
2052 				break;
2053 		}
2054 
2055 		pOpt->SetDeletedAuthorAttr(aDeletedAttr);
2056 	}
2057 
2058 	nPos = aChangedLB.GetSelectEntryPos();
2059 	if (nPos != LISTBOX_ENTRY_NOTFOUND)
2060 	{
2061 		pAttr = (CharAttr *)aChangedLB.GetEntryData(nPos);
2062 		aChangedAttr.nItemId = pAttr->nItemId;
2063 		aChangedAttr.nAttr = pAttr->nAttr;
2064 
2065 		nPos = aChangedColorLB.GetSelectEntryPos();
2066 
2067 		switch (nPos)
2068 		{
2069 			case 0:
2070 				aChangedAttr.nColor = COL_NONE;
2071 				break;
2072 			case 1:
2073 			case LISTBOX_ENTRY_NOTFOUND:
2074 				aChangedAttr.nColor = COL_TRANSPARENT;
2075 				break;
2076 			default:
2077 				aChangedAttr.nColor = aChangedColorLB.GetEntryColor(nPos).GetColor();
2078 				break;
2079 		}
2080 
2081 		pOpt->SetFormatAuthorAttr(aChangedAttr);
2082 	}
2083 
2084 	nPos = 0;
2085 	switch (aMarkPosLB.GetSelectEntryPos())
2086 	{
2087         case 0: nPos = text::HoriOrientation::NONE;       break;
2088         case 1: nPos = text::HoriOrientation::LEFT;       break;
2089         case 2: nPos = text::HoriOrientation::RIGHT;      break;
2090         case 3: nPos = text::HoriOrientation::OUTSIDE;    break;
2091         case 4: nPos = text::HoriOrientation::INSIDE;     break;
2092 	}
2093 	pOpt->SetMarkAlignMode(nPos);
2094 
2095 	pOpt->SetMarkAlignColor(aMarkColorLB.GetSelectEntryColor());
2096 
2097     if (!(aInsertedAttr == aOldInsertAttr) ||
2098 		!(aDeletedAttr == aOldDeletedAttr) ||
2099 		!(aChangedAttr == aOldChangedAttr) ||
2100 	   nOldMarkColor != pOpt->GetMarkAlignColor().GetColor() ||
2101 	   nOldMarkMode != pOpt->GetMarkAlignMode())
2102 	{
2103 		// Alle Dokumente aktualisieren
2104 		TypeId aType(TYPE(SwDocShell));
2105 		SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
2106 
2107 		while( pDocShell )
2108 		{
2109 			pDocShell->GetWrtShell()->UpdateRedlineAttr();
2110 			pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
2111 		}
2112 	}
2113 
2114 	return sal_False;
2115 }
2116 
Reset(const SfxItemSet &)2117 void SwRedlineOptionsTabPage::Reset( const SfxItemSet&  )
2118 {
2119 	const SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
2120 
2121 	const AuthorCharAttr &rInsertAttr = pOpt->GetInsertAuthorAttr();
2122 	const AuthorCharAttr &rDeletedAttr = pOpt->GetDeletedAuthorAttr();
2123 	const AuthorCharAttr &rChangedAttr = pOpt->GetFormatAuthorAttr();
2124 
2125 	// Preview initialisieren
2126     InitFontStyle(aInsertedPreviewWN);
2127     InitFontStyle(aDeletedPreviewWN);
2128     InitFontStyle(aChangedPreviewWN);
2129 
2130 	// Farblistboxen initialisieren
2131 	String sColor;
2132 	aInsertColorLB.SetUpdateMode(sal_False);
2133 	aDeletedColorLB.SetUpdateMode(sal_False);
2134 	aChangedColorLB.SetUpdateMode(sal_False);
2135 	aMarkColorLB.SetUpdateMode(sal_False);
2136 
2137 	aInsertColorLB.InsertEntry(sNone);
2138 	aDeletedColorLB.InsertEntry(sNone);
2139 	aChangedColorLB.InsertEntry(sNone);
2140 
2141 	aInsertColorLB.InsertEntry(sAuthor);
2142 	aDeletedColorLB.InsertEntry(sAuthor);
2143 	aChangedColorLB.InsertEntry(sAuthor);
2144 
2145 	XColorListSharedPtr aColorTbl = XColorList::GetStdColorList();
2146 	sal_uInt16 i;
2147 	for( i = 0; i < aColorTbl->Count(); ++i )
2148 	{
2149 		XColorEntry* pEntry = aColorTbl->GetColor( i );
2150 		Color aColor = pEntry->GetColor();
2151 		String sName = pEntry->GetName();
2152 
2153 		aInsertColorLB.InsertEntry( aColor, sName );
2154 		aDeletedColorLB.InsertEntry( aColor, sName );
2155 		aChangedColorLB.InsertEntry( aColor, sName );
2156 		aMarkColorLB.InsertEntry( aColor, sName );
2157 	}
2158 	aInsertColorLB.SetUpdateMode( sal_True );
2159 	aDeletedColorLB.SetUpdateMode( sal_True );
2160 	aChangedColorLB.SetUpdateMode( sal_True );
2161 	aMarkColorLB.SetUpdateMode( sal_True );
2162 
2163 	ColorData nColor = rInsertAttr.nColor;
2164 
2165 	switch (nColor)
2166 	{
2167 		case COL_TRANSPARENT:
2168 			aInsertColorLB.SelectEntryPos(1);
2169 			break;
2170 		case COL_NONE:
2171 			aInsertColorLB.SelectEntryPos(0);
2172 			break;
2173 		default:
2174 			aInsertColorLB.SelectEntry(Color(nColor));
2175 	}
2176 
2177 	nColor = rDeletedAttr.nColor;
2178 
2179 	switch (nColor)
2180 	{
2181 		case COL_TRANSPARENT:
2182 			aDeletedColorLB.SelectEntryPos(1);
2183 			break;
2184 		case COL_NONE:
2185 			aDeletedColorLB.SelectEntryPos(0);
2186 			break;
2187 		default:
2188 			aDeletedColorLB.SelectEntry(Color(nColor));
2189 	}
2190 
2191 	nColor = rChangedAttr.nColor;
2192 
2193 	switch (nColor)
2194 	{
2195 		case COL_TRANSPARENT:
2196 			aChangedColorLB.SelectEntryPos(1);
2197 			break;
2198 		case COL_NONE:
2199 			aChangedColorLB.SelectEntryPos(0);
2200 			break;
2201 		default:
2202 			aChangedColorLB.SelectEntry(Color(nColor));
2203 	}
2204 
2205 	aMarkColorLB.SelectEntry(pOpt->GetMarkAlignColor());
2206 
2207 	aInsertLB.SelectEntryPos(0);
2208 	aDeletedLB.SelectEntryPos(0);
2209 	aChangedLB.SelectEntryPos(0);
2210 
2211     lcl_FillRedlineAttrListBox(aInsertLB, rInsertAttr, aInsertAttrMap,
2212             sizeof(aInsertAttrMap) / sizeof(sal_uInt16));
2213     lcl_FillRedlineAttrListBox(aDeletedLB, rDeletedAttr, aDeletedAttrMap,
2214             sizeof(aDeletedAttrMap) / sizeof(sal_uInt16));
2215     lcl_FillRedlineAttrListBox(aChangedLB, rChangedAttr, aChangedAttrMap,
2216             sizeof(aChangedAttrMap) / sizeof(sal_uInt16));
2217 
2218 	sal_uInt16 nPos = 0;
2219 	switch (pOpt->GetMarkAlignMode())
2220 	{
2221         case text::HoriOrientation::NONE:     nPos = 0;   break;
2222         case text::HoriOrientation::LEFT:     nPos = 1;   break;
2223         case text::HoriOrientation::RIGHT:    nPos = 2;   break;
2224         case text::HoriOrientation::OUTSIDE:  nPos = 3;   break;
2225         case text::HoriOrientation::INSIDE:   nPos = 4;   break;
2226 	}
2227 	aMarkPosLB.SelectEntryPos(nPos);
2228 
2229 	// Einstellungen in Preview anzeigen
2230 	AttribHdl(&aInsertLB);
2231 	ColorHdl(&aInsertColorLB);
2232     AttribHdl(&aDeletedLB);
2233 	ColorHdl(&aInsertColorLB);
2234     AttribHdl(&aChangedLB);
2235     ColorHdl(&aChangedColorLB);
2236 
2237 	ChangedMaskPrevHdl();
2238 }
2239 
IMPL_LINK(SwRedlineOptionsTabPage,AttribHdl,ListBox *,pLB)2240 IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox *, pLB )
2241 {
2242     SvxFontPrevWindow *pPrev = 0;
2243 	ColorListBox *pColorLB;
2244 
2245 	if (pLB == &aInsertLB)
2246     {
2247 		pColorLB = &aInsertColorLB;
2248         pPrev = &aInsertedPreviewWN;
2249     }
2250 	else if (pLB == &aDeletedLB)
2251     {
2252 		pColorLB = &aDeletedColorLB;
2253         pPrev = &aDeletedPreviewWN;
2254     }
2255     else
2256     {
2257 		pColorLB = &aChangedColorLB;
2258         pPrev = &aChangedPreviewWN;
2259     }
2260 
2261 	SvxFont&	rFont = pPrev->GetFont();
2262 	SvxFont&	rCJKFont = pPrev->GetCJKFont();
2263 
2264 	rFont.SetWeight(WEIGHT_NORMAL);
2265 	rCJKFont.SetWeight(WEIGHT_NORMAL);
2266 	rFont.SetItalic(ITALIC_NONE);
2267 	rCJKFont.SetItalic(ITALIC_NONE);
2268 	rFont.SetUnderline(UNDERLINE_NONE);
2269 	rCJKFont.SetUnderline(UNDERLINE_NONE);
2270 	rFont.SetStrikeout(STRIKEOUT_NONE);
2271 	rCJKFont.SetStrikeout(STRIKEOUT_NONE);
2272 	rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
2273 	rCJKFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
2274 
2275 	sal_uInt16		nPos = pColorLB->GetSelectEntryPos();
2276 
2277 	switch( nPos )
2278 	{
2279 		case 0:
2280 			rFont.SetColor( Color( COL_BLACK ) );
2281 			rCJKFont.SetColor( Color( COL_BLACK ) );
2282 			break;
2283 		case 1:
2284 		case LISTBOX_ENTRY_NOTFOUND:
2285 			rFont.SetColor( Color( COL_RED ) );
2286 			rCJKFont.SetColor( Color( COL_RED ) );
2287 			break;
2288 		default:
2289 			rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2290 			rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2291 			break;
2292 	}
2293 
2294 	nPos = pLB->GetSelectEntryPos();
2295 	if( nPos == LISTBOX_ENTRY_NOTFOUND )
2296 		nPos = 0;
2297 
2298 	CharAttr*	pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
2299     //switch off preview background color
2300     pPrev->ResetColor();
2301 	switch (pAttr->nItemId)
2302 	{
2303 		case SID_ATTR_CHAR_WEIGHT:
2304 			rFont.SetWeight( ( FontWeight ) pAttr->nAttr );
2305 			rCJKFont.SetWeight( ( FontWeight ) pAttr->nAttr );
2306 			break;
2307 
2308 		case SID_ATTR_CHAR_POSTURE:
2309 			rFont.SetItalic( ( FontItalic ) pAttr->nAttr );
2310 			rCJKFont.SetItalic( ( FontItalic ) pAttr->nAttr );
2311 			break;
2312 
2313 		case SID_ATTR_CHAR_UNDERLINE:
2314 			rFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
2315 			rCJKFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
2316 			break;
2317 
2318 		case SID_ATTR_CHAR_STRIKEOUT:
2319 			rFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
2320 			rCJKFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
2321 			break;
2322 
2323 		case SID_ATTR_CHAR_CASEMAP:
2324 			rFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
2325 			rCJKFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
2326 			break;
2327 
2328 		case SID_ATTR_BRUSH:
2329 		{
2330 			nPos = pColorLB->GetSelectEntryPos();
2331 			if( nPos )
2332 				pPrev->SetColor( pColorLB->GetSelectEntryColor() );
2333 			else
2334 				pPrev->SetColor( Color( COL_LIGHTGRAY ) );
2335 
2336 			rFont.SetColor( Color( COL_BLACK ) );
2337 			rCJKFont.SetColor( Color( COL_BLACK ) );
2338 		}
2339 		break;
2340 	}
2341 
2342 	pPrev->Invalidate();
2343 
2344 	return 0;
2345 }
2346 
IMPL_LINK(SwRedlineOptionsTabPage,ColorHdl,ColorListBox *,pColorLB)2347 IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
2348 {
2349     SvxFontPrevWindow *pPrev = 0;
2350     ListBox* pLB;
2351 
2352 	if (pColorLB == &aInsertColorLB)
2353     {
2354 		pLB = &aInsertLB;
2355         pPrev = &aInsertedPreviewWN;
2356     }
2357     else if (pColorLB == &aDeletedColorLB)
2358     {
2359 		pLB = &aDeletedLB;
2360         pPrev = &aDeletedPreviewWN;
2361     }
2362     else
2363     {
2364 		pLB = &aChangedLB;
2365         pPrev = &aChangedPreviewWN;
2366     }
2367 
2368 	SvxFont&	rFont = pPrev->GetFont();
2369 	SvxFont&	rCJKFont = pPrev->GetCJKFont();
2370 	sal_uInt16		nPos = pLB->GetSelectEntryPos();
2371 	if( nPos == LISTBOX_ENTRY_NOTFOUND )
2372 		nPos = 0;
2373 
2374 	CharAttr*	pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
2375 
2376 	if( pAttr->nItemId == SID_ATTR_BRUSH )
2377 	{
2378 		rFont.SetColor( Color( COL_BLACK ) );
2379 		rCJKFont.SetColor( Color( COL_BLACK ) );
2380 		nPos = pColorLB->GetSelectEntryPos();
2381 		if( nPos && nPos != LISTBOX_ENTRY_NOTFOUND )
2382 			pPrev->SetColor( pColorLB->GetSelectEntryColor() );
2383 		else
2384 			pPrev->SetColor( Color( COL_LIGHTGRAY ) );
2385 	}
2386 	else
2387 	{
2388 		nPos = pColorLB->GetSelectEntryPos();
2389 
2390 		switch( nPos )
2391 		{
2392 			case 0:
2393 				rFont.SetColor( Color( COL_BLACK ) );
2394 				rCJKFont.SetColor( Color( COL_BLACK ) );
2395 				break;
2396 			case 1:
2397 			case LISTBOX_ENTRY_NOTFOUND:
2398 				rFont.SetColor( Color( COL_RED ) );
2399 				rCJKFont.SetColor( Color( COL_RED ) );
2400 				break;
2401 			default:
2402 				rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2403 				rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2404 				break;
2405 		}
2406 	}
2407 
2408 	pPrev->Invalidate();
2409 
2410 	return 0;
2411 }
2412 
IMPL_LINK(SwRedlineOptionsTabPage,ChangedMaskPrevHdl,ListBox *,EMPTYARG)2413 IMPL_LINK( SwRedlineOptionsTabPage, ChangedMaskPrevHdl, ListBox *, EMPTYARG )
2414 {
2415 	aMarkPreviewWN.SetMarkPos(aMarkPosLB.GetSelectEntryPos());
2416 	aMarkPreviewWN.SetColor(aMarkColorLB.GetSelectEntryColor().GetColor());
2417 
2418 	aMarkPreviewWN.Invalidate();
2419 
2420 	return 0;
2421 }
2422 
InitFontStyle(SvxFontPrevWindow & rExampleWin)2423 void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
2424 {
2425 	const AllSettings&	rAllSettings = Application::GetSettings();
2426 	LanguageType		eLangType = rAllSettings.GetUILanguage();
2427 	Color				aBackCol( rAllSettings.GetStyleSettings().GetWindowColor() );
2428 	SvxFont&			rFont = rExampleWin.GetFont();
2429 	SvxFont&			rCJKFont = rExampleWin.GetCJKFont();
2430 	SvxFont&			rCTLFont = rExampleWin.GetCTLFont();
2431 
2432 	Font				aFont( OutputDevice::GetDefaultFont( DEFAULTFONT_SERIF, eLangType,
2433 														DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2434 	Font				aCJKFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_TEXT, eLangType,
2435 														DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2436 	Font				aCTLFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_TEXT, eLangType,
2437 														DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2438 	const Size			aDefSize( 0, 12 );
2439 	aFont.SetSize( aDefSize );
2440 	aCJKFont.SetSize( aDefSize );
2441 	aCTLFont.SetSize( aDefSize );
2442 
2443 	aFont.SetFillColor( aBackCol );
2444 	aCJKFont.SetFillColor( aBackCol );
2445 	aCTLFont.SetFillColor( aBackCol );
2446 
2447 	aFont.SetWeight( WEIGHT_NORMAL );
2448 	aCJKFont.SetWeight( WEIGHT_NORMAL );
2449 	aCTLFont.SetWeight( WEIGHT_NORMAL );
2450 
2451 	rFont = aFont;
2452 	rCJKFont = aCJKFont;
2453 	rCTLFont = aCTLFont;
2454 
2455 	const Size			aNewSize( 0, rExampleWin.GetOutputSize().Height() * 2 / 3 );
2456 	rFont.SetSize( aNewSize );
2457 	rCJKFont.SetSize( aNewSize );
2458 
2459 	rExampleWin.SetFont( rFont, rCJKFont,rCTLFont );
2460 
2461 	rExampleWin.UseResourceText();
2462 
2463 	Wallpaper			aWall( aBackCol );
2464 	rExampleWin.SetBackground( aWall );
2465 	rExampleWin.Invalidate();
2466 }
2467 
2468 
2469 #ifdef DBG_UTIL
2470 /*******************************************************
2471  ******************************************************/
2472 /*----------------- OS 11.01.95  -----------------------
2473  TabPage Testeinstellungen
2474 -------------------------------------------------------*/
2475 
lcl_SetPosSize(Window & rWin,Point aPos,Size aSize)2476 void lcl_SetPosSize(Window& rWin, Point aPos, Size aSize)
2477 {
2478 	aPos = rWin.LogicToPixel(aPos, MAP_APPFONT);
2479 	aSize = rWin.OutputDevice::LogicToPixel(aSize, MAP_APPFONT);
2480 	rWin.SetPosSizePixel(aPos, aSize);
2481 }
2482 
SwTestTabPage(Window * pParent,const SfxItemSet & rCoreSet)2483 SwTestTabPage::SwTestTabPage( Window* pParent,
2484 									  const SfxItemSet& rCoreSet) :
2485 	SfxTabPage( pParent, WB_HIDE, rCoreSet),
2486     aTestFL        ( this, WB_GROUP ),
2487 	aTest1CBox   	( this,	0 ),
2488 	aTest2CBox    	( this,	0 ),
2489 	aTest3CBox    	( this,	0 ),
2490 	aTest4CBox    	( this,	0 ),
2491 	aTest5CBox   	( this, 0 ),
2492 	aTest6CBox   	( this,	0 ),
2493 	aTest7CBox   	( this,	0 ),
2494 	aTest8CBox		( this,	0 ),
2495 	aTest9CBox		( this,	0 ),
2496 	aTest10CBox		( this,	0 ),
2497 	bAttrModified( sal_False )
2498 {
2499 	lcl_SetPosSize(*this, 		Point(0,0), Size(260 , 135));
2500     lcl_SetPosSize(aTestFL,   Point(6,2), Size(209,8));
2501 	lcl_SetPosSize(aTest1CBox  , 	Point(12 , 14),	Size(74 , 10));
2502 	lcl_SetPosSize(aTest2CBox  , 	Point(12 , 27),	Size(74 , 10));
2503 	lcl_SetPosSize(aTest3CBox  , 	Point(12 , 40),	Size(74 , 10));
2504 	lcl_SetPosSize(aTest4CBox  , 	Point(12 , 53),	Size(74 , 10));
2505 	lcl_SetPosSize(aTest5CBox  , 	Point(12 , 66),	Size(74 , 10));
2506 	lcl_SetPosSize(aTest6CBox  , 	Point(116, 14),	Size(74 , 10));
2507 	lcl_SetPosSize(aTest7CBox  , 	Point(116, 27),	Size(74 , 10));
2508 	lcl_SetPosSize(aTest8CBox  , 	Point(116, 40),	Size(74 , 10));
2509 	lcl_SetPosSize(aTest9CBox  , 	Point(116, 53),	Size(74 , 10));
2510 	lcl_SetPosSize(aTest10CBox	, 	Point(116, 66),	Size(74 , 10));
2511 
2512     aTestFL.SetText( String(ByteString("Einstellungen nur f\xFCr Testzwecke" ), RTL_TEXTENCODING_MS_1252));
2513 	aTest1CBox .SetText( C2S("unused"));
2514 	aTest2CBox .SetText( C2S("dynamic"));
2515 	aTest3CBox .SetText( C2S("No calm"               ));
2516 	aTest4CBox .SetText( C2S("WYSIWYG debug"         ));
2517 	aTest5CBox .SetText( C2S("No idle format"        ));
2518 	aTest6CBox .SetText( C2S("No screen adj"         ));
2519 	aTest7CBox .SetText( C2S("win format"            ));
2520 	aTest8CBox .SetText( C2S("No Scroll"             ));
2521 	aTest9CBox .SetText( C2S("DrawingLayerNotLoading"));
2522 	aTest10CBox.SetText( C2S("AutoFormat by Input"   ));
2523     aTestFL.Show();
2524 	aTest1CBox .Show();
2525 	aTest2CBox .Show();
2526 	aTest3CBox .Show();
2527 	aTest4CBox .Show();
2528 	aTest5CBox .Show();
2529 	aTest6CBox .Show();
2530 	aTest7CBox .Show();
2531 	aTest8CBox .Show();
2532 	aTest9CBox .Show();
2533 	aTest10CBox.Show();
2534 	Init();
2535 
2536 }
2537 
2538 
2539 //------------------------------------------------------------------------
2540 
2541 
Create(Window * pParent,const SfxItemSet & rAttrSet)2542 SfxTabPage*	SwTestTabPage::Create( Window* pParent,
2543 									   const SfxItemSet& rAttrSet )
2544 {
2545 	return ( new SwTestTabPage( pParent, rAttrSet ) );
2546 }
2547 //------------------------------------------------------------------------
2548 
2549 
FillItemSet(SfxItemSet & rCoreSet)2550 sal_Bool 	SwTestTabPage::FillItemSet( SfxItemSet& rCoreSet )
2551 {
2552 
2553 	if ( bAttrModified )
2554 	{
2555 		SwTestItem aTestItem(FN_PARAM_SWTEST);
2556 			aTestItem.bTest1=aTest1CBox.IsChecked();
2557 			aTestItem.bTest2=aTest2CBox.IsChecked();
2558 			aTestItem.bTest3=aTest3CBox.IsChecked();
2559 			aTestItem.bTest4=aTest4CBox.IsChecked();
2560 			aTestItem.bTest5=aTest5CBox.IsChecked();
2561 			aTestItem.bTest6=aTest6CBox.IsChecked();
2562 			aTestItem.bTest7=aTest7CBox.IsChecked();
2563 			aTestItem.bTest8=aTest8CBox.IsChecked();
2564 			aTestItem.bTest9=aTest9CBox.IsChecked();
2565 			aTestItem.bTest10=aTest10CBox.IsChecked();
2566 		rCoreSet.Put(aTestItem);
2567 	}
2568 	return bAttrModified;
2569 }
2570 //------------------------------------------------------------------------
2571 
2572 
Reset(const SfxItemSet &)2573 void SwTestTabPage::Reset( const SfxItemSet& )
2574 {
2575 	const SfxItemSet& rSet = GetItemSet();
2576 	const SwTestItem* pTestAttr = 0;
2577 
2578 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SWTEST , sal_False,
2579 									(const SfxPoolItem**)&pTestAttr ))
2580 	{
2581 		aTest1CBox.Check(pTestAttr->bTest1);
2582 		aTest2CBox.Check(pTestAttr->bTest2);
2583 		aTest3CBox.Check(pTestAttr->bTest3);
2584 		aTest4CBox.Check(pTestAttr->bTest4);
2585 		aTest5CBox.Check(pTestAttr->bTest5);
2586 		aTest6CBox.Check(pTestAttr->bTest6);
2587 		aTest7CBox.Check(pTestAttr->bTest7);
2588 		aTest8CBox.Check(pTestAttr->bTest8);
2589 		aTest9CBox.Check(pTestAttr->bTest9);
2590 		aTest10CBox.Check(pTestAttr->bTest10);
2591 	}
2592 }
2593 //------------------------------------------------------------------------
2594 
2595 
Init()2596 void SwTestTabPage::Init()
2597 {
2598 	// handler
2599 	Link aLk = LINK( this, SwTestTabPage, AutoClickHdl );
2600 	aTest1CBox.SetClickHdl( aLk );
2601 	aTest2CBox.SetClickHdl( aLk );
2602 	aTest3CBox.SetClickHdl( aLk );
2603 	aTest4CBox.SetClickHdl( aLk );
2604 	aTest5CBox.SetClickHdl( aLk );
2605 	aTest6CBox.SetClickHdl( aLk );
2606 	aTest7CBox.SetClickHdl( aLk );
2607 	aTest8CBox.SetClickHdl( aLk );
2608 	aTest9CBox.SetClickHdl( aLk );
2609 	aTest10CBox.SetClickHdl( aLk );
2610 }
2611 //------------------------------------------------------------------------
2612 
2613 
IMPL_LINK_INLINE_START(SwTestTabPage,AutoClickHdl,CheckBox *,EMPTYARG)2614 IMPL_LINK_INLINE_START( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
2615 {
2616 	bAttrModified = sal_True;
2617 	return 0;
2618 }
2619 IMPL_LINK_INLINE_END( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
2620 #endif
2621 
2622