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