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 <IDocumentSettingAccess.hxx>
31 : #include <swmodule.hxx>
32 : #include <wrtsh.hxx>
33 : #include <uitool.hxx>
34 : #include <cfgitems.hxx>
35 : #include <poolfmt.hxx>
36 : #include <uiitems.hxx>
37 : #include <initui.hxx>
38 : #include <printdata.hxx>
39 : #include <modcfg.hxx>
40 : #include <srcview.hxx>
41 : #include <crstate.hxx>
42 : #include <viewopt.hxx>
43 : #include <globals.hrc>
44 : #include <config.hrc>
45 : #include <swwrtshitem.hxx>
46 : #include <unomid.h>
47 :
48 : #include <editeng/fhgtitem.hxx>
49 : #include <editeng/fontitem.hxx>
50 : #include <editeng/langitem.hxx>
51 : #include <editeng/svxenum.hxx>
52 : #include <sal/macros.h>
53 : #include <sfx2/dialoghelper.hxx>
54 : #include <sfx2/request.hxx>
55 : #include <sfx2/printer.hxx>
56 : #include <sfx2/bindings.hxx>
57 : #include <svl/slstitm.hxx>
58 : #include <svl/ctloptions.hxx>
59 : #include <svl/eitem.hxx>
60 : #include <svl/cjkoptions.hxx>
61 : #include <svtools/ctrltool.hxx>
62 : #include <sfx2/htmlmode.hxx>
63 : #include <svx/xtable.hxx>
64 : #include <svx/dlgutil.hxx>
65 : #include <svx/strarray.hxx>
66 :
67 : #include <vcl/settings.hxx>
68 : #include <vcl/svapp.hxx>
69 :
70 : using namespace ::com::sun::star;
71 :
72 : // Tools->Options->Writer->View
73 : // Tools->Options->Writer/Web->View
74 0 : SwContentOptPage::SwContentOptPage( vcl::Window* pParent,
75 : const SfxItemSet& rCoreSet ) :
76 : SfxTabPage(pParent, "ViewOptionsPage",
77 0 : "modules/swriter/ui/viewoptionspage.ui", &rCoreSet)
78 : {
79 0 : get (m_pCrossCB, "helplines");
80 :
81 0 : get (m_pHScrollBox, "hscrollbar");
82 0 : get (m_pVScrollBox, "vscrollbar");
83 0 : get (m_pAnyRulerCB, "ruler");
84 0 : get (m_pHRulerCBox, "hruler");
85 0 : get (m_pHMetric, "hrulercombobox");
86 0 : get (m_pVRulerCBox, "vruler");
87 0 : get (m_pVRulerRightCBox, "vrulerright");
88 0 : get (m_pVMetric, "vrulercombobox");
89 0 : get (m_pSmoothCBox, "smoothscroll");
90 :
91 0 : get (m_pGrfCB, "graphics");
92 0 : get (m_pTblCB, "tables");
93 0 : get (m_pDrwCB, "drawings");
94 0 : get (m_pFldNameCB, "fieldcodes");
95 0 : get (m_pPostItCB, "comments");
96 :
97 0 : get (m_pSettingsFrame, "settingsframe");
98 0 : get (m_pSettingsLabel, "settingslabel");
99 0 : get (m_pMetricLabel, "measureunitlabel");
100 0 : get (m_pMetricLB, "measureunit");
101 :
102 : /* This part is visible only with Writer/Web->View dialogue. */
103 : const SfxPoolItem* pItem;
104 0 : if (! (SfxItemState::SET == rCoreSet.GetItemState(SID_HTML_MODE, false, &pItem )
105 0 : && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON))
106 : {
107 0 : m_pSettingsFrame->Hide();
108 0 : m_pSettingsLabel->Hide();
109 0 : m_pMetricLabel->Hide();
110 0 : m_pMetricLB->Hide();
111 : }
112 :
113 0 : SvtCJKOptions aCJKOptions;
114 0 : if(!aCJKOptions.IsVerticalTextEnabled() )
115 0 : m_pVRulerRightCBox->Hide();
116 0 : m_pVRulerCBox->SetClickHdl(LINK(this, SwContentOptPage, VertRulerHdl ));
117 0 : m_pAnyRulerCB->SetClickHdl(LINK(this, SwContentOptPage, AnyRulerHdl));
118 :
119 0 : SvxStringArray aMetricArr( SW_RES( STR_ARR_METRIC ) );
120 0 : for ( size_t i = 0; i < aMetricArr.Count(); ++i )
121 : {
122 0 : const OUString 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_Int32 nPos = m_pMetricLB->InsertEntry( sMetric );
141 0 : m_pMetricLB->SetEntryData( nPos, (void*)(sal_IntPtr)eFUnit );
142 0 : m_pHMetric->InsertEntry( sMetric );
143 0 : m_pHMetric->SetEntryData( nPos, (void*)(sal_IntPtr)eFUnit );
144 : }
145 : // a vertical ruler has not the 'character' unit
146 0 : if ( eFUnit != FUNIT_CHAR )
147 : {
148 0 : sal_Int32 nPos = m_pVMetric->InsertEntry( sMetric );
149 0 : m_pVMetric->SetEntryData( nPos, (void*)(sal_IntPtr)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( vcl::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, false, &pItem ) >= SfxItemState::DEFAULT )
171 : {
172 0 : FieldUnit eFieldUnit = (FieldUnit)((SfxUInt16Item*)pItem)->GetValue();
173 0 : for ( sal_Int32 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 , false,
190 0 : (const SfxPoolItem**)&pElemAttr );
191 0 : if(pElemAttr)
192 : {
193 0 : m_pTblCB->Check (pElemAttr->bTable);
194 0 : m_pGrfCB->Check (pElemAttr->bGraphic);
195 0 : m_pDrwCB->Check (pElemAttr->bDrawing);
196 0 : m_pFldNameCB->Check (pElemAttr->bFieldName);
197 0 : m_pPostItCB->Check (pElemAttr->bNotes);
198 0 : m_pCrossCB->Check (pElemAttr->bCrosshair);
199 0 : m_pHScrollBox->Check (pElemAttr->bHorzScrollbar);
200 0 : m_pVScrollBox->Check (pElemAttr->bVertScrollbar);
201 0 : m_pAnyRulerCB->Check (pElemAttr->bAnyRuler);
202 0 : m_pHRulerCBox->Check (pElemAttr->bHorzRuler);
203 0 : m_pVRulerCBox->Check (pElemAttr->bVertRuler);
204 0 : m_pVRulerRightCBox->Check (pElemAttr->bVertRulerRight);
205 0 : m_pSmoothCBox->Check (pElemAttr->bSmoothScroll);
206 : }
207 0 : m_pMetricLB->SetNoSelection();
208 0 : lcl_SelectMetricLB(m_pMetricLB, SID_ATTR_METRIC, *rSet);
209 0 : lcl_SelectMetricLB(m_pHMetric, FN_HSCROLL_METRIC, *rSet);
210 0 : lcl_SelectMetricLB(m_pVMetric, FN_VSCROLL_METRIC, *rSet);
211 0 : AnyRulerHdl(m_pAnyRulerCB);
212 0 : }
213 :
214 0 : 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 = m_pTblCB->IsChecked();
223 0 : aElem.bGraphic = m_pGrfCB->IsChecked();
224 0 : aElem.bDrawing = m_pDrwCB->IsChecked();
225 0 : aElem.bFieldName = m_pFldNameCB->IsChecked();
226 0 : aElem.bNotes = m_pPostItCB->IsChecked();
227 0 : aElem.bCrosshair = m_pCrossCB->IsChecked();
228 0 : aElem.bHorzScrollbar = m_pHScrollBox->IsChecked();
229 0 : aElem.bVertScrollbar = m_pVScrollBox->IsChecked();
230 0 : aElem.bAnyRuler = m_pAnyRulerCB->IsChecked();
231 0 : aElem.bHorzRuler = m_pHRulerCBox->IsChecked();
232 0 : aElem.bVertRuler = m_pVRulerCBox->IsChecked();
233 0 : aElem.bVertRulerRight = m_pVRulerRightCBox->IsChecked();
234 0 : aElem.bSmoothScroll = m_pSmoothCBox->IsChecked();
235 :
236 0 : bool bRet = !pOldAttr || aElem != *pOldAttr;
237 0 : if(bRet)
238 0 : bRet = 0 != rSet->Put(aElem);
239 :
240 0 : sal_Int32 nMPos = m_pMetricLB->GetSelectEntryPos();
241 0 : sal_Int32 nGlobalMetricPos = nMPos;
242 0 : if ( m_pMetricLB->IsValueChangedFromSaved() )
243 : {
244 : // Double-Cast for VA3.0
245 0 : const sal_uInt16 nFieldUnit = (sal_uInt16)(sal_IntPtr)m_pMetricLB->GetEntryData( nMPos );
246 0 : rSet->Put( SfxUInt16Item( SID_ATTR_METRIC, nFieldUnit ) );
247 0 : bRet = true;
248 : }
249 :
250 0 : nMPos = m_pHMetric->GetSelectEntryPos();
251 0 : if ( m_pHMetric->IsValueChangedFromSaved() || nMPos != nGlobalMetricPos )
252 : {
253 : // Double-Cast for VA3.0
254 0 : const sal_uInt16 nFieldUnit = (sal_uInt16)(sal_IntPtr)m_pHMetric->GetEntryData( nMPos );
255 0 : rSet->Put( SfxUInt16Item( FN_HSCROLL_METRIC, nFieldUnit ) );
256 0 : bRet = true;
257 : }
258 0 : nMPos = m_pVMetric->GetSelectEntryPos();
259 0 : if ( m_pVMetric->IsValueChangedFromSaved() || nMPos != nGlobalMetricPos )
260 : {
261 : // Double-Cast for VA3.0
262 0 : const sal_uInt16 nFieldUnit = (sal_uInt16)(sal_IntPtr)m_pVMetric->GetEntryData( nMPos );
263 0 : rSet->Put( SfxUInt16Item( FN_VSCROLL_METRIC, nFieldUnit ) );
264 0 : bRet = true;
265 : }
266 0 : return bRet;
267 : }
268 :
269 0 : IMPL_LINK(SwContentOptPage, VertRulerHdl, CheckBox*, pBox)
270 : {
271 0 : m_pVRulerRightCBox->Enable(pBox->IsEnabled() && pBox->IsChecked());
272 0 : return 0;
273 : }
274 :
275 0 : IMPL_LINK( SwContentOptPage, AnyRulerHdl, CheckBox*, pBox)
276 : {
277 0 : bool bChecked = pBox->IsChecked();
278 0 : m_pHRulerCBox->Enable(bChecked);
279 0 : m_pHMetric->Enable(bChecked);
280 0 : m_pVRulerCBox->Enable(bChecked);
281 0 : m_pVMetric->Enable(bChecked);
282 0 : VertRulerHdl(m_pVRulerCBox);
283 0 : return 0;
284 : }
285 :
286 : // TabPage Printer additional settings
287 0 : SwAddPrinterTabPage::SwAddPrinterTabPage(vcl::Window* pParent,
288 : const SfxItemSet& rCoreSet)
289 : : SfxTabPage(pParent, "PrintOptionsPage",
290 : "modules/swriter/ui/printoptionspage.ui", &rCoreSet)
291 : , sNone(SW_RESSTR(SW_STR_NONE))
292 : , bAttrModified(false)
293 0 : , bPreview(false)
294 : {
295 0 : get(m_pGrfCB, "graphics");
296 0 : get(m_pCtrlFldCB, "formcontrols");
297 0 : get(m_pBackgroundCB, "background");
298 0 : get(m_pBlackFontCB, "inblack");
299 0 : get(m_pPrintHiddenTextCB, "hiddentext");
300 0 : get(m_pPrintTextPlaceholderCB, "textplaceholder");
301 :
302 0 : get(m_pPagesFrame, "pagesframe");
303 0 : get(m_pLeftPageCB, "leftpages");
304 0 : get(m_pRightPageCB, "rightpages");
305 0 : get(m_pProspectCB, "brochure");
306 0 : get(m_pProspectCB_RTL, "rtl");
307 :
308 0 : get(m_pCommentsFrame, "commentsframe");
309 0 : get(m_pNoRB, "none");
310 0 : get(m_pOnlyRB, "only");
311 0 : get(m_pEndRB, "end");
312 0 : get(m_pEndPageRB, "endpage");
313 0 : get(m_pInMarginsRB, "inmargins");
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_pInMarginsRB->SetClickHdl( aLk );
335 0 : m_pEndRB->SetClickHdl( aLk );
336 0 : m_pOnlyRB->SetClickHdl( aLk );
337 0 : m_pNoRB->SetClickHdl( aLk );
338 0 : m_pFaxLB->SetSelectHdl( LINK( this, SwAddPrinterTabPage, SelectHdl ) );
339 :
340 : const SfxPoolItem* pItem;
341 0 : if(SfxItemState::SET == rCoreSet.GetItemState(SID_HTML_MODE, false, &pItem )
342 0 : && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
343 : {
344 0 : m_pLeftPageCB->Hide();
345 0 : m_pRightPageCB->Hide();
346 0 : m_pPrintHiddenTextCB->Hide();
347 0 : m_pPrintTextPlaceholderCB->Hide();
348 :
349 : // hide m_pPrintEmptyPagesCB
350 0 : m_pPrintEmptyPagesCB->Hide();
351 : }
352 0 : m_pProspectCB_RTL->Disable();
353 0 : SvtCTLOptions aCTLOptions;
354 0 : m_pProspectCB_RTL->Show(aCTLOptions.IsCTLFontEnabled());
355 0 : }
356 :
357 0 : void SwAddPrinterTabPage::SetPreview(bool bPrev)
358 : {
359 0 : bPreview = bPrev;
360 0 : m_pCommentsFrame->Enable(!bPreview);
361 0 : m_pPagesFrame->Enable(!bPreview);
362 0 : }
363 :
364 0 : SfxTabPage* SwAddPrinterTabPage::Create( vcl::Window* pParent,
365 : const SfxItemSet* rAttrSet )
366 : {
367 0 : return ( new SwAddPrinterTabPage( pParent, *rAttrSet ) );
368 : }
369 :
370 0 : bool SwAddPrinterTabPage::FillItemSet( SfxItemSet* rCoreSet )
371 : {
372 0 : if ( bAttrModified )
373 : {
374 0 : SwAddPrinterItem aAddPrinterAttr (FN_PARAM_ADDPRINTER);
375 0 : aAddPrinterAttr.bPrintGraphic = m_pGrfCB->IsChecked();
376 0 : aAddPrinterAttr.bPrintTable = true; // always enabled since CWS printerpullgpages /*aTabCB.IsChecked();*/
377 0 : aAddPrinterAttr.bPrintDraw = m_pGrfCB->IsChecked(); // UI merged with m_pGrfCB in CWS printerpullgpages
378 0 : aAddPrinterAttr.bPrintControl = m_pCtrlFldCB->IsChecked();
379 0 : aAddPrinterAttr.bPrintPageBackground = m_pBackgroundCB->IsChecked();
380 0 : aAddPrinterAttr.bPrintBlackFont = m_pBlackFontCB->IsChecked();
381 0 : aAddPrinterAttr.bPrintHiddenText = m_pPrintHiddenTextCB->IsChecked();
382 0 : aAddPrinterAttr.bPrintTextPlaceholder = m_pPrintTextPlaceholderCB->IsChecked();
383 :
384 0 : aAddPrinterAttr.bPrintLeftPages = m_pLeftPageCB->IsChecked();
385 0 : aAddPrinterAttr.bPrintRightPages = m_pRightPageCB->IsChecked();
386 0 : aAddPrinterAttr.bPrintReverse = false; // handled by vcl itself since CWS printerpullpages /*aReverseCB.IsChecked()*/;
387 0 : aAddPrinterAttr.bPrintProspect = m_pProspectCB->IsChecked();
388 0 : aAddPrinterAttr.bPrintProspectRTL = m_pProspectCB_RTL->IsChecked();
389 0 : aAddPrinterAttr.bPaperFromSetup = m_pPaperFromSetupCB->IsChecked();
390 0 : aAddPrinterAttr.bPrintEmptyPages = m_pPrintEmptyPagesCB->IsChecked();
391 0 : aAddPrinterAttr.bPrintSingleJobs = true; // handled by vcl in new print dialog since CWS printerpullpages /*aSingleJobsCB.IsChecked()*/;
392 :
393 0 : if (m_pNoRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
394 0 : POSTITS_NONE;
395 0 : if (m_pOnlyRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
396 0 : POSTITS_ONLY;
397 0 : if (m_pEndRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
398 0 : POSTITS_ENDDOC;
399 0 : if (m_pEndPageRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
400 0 : POSTITS_ENDPAGE;
401 0 : if (m_pInMarginsRB->IsChecked()) aAddPrinterAttr.nPrintPostIts =
402 0 : POSTITS_INMARGINS;
403 :
404 0 : const OUString sFax = m_pFaxLB->GetSelectEntry();
405 0 : aAddPrinterAttr.sFaxName = sNone == sFax ? aEmptyOUStr : sFax;
406 0 : rCoreSet->Put(aAddPrinterAttr);
407 : }
408 0 : return bAttrModified;
409 : }
410 :
411 0 : void SwAddPrinterTabPage::Reset( const SfxItemSet* )
412 : {
413 0 : const SfxItemSet& rSet = GetItemSet();
414 0 : const SwAddPrinterItem* pAddPrinterAttr = 0;
415 :
416 0 : if( SfxItemState::SET == rSet.GetItemState( FN_PARAM_ADDPRINTER , false,
417 0 : (const SfxPoolItem**)&pAddPrinterAttr ))
418 : {
419 0 : m_pGrfCB->Check(pAddPrinterAttr->bPrintGraphic || pAddPrinterAttr->bPrintDraw);
420 0 : m_pCtrlFldCB->Check( pAddPrinterAttr->bPrintControl);
421 0 : m_pBackgroundCB->Check( pAddPrinterAttr->bPrintPageBackground);
422 0 : m_pBlackFontCB->Check( pAddPrinterAttr->bPrintBlackFont);
423 0 : m_pPrintHiddenTextCB->Check( pAddPrinterAttr->bPrintHiddenText);
424 0 : m_pPrintTextPlaceholderCB->Check(pAddPrinterAttr->bPrintTextPlaceholder);
425 0 : m_pLeftPageCB->Check( pAddPrinterAttr->bPrintLeftPages);
426 0 : m_pRightPageCB->Check( pAddPrinterAttr->bPrintRightPages);
427 0 : m_pPaperFromSetupCB->Check(pAddPrinterAttr->bPaperFromSetup);
428 0 : m_pPrintEmptyPagesCB->Check(pAddPrinterAttr->bPrintEmptyPages);
429 0 : m_pProspectCB->Check( pAddPrinterAttr->bPrintProspect);
430 0 : m_pProspectCB_RTL->Check( pAddPrinterAttr->bPrintProspectRTL);
431 :
432 0 : m_pNoRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_NONE ) ;
433 0 : m_pOnlyRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ONLY ) ;
434 0 : m_pEndRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDDOC ) ;
435 0 : m_pEndPageRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDPAGE ) ;
436 0 : m_pInMarginsRB->Check (pAddPrinterAttr->nPrintPostIts== POSTITS_INMARGINS ) ;
437 0 : m_pFaxLB->SelectEntry( pAddPrinterAttr->sFaxName );
438 : }
439 0 : if (m_pProspectCB->IsChecked())
440 : {
441 0 : m_pProspectCB_RTL->Enable(true);
442 0 : m_pNoRB->Enable( false );
443 0 : m_pOnlyRB->Enable( false );
444 0 : m_pEndRB->Enable( false );
445 0 : m_pEndPageRB->Enable( false );
446 : }
447 : else
448 0 : m_pProspectCB_RTL->Enable( 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 = true;
459 0 : bool bIsProspect = m_pProspectCB->IsChecked();
460 0 : if (!bIsProspect)
461 0 : m_pProspectCB_RTL->Check( 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 : m_pInMarginsRB->Enable( !bIsProspect );
468 0 : return 0;
469 : }
470 0 : IMPL_LINK_NOARG_INLINE_END(SwAddPrinterTabPage, AutoClickHdl)
471 :
472 0 : void SwAddPrinterTabPage::SetFax( const std::vector<OUString>& rFaxLst )
473 : {
474 0 : m_pFaxLB->InsertEntry(sNone);
475 0 : for(size_t i = 0; i < rFaxLst.size(); ++i)
476 : {
477 0 : m_pFaxLB->InsertEntry(rFaxLst[i]);
478 : }
479 0 : m_pFaxLB->SelectEntryPos(0);
480 0 : }
481 :
482 0 : IMPL_LINK_NOARG_INLINE_START(SwAddPrinterTabPage, SelectHdl)
483 : {
484 0 : bAttrModified=true;
485 0 : return 0;
486 : }
487 0 : IMPL_LINK_NOARG_INLINE_END(SwAddPrinterTabPage, SelectHdl)
488 :
489 0 : void SwAddPrinterTabPage::PageCreated( const SfxAllItemSet& aSet)
490 : {
491 0 : SFX_ITEMSET_ARG (&aSet,pListItem,SfxBoolItem,SID_FAX_LIST,false);
492 0 : SFX_ITEMSET_ARG (&aSet,pPreviewItem,SfxBoolItem,SID_PREVIEWFLAG_TYPE,false);
493 0 : if (pPreviewItem)
494 : {
495 0 : SetPreview(pPreviewItem->GetValue());
496 0 : Reset(&aSet);
497 : }
498 0 : if (pListItem && pListItem->GetValue())
499 : {
500 0 : std::vector<OUString> aFaxList;
501 0 : const std::vector<OUString>& rPrinters = Printer::GetPrinterQueues();
502 0 : for (unsigned int i = 0; i < rPrinters.size(); ++i)
503 0 : aFaxList.insert(aFaxList.begin(), rPrinters[i]);
504 0 : SetFax( aFaxList );
505 : }
506 0 : }
507 :
508 : // Tabpage Standardfonts
509 0 : SwStdFontTabPage::SwStdFontTabPage( vcl::Window* pParent,
510 : const SfxItemSet& rSet ) :
511 : SfxTabPage( pParent, "OptFontTabPage" , "modules/swriter/ui/optfonttabpage.ui" , &rSet),
512 : pPrt(0),
513 : pFontList(0),
514 : pFontConfig(0),
515 : pWrtShell(0),
516 0 : eLanguage( GetAppLanguage() ),
517 :
518 : bListDefault(false),
519 : bSetListDefault(true),
520 : bLabelDefault(false),
521 : bSetLabelDefault(true),
522 : bIdxDefault(false),
523 : bSetIdxDefault(true),
524 : bDeletePrinter(false),
525 :
526 : bListHeightDefault (false),
527 : bSetListHeightDefault (false),
528 : bLabelHeightDefault (false),
529 : bSetLabelHeightDefault(false),
530 : bIndexHeightDefault (false),
531 : bSetIndexHeightDefault (false),
532 :
533 : nFontGroup(FONT_GROUP_DEFAULT),
534 :
535 : sScriptWestern(SW_RES(ST_SCRIPT_WESTERN)),
536 : sScriptAsian(SW_RES(ST_SCRIPT_ASIAN)),
537 0 : sScriptComplex(SW_RES(ST_SCRIPT_CTL))
538 : {
539 0 : get(pLabelFT,"label1");
540 0 : get(pStandardBox,"standardbox");
541 0 : pStandardBox->SetStyle(pStandardBox->GetStyle() | WB_SORT);
542 0 : get(pStandardHeightLB,"standardheight");
543 0 : get(pTitleBox,"titlebox");
544 0 : pTitleBox->SetStyle(pTitleBox->GetStyle() | WB_SORT);
545 0 : get(pTitleHeightLB,"titleheight");
546 0 : get(pListBox,"listbox");
547 0 : pListBox->SetStyle(pListBox->GetStyle() | WB_SORT);
548 0 : get(pListHeightLB,"listheight");
549 0 : get(pLabelBox,"labelbox");
550 0 : pLabelBox->SetStyle(pLabelBox->GetStyle() | WB_SORT);
551 0 : get(pLabelHeightLB,"labelheight");
552 0 : get(pIdxBox,"idxbox");
553 0 : pIdxBox->SetStyle(pIdxBox->GetStyle() | WB_SORT);
554 0 : get(pIndexHeightLB,"indexheight");
555 :
556 0 : get(pDocOnlyCB,"doconly");
557 0 : get(pStandardPB,"standard");
558 :
559 0 : pStandardPB->SetClickHdl(LINK(this, SwStdFontTabPage, StandardHdl));
560 0 : pStandardBox->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
561 0 : pListBox ->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
562 0 : pLabelBox ->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
563 0 : pIdxBox ->SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
564 0 : Link aFocusLink = LINK( this, SwStdFontTabPage, LoseFocusHdl);
565 0 : pStandardBox->SetLoseFocusHdl( aFocusLink );
566 0 : pTitleBox ->SetLoseFocusHdl( aFocusLink );
567 0 : pListBox ->SetLoseFocusHdl( aFocusLink );
568 0 : pLabelBox ->SetLoseFocusHdl( aFocusLink );
569 0 : pIdxBox ->SetLoseFocusHdl( aFocusLink );
570 :
571 0 : Link aModifyHeightLink( LINK( this, SwStdFontTabPage, ModifyHeightHdl));
572 0 : pStandardHeightLB->SetModifyHdl( aModifyHeightLink );
573 0 : pTitleHeightLB-> SetModifyHdl( aModifyHeightLink );
574 0 : pListHeightLB-> SetModifyHdl( aModifyHeightLink );
575 0 : pLabelHeightLB-> SetModifyHdl( aModifyHeightLink );
576 0 : pIndexHeightLB-> SetModifyHdl( aModifyHeightLink );
577 :
578 0 : pDocOnlyCB->Check(SW_MOD()->GetModuleConfig()->IsDefaultFontInCurrDocOnly());
579 0 : }
580 :
581 0 : SwStdFontTabPage::~SwStdFontTabPage()
582 : {
583 0 : delete pFontList;
584 0 : if (bDeletePrinter)
585 : {
586 0 : delete pPrt;
587 : }
588 0 : }
589 :
590 0 : SfxTabPage* SwStdFontTabPage::Create( vcl::Window* pParent,
591 : const SfxItemSet* rAttrSet )
592 : {
593 0 : return new SwStdFontTabPage(pParent, *rAttrSet);
594 : }
595 :
596 0 : static void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
597 : SfxPrinter* pPrt, const OUString& rStyle,
598 : sal_uInt16 nFontWhich)
599 : {
600 0 : vcl::Font aFont( rStyle, Size( 0, 10 ) );
601 0 : if( pPrt )
602 0 : aFont = pPrt->GetFontMetric( aFont );
603 0 : SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
604 0 : pColl->SetFmtAttr(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
605 0 : aEmptyOUStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
606 0 : }
607 :
608 0 : static void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
609 : sal_Int32 nHeight, sal_uInt16 nFontHeightWhich)
610 : {
611 0 : float fSize = (float)nHeight / 10;
612 0 : nHeight = CalcToUnit( fSize, SFX_MAPUNIT_TWIP );
613 0 : SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
614 0 : pColl->SetFmtAttr(SvxFontHeightItem(nHeight, 100, nFontHeightWhich));
615 0 : }
616 :
617 0 : bool SwStdFontTabPage::FillItemSet( SfxItemSet* )
618 : {
619 0 : bool bNotDocOnly = !pDocOnlyCB->IsChecked();
620 0 : SW_MOD()->GetModuleConfig()->SetDefaultFontInCurrDocOnly(!bNotDocOnly);
621 :
622 0 : const OUString sStandard = pStandardBox->GetText();
623 0 : const OUString sTitle = pTitleBox->GetText();
624 0 : const OUString sList = pListBox->GetText();
625 0 : const OUString sLabel = pLabelBox->GetText();
626 0 : const OUString sIdx = pIdxBox->GetText();
627 :
628 0 : bool bStandardHeightChanged = pStandardHeightLB->IsValueChangedFromSaved();
629 0 : bool bTitleHeightChanged = pTitleHeightLB->IsValueChangedFromSaved();
630 0 : bool bListHeightChanged = pListHeightLB->IsValueChangedFromSaved() && (!bListHeightDefault || !bSetListHeightDefault );
631 0 : bool bLabelHeightChanged = pLabelHeightLB->IsValueChangedFromSaved() && (!bLabelHeightDefault || !bSetLabelHeightDefault );
632 0 : bool bIndexHeightChanged = pIndexHeightLB->IsValueChangedFromSaved() && (!bIndexHeightDefault || !bSetIndexHeightDefault );
633 0 : if(bNotDocOnly)
634 : {
635 0 : pFontConfig->SetFontStandard(sStandard, nFontGroup);
636 0 : pFontConfig->SetFontOutline(sTitle, nFontGroup);
637 0 : pFontConfig->SetFontList(sList, nFontGroup);
638 0 : pFontConfig->SetFontCaption(sLabel, nFontGroup);
639 0 : pFontConfig->SetFontIndex(sIdx, nFontGroup);
640 0 : if(bStandardHeightChanged)
641 : {
642 0 : float fSize = (float)pStandardHeightLB->GetValue() / 10;
643 0 : pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_STANDARD, nFontGroup );
644 : }
645 0 : if(bTitleHeightChanged)
646 : {
647 0 : float fSize = (float)pTitleHeightLB->GetValue() / 10;
648 0 : pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_OUTLINE, nFontGroup );
649 : }
650 0 : if(bListHeightChanged)
651 : {
652 0 : float fSize = (float)pListHeightLB->GetValue() / 10;
653 0 : pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_LIST, nFontGroup );
654 : }
655 0 : if(bLabelHeightChanged)
656 : {
657 0 : float fSize = (float)pLabelHeightLB->GetValue() / 10;
658 0 : pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_CAPTION, nFontGroup );
659 : }
660 0 : if(bIndexHeightChanged)
661 : {
662 0 : float fSize = (float)pIndexHeightLB->GetValue() / 10;
663 0 : pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_INDEX, nFontGroup );
664 : }
665 : }
666 0 : if(pWrtShell)
667 : {
668 0 : pWrtShell->StartAllAction();
669 0 : SfxPrinter* pPrinter = pWrtShell->getIDocumentDeviceAccess()->getPrinter( false );
670 0 : bool bMod = false;
671 : const sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
672 0 : nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONT :
673 0 : FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
674 : const sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
675 0 : nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONTSIZE :
676 0 : FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE);
677 0 : if(sStandard != sShellStd)
678 : {
679 0 : vcl::Font aFont( sStandard, Size( 0, 10 ) );
680 0 : if( pPrinter )
681 0 : aFont = pPrinter->GetFontMetric( aFont );
682 0 : pWrtShell->SetDefault(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
683 0 : aEmptyOUStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
684 0 : SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
685 0 : pColl->ResetFmtAttr(nFontWhich);
686 0 : bMod = true;
687 : }
688 0 : if(bStandardHeightChanged)
689 : {
690 0 : float fSize = (float)pStandardHeightLB->GetValue() / 10;
691 0 : pWrtShell->SetDefault(SvxFontHeightItem( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), 100, nFontHeightWhich ) );
692 0 : SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
693 0 : pColl->ResetFmtAttr(nFontHeightWhich);
694 0 : bMod = true;
695 : }
696 :
697 0 : if(sTitle != sShellTitle )
698 : {
699 0 : lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE, pPrinter, sTitle, nFontWhich);
700 0 : bMod = true;
701 : }
702 0 : if(bTitleHeightChanged)
703 : {
704 : lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE,
705 0 : sal::static_int_cast< sal_uInt16, sal_Int64 >(pTitleHeightLB->GetValue()), nFontHeightWhich);
706 0 : bMod = true;
707 : }
708 0 : if(sList != sShellList && (!bListDefault || !bSetListDefault ))
709 : {
710 0 : lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE, pPrinter, sList, nFontWhich);
711 0 : bMod = true;
712 : }
713 0 : if(bListHeightChanged)
714 : {
715 : lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE,
716 0 : sal::static_int_cast< sal_uInt16, sal_Int64 >(pListHeightLB->GetValue()), nFontHeightWhich);
717 0 : bMod = true;
718 : }
719 0 : if(sLabel != sShellLabel && (!bLabelDefault || !bSetLabelDefault))
720 : {
721 0 : lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL, pPrinter, sLabel, nFontWhich);
722 0 : bMod = true;
723 : }
724 0 : if(bLabelHeightChanged)
725 : {
726 : lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL,
727 0 : sal::static_int_cast< sal_uInt16, sal_Int64 >(pLabelHeightLB->GetValue()), nFontHeightWhich);
728 0 : bMod = true;
729 : }
730 0 : if(sIdx != sShellIndex && (!bIdxDefault || !bSetIdxDefault))
731 : {
732 0 : lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE, pPrinter, sIdx, nFontWhich);
733 0 : bMod = true;
734 : }
735 0 : if(bIndexHeightChanged)
736 : {
737 : lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE,
738 0 : sal::static_int_cast< sal_uInt16, sal_Int64 >(pIndexHeightLB->GetValue()), nFontHeightWhich);
739 0 : bMod = true;
740 : }
741 0 : if ( bMod )
742 0 : pWrtShell->SetModified();
743 0 : pWrtShell->EndAllAction();
744 : }
745 0 : return false;
746 : }
747 :
748 0 : void SwStdFontTabPage::Reset( const SfxItemSet* rSet)
749 : {
750 : const SfxPoolItem* pLang;
751 0 : const sal_uInt16 nLangSlot = nFontGroup == FONT_GROUP_DEFAULT ? SID_ATTR_LANGUAGE :
752 0 : FONT_GROUP_CJK == nFontGroup ? SID_ATTR_CHAR_CJK_LANGUAGE : SID_ATTR_CHAR_CTL_LANGUAGE;
753 :
754 0 : if( SfxItemState::SET == rSet->GetItemState(nLangSlot, false, &pLang))
755 0 : eLanguage = ((const SvxLanguageItem*)pLang)->GetValue();
756 :
757 0 : OUString sToReplace = sScriptWestern;
758 0 : if(FONT_GROUP_CJK == nFontGroup )
759 0 : sToReplace = sScriptAsian;
760 0 : else if(FONT_GROUP_CTL == nFontGroup )
761 0 : sToReplace = sScriptComplex;
762 0 : pLabelFT->SetText(pLabelFT->GetText().replaceFirst("%1", sToReplace));
763 :
764 : const SfxPoolItem* pItem;
765 :
766 0 : if (bDeletePrinter)
767 : {
768 0 : delete pPrt;
769 : }
770 :
771 0 : if(SfxItemState::SET == rSet->GetItemState(FN_PARAM_PRINTER, false, &pItem))
772 : {
773 0 : pPrt = (SfxPrinter*)((const SwPtrItem*)pItem)->GetValue();
774 : }
775 : else
776 : {
777 : SfxItemSet* pPrinterSet = new SfxItemSet( *rSet->GetPool(),
778 : SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
779 : SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
780 0 : 0 );
781 0 : pPrt = new SfxPrinter(pPrinterSet);
782 : }
783 0 : delete pFontList;
784 0 : pFontList = new FontList( pPrt );
785 : // #i94536# prevent duplication of font entries when 'reset' button is pressed
786 0 : if( !pStandardBox->GetEntryCount() )
787 : {
788 : // get the set of disctinct available family names
789 0 : std::set< OUString > aFontNames;
790 0 : int nFontNames = pPrt->GetDevFontCount();
791 0 : for( int i = 0; i < nFontNames; i++ )
792 : {
793 0 : vcl::FontInfo aInf( pPrt->GetDevFont( i ) );
794 0 : aFontNames.insert( aInf.GetName() );
795 0 : }
796 :
797 : // insert to listboxes
798 0 : for( std::set< OUString >::const_iterator it = aFontNames.begin();
799 0 : it != aFontNames.end(); ++it )
800 : {
801 0 : pStandardBox->InsertEntry( *it );
802 0 : pTitleBox->InsertEntry( *it );
803 0 : pListBox->InsertEntry( *it );
804 0 : pLabelBox->InsertEntry( *it );
805 0 : pIdxBox->InsertEntry( *it );
806 0 : }
807 : }
808 0 : if(SfxItemState::SET == rSet->GetItemState(FN_PARAM_STDFONTS, false, &pItem))
809 : {
810 0 : pFontConfig = (SwStdFontConfig*)((const SwPtrItem*)pItem)->GetValue();
811 : }
812 :
813 0 : if(SfxItemState::SET == rSet->GetItemState(FN_PARAM_WRTSHELL, false, &pItem))
814 : {
815 0 : pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
816 : }
817 0 : OUString sStdBackup;
818 0 : OUString sOutBackup;
819 0 : OUString sListBackup;
820 0 : OUString sCapBackup;
821 0 : OUString sIdxBackup;
822 0 : sal_Int32 nStandardHeight = -1;
823 0 : sal_Int32 nTitleHeight = -1;
824 0 : sal_Int32 nListHeight = -1;
825 0 : sal_Int32 nLabelHeight = -1;
826 0 : sal_Int32 nIndexHeight = -1;
827 :
828 0 : if(!pWrtShell)
829 : {
830 0 : sStdBackup = pFontConfig->GetFontStandard(nFontGroup);
831 0 : sOutBackup = pFontConfig->GetFontOutline(nFontGroup);
832 0 : sListBackup= pFontConfig->GetFontList(nFontGroup);
833 0 : sCapBackup = pFontConfig->GetFontCaption(nFontGroup);
834 0 : sIdxBackup = pFontConfig->GetFontIndex(nFontGroup);
835 0 : nStandardHeight = pFontConfig->GetFontHeight( FONT_STANDARD, nFontGroup, eLanguage );
836 0 : nTitleHeight = pFontConfig->GetFontHeight( FONT_OUTLINE , nFontGroup, eLanguage );
837 0 : nListHeight = pFontConfig->GetFontHeight( FONT_LIST , nFontGroup, eLanguage );
838 0 : nLabelHeight = pFontConfig->GetFontHeight( FONT_CAPTION , nFontGroup, eLanguage );
839 0 : nIndexHeight = pFontConfig->GetFontHeight( FONT_INDEX , nFontGroup, eLanguage );
840 0 : if( nStandardHeight <= 0)
841 0 : nStandardHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_STANDARD + nFontGroup * FONT_PER_GROUP, eLanguage);
842 0 : if( nTitleHeight <= 0)
843 0 : nTitleHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_OUTLINE + nFontGroup * FONT_PER_GROUP, eLanguage);
844 0 : if( nListHeight <= 0)
845 0 : nListHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_LIST + nFontGroup * FONT_PER_GROUP, eLanguage);
846 0 : if( nLabelHeight <= 0)
847 0 : nLabelHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_CAPTION + nFontGroup * FONT_PER_GROUP, eLanguage);
848 0 : if( nIndexHeight <= 0)
849 0 : nIndexHeight = SwStdFontConfig::GetDefaultHeightFor( FONT_INDEX + nFontGroup * FONT_PER_GROUP, eLanguage);
850 :
851 0 : pDocOnlyCB->Enable(false);
852 : }
853 : else
854 : {
855 0 : SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
856 0 : const SvxFontItem& rFont = !nFontGroup ? pColl->GetFont() :
857 0 : FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
858 0 : sShellStd = sStdBackup = rFont.GetFamilyName();
859 :
860 : const sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
861 0 : nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONTSIZE :
862 0 : FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE );
863 0 : const SvxFontHeightItem& rFontHeightStandard = (const SvxFontHeightItem& )pColl->GetFmtAttr(nFontHeightWhich);
864 0 : nStandardHeight = (sal_Int32)rFontHeightStandard.GetHeight();
865 :
866 0 : pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_HEADLINE_BASE);
867 0 : const SvxFontItem& rFontHL = !nFontGroup ? pColl->GetFont() :
868 0 : FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
869 0 : sShellTitle = sOutBackup = rFontHL.GetFamilyName();
870 :
871 0 : const SvxFontHeightItem& rFontHeightTitle = (const SvxFontHeightItem&)pColl->GetFmtAttr( nFontHeightWhich, true );
872 0 : nTitleHeight = (sal_Int32)rFontHeightTitle.GetHeight();
873 :
874 : const sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
875 0 : nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONT :
876 0 : FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
877 0 : pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_NUMBUL_BASE);
878 0 : const SvxFontItem& rFontLS = !nFontGroup ? pColl->GetFont() :
879 0 : FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
880 0 : bListDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
881 0 : sShellList = sListBackup = rFontLS.GetFamilyName();
882 :
883 0 : const SvxFontHeightItem& rFontHeightList = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, true);
884 0 : nListHeight = (sal_Int32)rFontHeightList.GetHeight();
885 0 : bListHeightDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
886 :
887 0 : pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_LABEL);
888 0 : bLabelDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
889 0 : const SvxFontItem& rFontCP = !nFontGroup ? pColl->GetFont() :
890 0 : FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
891 0 : sShellLabel = sCapBackup = rFontCP.GetFamilyName();
892 0 : const SvxFontHeightItem& rFontHeightLabel = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, true);
893 0 : nLabelHeight = (sal_Int32)rFontHeightLabel.GetHeight();
894 0 : bLabelHeightDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
895 :
896 0 : pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_REGISTER_BASE);
897 0 : bIdxDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
898 0 : const SvxFontItem& rFontIDX = !nFontGroup ? pColl->GetFont() :
899 0 : FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
900 0 : sShellIndex = sIdxBackup = rFontIDX.GetFamilyName();
901 0 : const SvxFontHeightItem& rFontHeightIndex = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, true);
902 0 : nIndexHeight = (sal_Int32)rFontHeightIndex.GetHeight();
903 0 : bIndexHeightDefault = SfxItemState::DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, false);
904 : }
905 0 : pStandardBox->SetText(sStdBackup );
906 0 : pTitleBox->SetText(sOutBackup );
907 0 : pListBox->SetText(sListBackup);
908 0 : pLabelBox->SetText(sCapBackup );
909 0 : pIdxBox->SetText(sIdxBackup );
910 :
911 0 : vcl::FontInfo aFontInfo( pFontList->Get(sStdBackup, sStdBackup) );
912 0 : pStandardHeightLB->Fill( &aFontInfo, pFontList );
913 0 : aFontInfo = pFontList->Get(sOutBackup, sOutBackup );
914 0 : pTitleHeightLB->Fill( &aFontInfo, pFontList );
915 0 : aFontInfo = pFontList->Get(sListBackup,sListBackup);
916 0 : pListHeightLB->Fill( &aFontInfo, pFontList );
917 0 : aFontInfo = pFontList->Get(sCapBackup, sCapBackup );
918 0 : pLabelHeightLB->Fill( &aFontInfo, pFontList );
919 0 : aFontInfo = pFontList->Get(sIdxBackup, sIdxBackup );
920 0 : pIndexHeightLB->Fill( &aFontInfo, pFontList );
921 :
922 0 : pStandardHeightLB->SetValue( CalcToPoint( nStandardHeight, SFX_MAPUNIT_TWIP, 10 ) );
923 0 : pTitleHeightLB-> SetValue( CalcToPoint( nTitleHeight , SFX_MAPUNIT_TWIP, 10 ) );
924 0 : pListHeightLB-> SetValue( CalcToPoint( nListHeight , SFX_MAPUNIT_TWIP, 10 ) );
925 0 : pLabelHeightLB-> SetValue( CalcToPoint( nLabelHeight , SFX_MAPUNIT_TWIP, 10 ));
926 0 : pIndexHeightLB-> SetValue( CalcToPoint( nIndexHeight , SFX_MAPUNIT_TWIP, 10 ));
927 :
928 0 : pStandardBox->SaveValue();
929 0 : pTitleBox->SaveValue();
930 0 : pListBox->SaveValue();
931 0 : pLabelBox->SaveValue();
932 0 : pIdxBox->SaveValue();
933 :
934 0 : pStandardHeightLB->SaveValue();
935 0 : pTitleHeightLB->SaveValue();
936 0 : pListHeightLB->SaveValue();
937 0 : pLabelHeightLB->SaveValue();
938 0 : pIndexHeightLB->SaveValue();
939 0 : }
940 :
941 0 : IMPL_LINK_NOARG(SwStdFontTabPage, StandardHdl)
942 : {
943 0 : sal_uInt8 nFontOffset = nFontGroup * FONT_PER_GROUP;
944 0 : pStandardBox->SetText(SwStdFontConfig::GetDefaultFor(FONT_STANDARD + nFontOffset, eLanguage));
945 0 : pTitleBox ->SetText(SwStdFontConfig::GetDefaultFor(FONT_OUTLINE + nFontOffset, eLanguage));
946 0 : pListBox ->SetText(SwStdFontConfig::GetDefaultFor(FONT_LIST + nFontOffset, eLanguage));
947 0 : pLabelBox ->SetText(SwStdFontConfig::GetDefaultFor(FONT_CAPTION + nFontOffset, eLanguage));
948 0 : pIdxBox ->SetText(SwStdFontConfig::GetDefaultFor(FONT_INDEX + nFontOffset, eLanguage));
949 :
950 0 : pStandardBox->SaveValue();
951 0 : pTitleBox->SaveValue();
952 0 : pListBox->SaveValue();
953 0 : pLabelBox->SaveValue();
954 0 : pIdxBox->SaveValue();
955 :
956 : pStandardHeightLB->SetValue( CalcToPoint(
957 0 : SwStdFontConfig::GetDefaultHeightFor(FONT_STANDARD + nFontOffset, eLanguage),
958 0 : SFX_MAPUNIT_TWIP, 10 ) );
959 : pTitleHeightLB ->SetValue(CalcToPoint(
960 : SwStdFontConfig::GetDefaultHeightFor(FONT_OUTLINE +
961 0 : nFontOffset, eLanguage), SFX_MAPUNIT_TWIP, 10 ));
962 : pListHeightLB ->SetValue(CalcToPoint(
963 0 : SwStdFontConfig::GetDefaultHeightFor(FONT_LIST + nFontOffset, eLanguage),
964 0 : SFX_MAPUNIT_TWIP, 10 ));
965 : pLabelHeightLB ->SetValue(CalcToPoint(
966 0 : SwStdFontConfig::GetDefaultHeightFor(FONT_CAPTION + nFontOffset, eLanguage),
967 0 : SFX_MAPUNIT_TWIP, 10 ));
968 : pIndexHeightLB ->SetValue(CalcToPoint(
969 0 : SwStdFontConfig::GetDefaultHeightFor(FONT_INDEX + nFontOffset, eLanguage),
970 0 : SFX_MAPUNIT_TWIP, 10 ));
971 0 : return 0;
972 : }
973 :
974 0 : IMPL_LINK( SwStdFontTabPage, ModifyHdl, ComboBox*, pBox )
975 : {
976 0 : if(pBox == pStandardBox)
977 : {
978 0 : const OUString sEntry = pBox->GetText();
979 0 : if(bSetListDefault && bListDefault)
980 0 : pListBox->SetText(sEntry);
981 0 : if(bSetLabelDefault && bLabelDefault)
982 0 : pLabelBox->SetText(sEntry);
983 0 : if(bSetIdxDefault && bIdxDefault)
984 0 : pIdxBox->SetText(sEntry);
985 : }
986 0 : else if(pBox == pListBox)
987 : {
988 0 : bSetListDefault = false;
989 : }
990 0 : else if(pBox == pLabelBox)
991 : {
992 0 : bSetLabelDefault = false;
993 : }
994 0 : else if(pBox == pIdxBox)
995 : {
996 0 : bSetIdxDefault = false;
997 : }
998 0 : return 0;
999 : }
1000 :
1001 0 : IMPL_LINK( SwStdFontTabPage, ModifyHeightHdl, FontSizeBox*, pBox )
1002 : {
1003 0 : if(pBox == pStandardHeightLB)
1004 : {
1005 0 : sal_Int64 nValue = pBox->GetValue(FUNIT_TWIP);
1006 0 : if(bSetListHeightDefault && bListHeightDefault)
1007 0 : pListHeightLB->SetValue(nValue, FUNIT_TWIP);
1008 0 : if(bSetLabelHeightDefault && bLabelHeightDefault)
1009 0 : pLabelHeightLB->SetValue(nValue, FUNIT_TWIP);
1010 0 : if(bSetIndexHeightDefault && bIndexHeightDefault)
1011 0 : pIndexHeightLB->SetValue(nValue, FUNIT_TWIP);
1012 : }
1013 0 : else if(pBox == pListHeightLB)
1014 : {
1015 0 : bSetListHeightDefault = false;
1016 : }
1017 0 : else if(pBox == pLabelHeightLB)
1018 : {
1019 0 : bSetLabelHeightDefault = false;
1020 : }
1021 0 : else if(pBox == pIndexHeightLB)
1022 : {
1023 0 : bSetIndexHeightDefault = false;
1024 : }
1025 0 : return 0;
1026 : }
1027 :
1028 0 : IMPL_LINK( SwStdFontTabPage, LoseFocusHdl, ComboBox*, pBox )
1029 : {
1030 0 : FontSizeBox* pHeightLB = 0;
1031 0 : const OUString sEntry = pBox->GetText();
1032 0 : if(pBox == pStandardBox)
1033 : {
1034 0 : pHeightLB = pStandardHeightLB;
1035 : }
1036 0 : else if(pBox == pTitleBox)
1037 : {
1038 0 : pHeightLB = pTitleHeightLB;
1039 : }
1040 0 : else if(pBox == pListBox)
1041 : {
1042 0 : pHeightLB = pListHeightLB;
1043 : }
1044 0 : else if(pBox == pLabelBox)
1045 : {
1046 0 : pHeightLB = pLabelHeightLB;
1047 : }
1048 : else /*if(pBox == pIdxBox)*/
1049 : {
1050 0 : pHeightLB = pIndexHeightLB;
1051 : }
1052 0 : vcl::FontInfo aFontInfo( pFontList->Get(sEntry, sEntry) );
1053 0 : pHeightLB->Fill( &aFontInfo, pFontList );
1054 0 : return 0;
1055 : }
1056 :
1057 0 : void SwStdFontTabPage::PageCreated( const SfxAllItemSet& aSet)
1058 : {
1059 0 : SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt16Item, SID_FONTMODE_TYPE, false);
1060 0 : if (pFlagItem)
1061 0 : SetFontMode(sal::static_int_cast< sal_uInt8, sal_uInt16>( pFlagItem->GetValue()));
1062 0 : }
1063 :
1064 0 : SwTableOptionsTabPage::SwTableOptionsTabPage( vcl::Window* pParent, const SfxItemSet& rSet ) :
1065 : SfxTabPage(pParent, "OptTablePage", "modules/swriter/ui/opttablepage.ui", &rSet),
1066 : pWrtShell(0),
1067 0 : bHTMLMode(false)
1068 : {
1069 0 : get(pHeaderCB,"header");
1070 0 : get(pRepeatHeaderCB,"repeatheader");
1071 0 : get(pDontSplitCB,"dontsplit");
1072 0 : get(pBorderCB,"border");
1073 0 : get(pNumFormattingCB,"numformatting");
1074 0 : get(pNumFmtFormattingCB,"numfmtformatting");
1075 0 : get(pNumAlignmentCB,"numalignment");
1076 0 : get(pRowMoveMF,"rowmove");
1077 0 : get(pColMoveMF,"colmove");
1078 0 : get(pRowInsertMF,"rowinsert");
1079 0 : get(pColInsertMF,"colinsert");
1080 0 : get(pFixRB,"fix");
1081 0 : get(pFixPropRB,"fixprop");
1082 0 : get(pVarRB,"var");
1083 :
1084 0 : Link aLnk(LINK(this, SwTableOptionsTabPage, CheckBoxHdl));
1085 0 : pNumFormattingCB->SetClickHdl(aLnk);
1086 0 : pNumFmtFormattingCB->SetClickHdl(aLnk);
1087 0 : pHeaderCB->SetClickHdl(aLnk);
1088 0 : }
1089 :
1090 0 : SwTableOptionsTabPage::~SwTableOptionsTabPage()
1091 : {
1092 0 : }
1093 :
1094 0 : SfxTabPage* SwTableOptionsTabPage::Create( vcl::Window* pParent,
1095 : const SfxItemSet* rAttrSet )
1096 : {
1097 0 : return new SwTableOptionsTabPage(pParent, *rAttrSet );
1098 : }
1099 :
1100 0 : bool SwTableOptionsTabPage::FillItemSet( SfxItemSet* )
1101 : {
1102 0 : bool bRet = false;
1103 0 : SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
1104 :
1105 0 : if(pRowMoveMF->IsModified())
1106 0 : pModOpt->SetTblHMove( (sal_uInt16)pRowMoveMF->Denormalize( pRowMoveMF->GetValue(FUNIT_TWIP)));
1107 :
1108 0 : if(pColMoveMF->IsModified())
1109 0 : pModOpt->SetTblVMove( (sal_uInt16)pColMoveMF->Denormalize( pColMoveMF->GetValue(FUNIT_TWIP)));
1110 :
1111 0 : if(pRowInsertMF->IsModified())
1112 0 : pModOpt->SetTblHInsert((sal_uInt16)pRowInsertMF->Denormalize( pRowInsertMF->GetValue(FUNIT_TWIP)));
1113 :
1114 0 : if(pColInsertMF->IsModified())
1115 0 : pModOpt->SetTblVInsert((sal_uInt16)pColInsertMF->Denormalize( pColInsertMF->GetValue(FUNIT_TWIP)));
1116 :
1117 : TblChgMode eMode;
1118 0 : if(pFixRB->IsChecked())
1119 0 : eMode = TBLFIX_CHGABS;
1120 0 : else if(pFixPropRB->IsChecked())
1121 0 : eMode = TBLFIX_CHGPROP;
1122 : else
1123 0 : eMode = TBLVAR_CHGABS;
1124 0 : if(eMode != pModOpt->GetTblMode())
1125 : {
1126 0 : pModOpt->SetTblMode(eMode);
1127 : // the table-keyboard-mode has changed, now the current
1128 : // table should know about that too.
1129 0 : if(pWrtShell && nsSelectionType::SEL_TBL & pWrtShell->GetSelectionType())
1130 : {
1131 0 : pWrtShell->SetTblChgMode(eMode);
1132 : static sal_uInt16 aInva[] =
1133 : { FN_TABLE_MODE_FIX,
1134 : FN_TABLE_MODE_FIX_PROP,
1135 : FN_TABLE_MODE_VARIABLE,
1136 : 0
1137 : };
1138 0 : pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
1139 : }
1140 :
1141 0 : bRet = true;
1142 : }
1143 :
1144 0 : SwInsertTableOptions aInsOpts( 0, 0 );
1145 :
1146 0 : if (pHeaderCB->IsChecked())
1147 0 : aInsOpts.mnInsMode |= tabopts::HEADLINE;
1148 :
1149 0 : if (pRepeatHeaderCB->IsEnabled() )
1150 0 : aInsOpts.mnRowsToRepeat = pRepeatHeaderCB->IsChecked()? 1 : 0;
1151 :
1152 0 : if (!pDontSplitCB->IsChecked())
1153 0 : aInsOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
1154 :
1155 0 : if (pBorderCB->IsChecked())
1156 0 : aInsOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
1157 :
1158 0 : if (pHeaderCB->IsValueChangedFromSaved() ||
1159 0 : pRepeatHeaderCB->IsValueChangedFromSaved() ||
1160 0 : pDontSplitCB->IsValueChangedFromSaved() ||
1161 0 : pBorderCB->IsValueChangedFromSaved())
1162 : {
1163 0 : pModOpt->SetInsTblFlags(bHTMLMode, aInsOpts);
1164 : }
1165 :
1166 0 : if (pNumFormattingCB->IsValueChangedFromSaved())
1167 : {
1168 0 : pModOpt->SetInsTblFormatNum(bHTMLMode, pNumFormattingCB->IsChecked());
1169 0 : bRet = true;
1170 : }
1171 :
1172 0 : if (pNumFmtFormattingCB->IsValueChangedFromSaved())
1173 : {
1174 0 : pModOpt->SetInsTblChangeNumFormat(bHTMLMode, pNumFmtFormattingCB->IsChecked());
1175 0 : bRet = true;
1176 : }
1177 :
1178 0 : if (pNumAlignmentCB->IsValueChangedFromSaved())
1179 : {
1180 0 : pModOpt->SetInsTblAlignNum(bHTMLMode, pNumAlignmentCB->IsChecked());
1181 0 : bRet = true;
1182 : }
1183 :
1184 0 : return bRet;
1185 : }
1186 :
1187 0 : void SwTableOptionsTabPage::Reset( const SfxItemSet* rSet)
1188 : {
1189 0 : const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
1190 0 : if ( rSet->GetItemState( SID_ATTR_METRIC ) >= SfxItemState::DEFAULT )
1191 : {
1192 0 : const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet->Get( SID_ATTR_METRIC );
1193 0 : FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
1194 0 : ::SetFieldUnit( *pRowMoveMF, eFieldUnit );
1195 0 : ::SetFieldUnit( *pColMoveMF, eFieldUnit );
1196 0 : ::SetFieldUnit( *pRowInsertMF, eFieldUnit );
1197 0 : ::SetFieldUnit( *pColInsertMF, eFieldUnit );
1198 : }
1199 :
1200 0 : pRowMoveMF->SetValue(pRowMoveMF->Normalize(pModOpt->GetTblHMove()), FUNIT_TWIP);
1201 0 : pColMoveMF->SetValue(pColMoveMF->Normalize(pModOpt->GetTblVMove()), FUNIT_TWIP);
1202 0 : pRowInsertMF->SetValue(pRowInsertMF->Normalize(pModOpt->GetTblHInsert()), FUNIT_TWIP);
1203 0 : pColInsertMF->SetValue(pColInsertMF->Normalize(pModOpt->GetTblVInsert()), FUNIT_TWIP);
1204 :
1205 0 : switch(pModOpt->GetTblMode())
1206 : {
1207 0 : case TBLFIX_CHGABS: pFixRB->Check(); break;
1208 0 : case TBLFIX_CHGPROP: pFixPropRB->Check(); break;
1209 0 : case TBLVAR_CHGABS: pVarRB->Check(); break;
1210 : }
1211 : const SfxPoolItem* pItem;
1212 0 : if(SfxItemState::SET == rSet->GetItemState(SID_HTML_MODE, false, &pItem))
1213 : {
1214 0 : bHTMLMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
1215 : }
1216 :
1217 : // hide certain controls for html
1218 0 : if(bHTMLMode)
1219 : {
1220 0 : pRepeatHeaderCB->Hide();
1221 0 : pDontSplitCB->Hide();
1222 : }
1223 :
1224 0 : SwInsertTableOptions aInsOpts = pModOpt->GetInsTblFlags(bHTMLMode);
1225 0 : const sal_uInt16 nInsTblFlags = aInsOpts.mnInsMode;
1226 :
1227 0 : pHeaderCB->Check(0 != (nInsTblFlags & tabopts::HEADLINE));
1228 0 : pRepeatHeaderCB->Check((!bHTMLMode) && (aInsOpts.mnRowsToRepeat > 0));
1229 0 : pDontSplitCB->Check(!(nInsTblFlags & tabopts::SPLIT_LAYOUT));
1230 0 : pBorderCB->Check(0 != (nInsTblFlags & tabopts::DEFAULT_BORDER));
1231 :
1232 0 : pNumFormattingCB->Check(pModOpt->IsInsTblFormatNum(bHTMLMode));
1233 0 : pNumFmtFormattingCB->Check(pModOpt->IsInsTblChangeNumFormat(bHTMLMode));
1234 0 : pNumAlignmentCB->Check(pModOpt->IsInsTblAlignNum(bHTMLMode));
1235 :
1236 0 : pHeaderCB->SaveValue();
1237 0 : pRepeatHeaderCB->SaveValue();
1238 0 : pDontSplitCB->SaveValue();
1239 0 : pBorderCB->SaveValue();
1240 0 : pNumFormattingCB->SaveValue();
1241 0 : pNumFmtFormattingCB->SaveValue();
1242 0 : pNumAlignmentCB->SaveValue();
1243 :
1244 0 : CheckBoxHdl(0);
1245 0 : }
1246 :
1247 0 : IMPL_LINK_NOARG(SwTableOptionsTabPage, CheckBoxHdl)
1248 : {
1249 0 : pNumFmtFormattingCB->Enable(pNumFormattingCB->IsChecked());
1250 0 : pNumAlignmentCB->Enable(pNumFormattingCB->IsChecked());
1251 0 : pRepeatHeaderCB->Enable(pHeaderCB->IsChecked());
1252 0 : return 0;
1253 : }
1254 :
1255 0 : void SwTableOptionsTabPage::PageCreated( const SfxAllItemSet& aSet)
1256 : {
1257 0 : SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,false);
1258 0 : if (pWrtSh)
1259 0 : SetWrtShell(pWrtSh->GetValue());
1260 0 : }
1261 :
1262 0 : SwShdwCrsrOptionsTabPage::SwShdwCrsrOptionsTabPage( vcl::Window* pParent,
1263 : const SfxItemSet& rSet )
1264 : : SfxTabPage(pParent, "OptFormatAidsPage",
1265 : "modules/swriter/ui/optformataidspage.ui", &rSet),
1266 0 : m_pWrtShell( NULL )
1267 : {
1268 0 : get(m_pParaCB, "paragraph");
1269 0 : get(m_pSHyphCB, "hyphens");
1270 0 : get(m_pSpacesCB, "spaces");
1271 0 : get(m_pHSpacesCB, "nonbreak");
1272 0 : get(m_pTabCB, "tabs");
1273 0 : get(m_pBreakCB, "break");
1274 0 : get(m_pCharHiddenCB, "hiddentext");
1275 0 : get(m_pFldHiddenCB, "hiddentextfield");
1276 0 : get(m_pFldHiddenParaCB, "hiddenparafield");
1277 :
1278 0 : get(m_pDirectCursorFrame, "directcrsrframe");
1279 0 : get(m_pOnOffCB, "cursoronoff");
1280 :
1281 0 : get(m_pFillMarginRB, "fillmargin");
1282 0 : get(m_pFillIndentRB, "fillindent");
1283 0 : get(m_pFillTabRB, "filltab");
1284 0 : get(m_pFillSpaceRB, "fillspace");
1285 :
1286 0 : get(m_pCursorProtFrame, "crsrprotframe");
1287 0 : get(m_pCrsrInProtCB, "cursorinprot");
1288 :
1289 0 : get(m_pMathBaselineAlignmentCB, "mathbaseline");
1290 :
1291 0 : const SfxPoolItem* pItem = 0;
1292 :
1293 0 : SwShadowCursorItem aOpt;
1294 0 : if( SfxItemState::SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, false, &pItem ))
1295 0 : aOpt = *(SwShadowCursorItem*)pItem;
1296 0 : m_pOnOffCB->Check( aOpt.IsOn() );
1297 :
1298 0 : sal_uInt8 eMode = aOpt.GetMode();
1299 0 : m_pFillIndentRB->Check( FILL_INDENT == eMode );
1300 0 : m_pFillMarginRB->Check( FILL_MARGIN == eMode );
1301 0 : m_pFillTabRB->Check( FILL_TAB == eMode );
1302 0 : m_pFillSpaceRB->Check( FILL_SPACE == eMode );
1303 :
1304 0 : if(SfxItemState::SET == rSet.GetItemState(SID_HTML_MODE, false, &pItem )
1305 0 : && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
1306 : {
1307 0 : m_pTabCB->Hide();
1308 0 : m_pCharHiddenCB->Hide();
1309 0 : m_pFldHiddenCB->Hide();
1310 0 : m_pFldHiddenParaCB->Hide();
1311 :
1312 0 : m_pDirectCursorFrame->Hide();
1313 0 : m_pOnOffCB->Hide();
1314 0 : m_pFillMarginRB->Hide();
1315 0 : m_pFillIndentRB->Hide();
1316 0 : m_pFillTabRB->Hide();
1317 0 : m_pFillSpaceRB->Hide();
1318 :
1319 0 : m_pCursorProtFrame->Hide();
1320 0 : m_pCrsrInProtCB->Hide();
1321 0 : }
1322 0 : }
1323 :
1324 0 : SwShdwCrsrOptionsTabPage::~SwShdwCrsrOptionsTabPage()
1325 : {
1326 0 : }
1327 :
1328 0 : SfxTabPage* SwShdwCrsrOptionsTabPage::Create( vcl::Window* pParent, const SfxItemSet* rSet )
1329 : {
1330 0 : return new SwShdwCrsrOptionsTabPage( pParent, *rSet );
1331 : }
1332 :
1333 0 : void SwShdwCrsrOptionsTabPage::PageCreated( const SfxAllItemSet& aSet )
1334 : {
1335 0 : SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,false);
1336 0 : if (pWrtSh)
1337 0 : SetWrtShell(pWrtSh->GetValue());
1338 0 : }
1339 :
1340 0 : bool SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet* rSet )
1341 : {
1342 0 : SwShadowCursorItem aOpt;
1343 0 : aOpt.SetOn( m_pOnOffCB->IsChecked() );
1344 :
1345 : sal_uInt8 eMode;
1346 0 : if( m_pFillIndentRB->IsChecked() )
1347 0 : eMode= FILL_INDENT;
1348 0 : else if( m_pFillMarginRB->IsChecked() )
1349 0 : eMode = FILL_MARGIN;
1350 0 : else if( m_pFillTabRB->IsChecked() )
1351 0 : eMode = FILL_TAB;
1352 : else
1353 0 : eMode = FILL_SPACE;
1354 0 : aOpt.SetMode( eMode );
1355 :
1356 0 : bool bRet = false;
1357 0 : const SfxPoolItem* pItem = 0;
1358 0 : if( SfxItemState::SET != rSet->GetItemState( FN_PARAM_SHADOWCURSOR, false, &pItem )
1359 0 : || ((SwShadowCursorItem&)*pItem) != aOpt )
1360 : {
1361 0 : rSet->Put( aOpt );
1362 0 : bRet = true;
1363 : }
1364 :
1365 0 : if (m_pWrtShell) {
1366 0 : m_pWrtShell->GetDoc()->getIDocumentSettingAccess().set( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
1367 0 : m_pMathBaselineAlignmentCB->IsChecked() );
1368 0 : bRet |= m_pMathBaselineAlignmentCB->IsValueChangedFromSaved();
1369 : }
1370 :
1371 0 : if( m_pCrsrInProtCB->IsValueChangedFromSaved())
1372 : {
1373 0 : rSet->Put(SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, m_pCrsrInProtCB->IsChecked()));
1374 0 : bRet = true;
1375 : }
1376 :
1377 : const SwDocDisplayItem* pOldAttr = (const SwDocDisplayItem*)
1378 0 : GetOldItem(GetItemSet(), FN_PARAM_DOCDISP);
1379 :
1380 0 : SwDocDisplayItem aDisp;
1381 0 : if(pOldAttr)
1382 0 : aDisp = *pOldAttr;
1383 :
1384 0 : aDisp.bParagraphEnd = m_pParaCB->IsChecked();
1385 0 : aDisp.bTab = m_pTabCB->IsChecked();
1386 0 : aDisp.bSpace = m_pSpacesCB->IsChecked();
1387 0 : aDisp.bNonbreakingSpace = m_pHSpacesCB->IsChecked();
1388 0 : aDisp.bSoftHyphen = m_pSHyphCB->IsChecked();
1389 0 : aDisp.bFldHiddenText = m_pFldHiddenCB->IsChecked();
1390 0 : aDisp.bCharHiddenText = m_pCharHiddenCB->IsChecked();
1391 0 : aDisp.bShowHiddenPara = m_pFldHiddenParaCB->IsChecked();
1392 0 : aDisp.bManualBreak = m_pBreakCB->IsChecked();
1393 :
1394 0 : bRet |= (!pOldAttr || aDisp != *pOldAttr);
1395 0 : if(bRet)
1396 0 : bRet = 0 != rSet->Put(aDisp);
1397 :
1398 0 : return bRet;
1399 : }
1400 :
1401 0 : void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet* rSet )
1402 : {
1403 0 : const SfxPoolItem* pItem = 0;
1404 :
1405 0 : SwShadowCursorItem aOpt;
1406 0 : if( SfxItemState::SET == rSet->GetItemState( FN_PARAM_SHADOWCURSOR, false, &pItem ))
1407 0 : aOpt = *(SwShadowCursorItem*)pItem;
1408 0 : m_pOnOffCB->Check( aOpt.IsOn() );
1409 :
1410 0 : sal_uInt8 eMode = aOpt.GetMode();
1411 0 : m_pFillIndentRB->Check( FILL_INDENT == eMode );
1412 0 : m_pFillMarginRB->Check( FILL_MARGIN == eMode );
1413 0 : m_pFillTabRB->Check( FILL_TAB == eMode );
1414 0 : m_pFillSpaceRB->Check( FILL_SPACE == eMode );
1415 :
1416 0 : if (m_pWrtShell) {
1417 0 : m_pMathBaselineAlignmentCB->Check( m_pWrtShell->GetDoc()->getIDocumentSettingAccess().get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
1418 0 : m_pMathBaselineAlignmentCB->SaveValue();
1419 : } else {
1420 0 : m_pMathBaselineAlignmentCB->Hide();
1421 : }
1422 :
1423 0 : if( SfxItemState::SET == rSet->GetItemState( FN_PARAM_CRSR_IN_PROTECTED, false, &pItem ))
1424 0 : m_pCrsrInProtCB->Check(((const SfxBoolItem*)pItem)->GetValue());
1425 0 : m_pCrsrInProtCB->SaveValue();
1426 :
1427 0 : const SwDocDisplayItem* pDocDisplayAttr = 0;
1428 :
1429 : rSet->GetItemState( FN_PARAM_DOCDISP, false,
1430 0 : (const SfxPoolItem**)&pDocDisplayAttr );
1431 0 : if(pDocDisplayAttr)
1432 : {
1433 0 : m_pParaCB->Check ( pDocDisplayAttr->bParagraphEnd );
1434 0 : m_pTabCB->Check ( pDocDisplayAttr->bTab );
1435 0 : m_pSpacesCB->Check ( pDocDisplayAttr->bSpace );
1436 0 : m_pHSpacesCB->Check ( pDocDisplayAttr->bNonbreakingSpace );
1437 0 : m_pSHyphCB->Check ( pDocDisplayAttr->bSoftHyphen );
1438 0 : m_pCharHiddenCB->Check ( pDocDisplayAttr->bCharHiddenText );
1439 0 : m_pFldHiddenCB->Check ( pDocDisplayAttr->bFldHiddenText );
1440 0 : m_pFldHiddenParaCB->Check ( pDocDisplayAttr->bShowHiddenPara );
1441 0 : m_pBreakCB->Check ( pDocDisplayAttr->bManualBreak );
1442 0 : }
1443 0 : }
1444 :
1445 : // TabPage for Redlining
1446 : struct CharAttr
1447 : {
1448 : sal_uInt16 nItemId;
1449 : sal_uInt16 nAttr;
1450 : };
1451 :
1452 : // Edit corresponds to Paste-attributes
1453 : static CharAttr aRedlineAttr[] =
1454 : {
1455 : { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_NOT_MAPPED },
1456 : { SID_ATTR_CHAR_WEIGHT, WEIGHT_BOLD },
1457 : { SID_ATTR_CHAR_POSTURE, ITALIC_NORMAL },
1458 : { SID_ATTR_CHAR_UNDERLINE, UNDERLINE_SINGLE },
1459 : { SID_ATTR_CHAR_UNDERLINE, UNDERLINE_DOUBLE },
1460 : { SID_ATTR_CHAR_STRIKEOUT, STRIKEOUT_SINGLE },
1461 : { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_VERSALIEN },
1462 : { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_GEMEINE },
1463 : { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_KAPITAELCHEN },
1464 : { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_TITEL },
1465 : { SID_ATTR_BRUSH, 0 }
1466 : };
1467 : // Items from aRedlineAttr relevant for InsertAttr: strikethrough is
1468 : // not used
1469 : static sal_uInt16 aInsertAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
1470 :
1471 : // Items from aRedlineAttr relevant for DeleteAttr: underline and
1472 : // double underline is not used
1473 : static sal_uInt16 aDeletedAttrMap[] = { 0, 1, 2, 5, 6, 7, 8, 9, 10 };
1474 :
1475 : // Items from aRedlineAttr relevant for ChangeAttr: strikethrough is
1476 : // not used
1477 : static sal_uInt16 aChangedAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
1478 :
1479 : // Preview of selection
1480 0 : SwMarkPreview::SwMarkPreview( vcl::Window *pParent, WinBits nWinBits ) :
1481 :
1482 : Window(pParent, nWinBits),
1483 : m_aTransCol( COL_TRANSPARENT ),
1484 : m_aMarkCol( COL_LIGHTRED ),
1485 0 : nMarkPos(0)
1486 :
1487 : {
1488 0 : m_aInitialSize = getPreviewOptionsSize(this);
1489 0 : InitColors();
1490 0 : SetMapMode(MAP_PIXEL);
1491 0 : }
1492 :
1493 0 : extern "C" SAL_DLLPUBLIC_EXPORT vcl::Window* SAL_CALL makeSwMarkPreview(vcl::Window *pParent, VclBuilder::stringmap &)
1494 : {
1495 0 : return new SwMarkPreview(pParent, 0);
1496 : }
1497 :
1498 0 : SwMarkPreview::~SwMarkPreview()
1499 : {
1500 0 : }
1501 :
1502 0 : void SwMarkPreview::InitColors( void )
1503 : {
1504 : // m_aTransCol and m_aMarkCol are _not_ changed because they are set from outside!
1505 :
1506 0 : const StyleSettings& rSettings = GetSettings().GetStyleSettings();
1507 0 : m_aBgCol = Color( rSettings.GetWindowColor() );
1508 :
1509 0 : bool bHC = rSettings.GetHighContrastMode();
1510 0 : m_aLineCol = bHC? SwViewOption::GetFontColor() : Color( COL_BLACK );
1511 0 : m_aShadowCol = bHC? m_aBgCol : rSettings.GetShadowColor();
1512 0 : m_aTxtCol = bHC? SwViewOption::GetFontColor() : Color( COL_GRAY );
1513 0 : m_aPrintAreaCol = m_aTxtCol;
1514 0 : }
1515 :
1516 0 : void SwMarkPreview::DataChanged( const DataChangedEvent& rDCEvt )
1517 : {
1518 0 : Window::DataChanged( rDCEvt );
1519 :
1520 0 : if( rDCEvt.GetType() == DATACHANGED_SETTINGS && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
1521 0 : InitColors();
1522 0 : }
1523 :
1524 0 : void SwMarkPreview::Paint(const Rectangle &/*rRect*/)
1525 : {
1526 0 : const Size aSz(GetOutputSizePixel());
1527 :
1528 : // Page
1529 0 : aPage.SetSize(Size(aSz.Width() - 3, aSz.Height() - 3));
1530 :
1531 0 : const long nOutWPix = aPage.GetWidth();
1532 0 : const long nOutHPix = aPage.GetHeight();
1533 :
1534 : // PrintArea
1535 0 : const long nLBorder = 8;
1536 0 : const long nRBorder = 8;
1537 0 : const long nTBorder = 4;
1538 0 : const long nBBorder = 4;
1539 :
1540 0 : aLeftPagePrtArea = Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
1541 0 : const long nWidth = aLeftPagePrtArea.GetWidth();
1542 0 : const long nKorr = (nWidth & 1) != 0 ? 0 : 1;
1543 0 : aLeftPagePrtArea.SetSize(Size(nWidth / 2 - (nLBorder + nRBorder) / 2 + nKorr, aLeftPagePrtArea.GetHeight()));
1544 :
1545 0 : aRightPagePrtArea = aLeftPagePrtArea;
1546 0 : aRightPagePrtArea.Move(aLeftPagePrtArea.GetWidth() + nLBorder + nRBorder + 1, 0);
1547 :
1548 : // draw shadow
1549 0 : Rectangle aShadow(aPage);
1550 0 : aShadow += Point(3, 3);
1551 0 : DrawRect( aShadow, m_aShadowCol, m_aTransCol );
1552 :
1553 : // draw page
1554 0 : DrawRect( aPage, m_aBgCol, m_aLineCol );
1555 :
1556 : // draw separator
1557 0 : Rectangle aPageSeparator(aPage);
1558 0 : aPageSeparator.SetSize(Size(2, aPageSeparator.GetHeight()));
1559 0 : aPageSeparator.Move(aPage.GetWidth() / 2 - 1, 0);
1560 0 : DrawRect( aPageSeparator, m_aLineCol, m_aTransCol );
1561 :
1562 0 : PaintPage(aLeftPagePrtArea);
1563 0 : PaintPage(aRightPagePrtArea);
1564 :
1565 0 : Rectangle aLeftMark(Point(aPage.Left() + 2, aLeftPagePrtArea.Top() + 4), Size(aLeftPagePrtArea.Left() - 4, 2));
1566 0 : Rectangle aRightMark(Point(aRightPagePrtArea.Right() + 2, aRightPagePrtArea.Bottom() - 6), Size(aLeftPagePrtArea.Left() - 4, 2));
1567 :
1568 0 : switch (nMarkPos)
1569 : {
1570 : case 1: // left
1571 0 : aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
1572 0 : break;
1573 :
1574 : case 2: // right
1575 0 : aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
1576 0 : break;
1577 :
1578 : case 3: // outside
1579 0 : break;
1580 :
1581 : case 4: // inside
1582 0 : aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
1583 0 : aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
1584 0 : break;
1585 :
1586 : case 0: // none
1587 : default:
1588 0 : return;
1589 : }
1590 0 : DrawRect( aLeftMark, m_aMarkCol, m_aTransCol );
1591 0 : DrawRect( aRightMark, m_aMarkCol, m_aTransCol );
1592 : }
1593 :
1594 0 : void SwMarkPreview::PaintPage(const Rectangle &rRect)
1595 : {
1596 : // draw PrintArea
1597 0 : DrawRect(rRect, m_aTransCol, m_aPrintAreaCol );
1598 :
1599 : // draw Testparagraph
1600 0 : sal_uLong nLTxtBorder = 4;
1601 0 : sal_uLong nRTxtBorder = 4;
1602 0 : sal_uLong nTTxtBorder = 4;
1603 :
1604 0 : Rectangle aTextLine = rRect;
1605 0 : aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
1606 0 : aTextLine.Left() += nLTxtBorder;
1607 0 : aTextLine.Right() -= nRTxtBorder;
1608 0 : aTextLine.Move(0, nTTxtBorder);
1609 :
1610 0 : const long nStep = aTextLine.GetHeight() + 2;
1611 0 : const long nLines = rRect.GetHeight() / (aTextLine.GetHeight() + 2) - 1;
1612 :
1613 : // simulate text
1614 0 : for (long i = 0; i < nLines; ++i)
1615 : {
1616 0 : if (i == (nLines - 1))
1617 0 : aTextLine.SetSize(Size(aTextLine.GetWidth() / 2, aTextLine.GetHeight()));
1618 :
1619 0 : if (aPage.IsInside(aTextLine))
1620 0 : DrawRect(aTextLine, m_aTxtCol, m_aTransCol );
1621 :
1622 0 : aTextLine.Move(0, nStep);
1623 : }
1624 0 : aTextLine.Move(0, -nStep);
1625 0 : }
1626 :
1627 0 : void SwMarkPreview::DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor)
1628 : {
1629 0 : SetFillColor(rFillColor);
1630 0 : SetLineColor(rLineColor);
1631 0 : Window::DrawRect(rRect);
1632 0 : }
1633 :
1634 0 : Size SwMarkPreview::GetOptimalSize() const
1635 : {
1636 0 : return m_aInitialSize;
1637 : }
1638 :
1639 : namespace
1640 : {
1641 0 : void lcl_FillRedlineAttrListBox(
1642 : ListBox& rLB, const AuthorCharAttr& rAttrToSelect,
1643 : const sal_uInt16* pAttrMap, const size_t nAttrMapSize)
1644 : {
1645 0 : for (size_t i = 0; i != nAttrMapSize; ++i)
1646 : {
1647 0 : CharAttr& rAttr(aRedlineAttr[pAttrMap[i]]);
1648 0 : rLB.SetEntryData(i, &rAttr);
1649 0 : if (rAttr.nItemId == rAttrToSelect.nItemId &&
1650 0 : rAttr.nAttr == rAttrToSelect.nAttr)
1651 0 : rLB.SelectEntryPos(i);
1652 : }
1653 0 : }
1654 : }
1655 :
1656 0 : SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( vcl::Window* pParent,
1657 : const SfxItemSet& rSet )
1658 : : SfxTabPage(pParent, "OptRedLinePage",
1659 : "modules/swriter/ui/optredlinepage.ui" , &rSet)
1660 0 : , sNone(SW_RESSTR(SW_STR_NONE))
1661 : {
1662 0 : Size aPreviewSize(getPreviewOptionsSize(this));
1663 :
1664 0 : get(pInsertLB,"insert");
1665 0 : get(pInsertColorLB,"insertcolor");
1666 0 : get(pInsertedPreviewWN,"insertedpreview");
1667 :
1668 0 : get(pDeletedLB,"deleted");
1669 0 : get(pDeletedColorLB,"deletedcolor");
1670 0 : get(pDeletedPreviewWN,"deletedpreview");
1671 :
1672 0 : get(pChangedLB,"changed");
1673 0 : get(pChangedColorLB,"changedcolor");
1674 0 : get(pChangedPreviewWN,"changedpreview");
1675 :
1676 0 : get(pMarkPosLB,"markpos");
1677 0 : get(pMarkColorLB,"markcolor");
1678 0 : get(pMarkPreviewWN,"markpreview");
1679 :
1680 0 : pInsertedPreviewWN->set_height_request(aPreviewSize.Height());
1681 0 : pDeletedPreviewWN->set_height_request(aPreviewSize.Height());
1682 0 : pChangedPreviewWN->set_height_request(aPreviewSize.Height());
1683 0 : pMarkPreviewWN->set_height_request(aPreviewSize.Height());
1684 :
1685 0 : pInsertedPreviewWN->set_width_request(aPreviewSize.Width());
1686 0 : pDeletedPreviewWN->set_width_request(aPreviewSize.Width());
1687 0 : pChangedPreviewWN->set_width_request(aPreviewSize.Width());
1688 0 : pMarkPreviewWN->set_width_request(aPreviewSize.Width());
1689 :
1690 0 : sAuthor = get<vcl::Window>("byauthor")->GetText();
1691 :
1692 0 : for (sal_Int32 i = 0; i < pInsertLB->GetEntryCount(); ++i)
1693 : {
1694 0 : const OUString sEntry(pInsertLB->GetEntry(i));
1695 0 : pDeletedLB->InsertEntry(sEntry);
1696 0 : pChangedLB->InsertEntry(sEntry);
1697 0 : };
1698 :
1699 : // remove strikethrough from insert and change and underline + double
1700 : // underline from delete
1701 0 : pInsertLB->RemoveEntry(5);
1702 0 : pChangedLB->RemoveEntry(5);
1703 0 : pDeletedLB->RemoveEntry(4);
1704 0 : pDeletedLB->RemoveEntry(3);
1705 :
1706 0 : Link aLk = LINK(this, SwRedlineOptionsTabPage, AttribHdl);
1707 0 : pInsertLB->SetSelectHdl( aLk );
1708 0 : pDeletedLB->SetSelectHdl( aLk );
1709 0 : pChangedLB->SetSelectHdl( aLk );
1710 :
1711 0 : aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
1712 0 : pInsertColorLB->SetSelectHdl( aLk );
1713 0 : pDeletedColorLB->SetSelectHdl( aLk );
1714 0 : pChangedColorLB->SetSelectHdl( aLk );
1715 :
1716 0 : aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
1717 0 : pMarkPosLB->SetSelectHdl( aLk );
1718 0 : pMarkColorLB->SetSelectHdl( aLk );
1719 : /*
1720 : //solution: set different accessible name of four color box
1721 : pInsertColorLB->SetAccessibleName(OUString( aInsertFT.GetDisplayText()) + OUString(aInsertColorFT.GetDisplayText()));
1722 : pDeletedColorLB->SetAccessibleName(OUString( aDeletedFT.GetDisplayText()) + OUString( aDeletedColorFT.GetDisplayText()));
1723 : pChangedColorLB->SetAccessibleName(OUString( aChangedFT.GetDisplayText()) + OUString( aChangedColorFT.GetDisplayText()));
1724 : pMarkColorLB->SetAccessibleName(OUString( aMarkPosFT.GetDisplayText()) + OUString( aMarkColorFT.GetDisplayText()));*/
1725 0 : }
1726 :
1727 0 : SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
1728 : {
1729 0 : }
1730 :
1731 0 : SfxTabPage* SwRedlineOptionsTabPage::Create( vcl::Window* pParent, const SfxItemSet* rSet)
1732 : {
1733 0 : return new SwRedlineOptionsTabPage( pParent, *rSet );
1734 : }
1735 :
1736 0 : bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet* )
1737 : {
1738 : CharAttr *pAttr;
1739 0 : SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
1740 :
1741 0 : AuthorCharAttr aInsertedAttr;
1742 0 : AuthorCharAttr aDeletedAttr;
1743 0 : AuthorCharAttr aChangedAttr;
1744 :
1745 0 : AuthorCharAttr aOldInsertAttr(pOpt->GetInsertAuthorAttr());
1746 0 : AuthorCharAttr aOldDeletedAttr(pOpt->GetDeletedAuthorAttr());
1747 0 : AuthorCharAttr aOldChangedAttr(pOpt->GetFormatAuthorAttr());
1748 :
1749 0 : ColorData nOldMarkColor = pOpt->GetMarkAlignColor().GetColor();
1750 0 : sal_uInt16 nOldMarkMode = pOpt->GetMarkAlignMode();
1751 :
1752 0 : sal_Int32 nPos = pInsertLB->GetSelectEntryPos();
1753 0 : if (nPos != LISTBOX_ENTRY_NOTFOUND)
1754 : {
1755 0 : pAttr = (CharAttr *)pInsertLB->GetEntryData(nPos);
1756 0 : aInsertedAttr.nItemId = pAttr->nItemId;
1757 0 : aInsertedAttr.nAttr = pAttr->nAttr;
1758 :
1759 0 : nPos = pInsertColorLB->GetSelectEntryPos();
1760 :
1761 0 : switch (nPos)
1762 : {
1763 : case 0:
1764 0 : aInsertedAttr.nColor = COL_NONE_COLOR;
1765 0 : break;
1766 : case 1:
1767 : case LISTBOX_ENTRY_NOTFOUND:
1768 0 : aInsertedAttr.nColor = COL_TRANSPARENT;
1769 0 : break;
1770 : default:
1771 0 : aInsertedAttr.nColor = pInsertColorLB->GetEntryColor(nPos).GetColor();
1772 0 : break;
1773 : }
1774 :
1775 0 : pOpt->SetInsertAuthorAttr(aInsertedAttr);
1776 : }
1777 :
1778 0 : nPos = pDeletedLB->GetSelectEntryPos();
1779 0 : if (nPos != LISTBOX_ENTRY_NOTFOUND)
1780 : {
1781 0 : pAttr = (CharAttr *)pDeletedLB->GetEntryData(nPos);
1782 0 : aDeletedAttr.nItemId = pAttr->nItemId;
1783 0 : aDeletedAttr.nAttr = pAttr->nAttr;
1784 :
1785 0 : nPos = pDeletedColorLB->GetSelectEntryPos();
1786 :
1787 0 : switch (nPos)
1788 : {
1789 : case 0:
1790 0 : aDeletedAttr.nColor = COL_NONE_COLOR;
1791 0 : break;
1792 : case 1:
1793 : case LISTBOX_ENTRY_NOTFOUND:
1794 0 : aDeletedAttr.nColor = COL_TRANSPARENT;
1795 0 : break;
1796 : default:
1797 0 : aDeletedAttr.nColor = pDeletedColorLB->GetEntryColor(nPos).GetColor();
1798 0 : break;
1799 : }
1800 :
1801 0 : pOpt->SetDeletedAuthorAttr(aDeletedAttr);
1802 : }
1803 :
1804 0 : nPos = pChangedLB->GetSelectEntryPos();
1805 0 : if (nPos != LISTBOX_ENTRY_NOTFOUND)
1806 : {
1807 0 : pAttr = (CharAttr *)pChangedLB->GetEntryData(nPos);
1808 0 : aChangedAttr.nItemId = pAttr->nItemId;
1809 0 : aChangedAttr.nAttr = pAttr->nAttr;
1810 :
1811 0 : nPos = pChangedColorLB->GetSelectEntryPos();
1812 :
1813 0 : switch (nPos)
1814 : {
1815 : case 0:
1816 0 : aChangedAttr.nColor = COL_NONE_COLOR;
1817 0 : break;
1818 : case 1:
1819 : case LISTBOX_ENTRY_NOTFOUND:
1820 0 : aChangedAttr.nColor = COL_TRANSPARENT;
1821 0 : break;
1822 : default:
1823 0 : aChangedAttr.nColor = pChangedColorLB->GetEntryColor(nPos).GetColor();
1824 0 : break;
1825 : }
1826 :
1827 0 : pOpt->SetFormatAuthorAttr(aChangedAttr);
1828 : }
1829 :
1830 0 : nPos = 0;
1831 0 : switch (pMarkPosLB->GetSelectEntryPos())
1832 : {
1833 0 : case 0: nPos = text::HoriOrientation::NONE; break;
1834 0 : case 1: nPos = text::HoriOrientation::LEFT; break;
1835 0 : case 2: nPos = text::HoriOrientation::RIGHT; break;
1836 0 : case 3: nPos = text::HoriOrientation::OUTSIDE; break;
1837 0 : case 4: nPos = text::HoriOrientation::INSIDE; break;
1838 : }
1839 0 : pOpt->SetMarkAlignMode(nPos);
1840 :
1841 0 : pOpt->SetMarkAlignColor(pMarkColorLB->GetSelectEntryColor());
1842 :
1843 0 : if (!(aInsertedAttr == aOldInsertAttr) ||
1844 0 : !(aDeletedAttr == aOldDeletedAttr) ||
1845 0 : !(aChangedAttr == aOldChangedAttr) ||
1846 0 : nOldMarkColor != pOpt->GetMarkAlignColor().GetColor() ||
1847 0 : nOldMarkMode != pOpt->GetMarkAlignMode())
1848 : {
1849 : // update all documents
1850 0 : TypeId aType(TYPE(SwDocShell));
1851 0 : SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
1852 :
1853 0 : while( pDocShell )
1854 : {
1855 0 : pDocShell->GetWrtShell()->UpdateRedlineAttr();
1856 0 : pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
1857 : }
1858 : }
1859 :
1860 0 : return false;
1861 : }
1862 :
1863 0 : void SwRedlineOptionsTabPage::Reset( const SfxItemSet* )
1864 : {
1865 0 : const SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
1866 :
1867 0 : const AuthorCharAttr &rInsertAttr = pOpt->GetInsertAuthorAttr();
1868 0 : const AuthorCharAttr &rDeletedAttr = pOpt->GetDeletedAuthorAttr();
1869 0 : const AuthorCharAttr &rChangedAttr = pOpt->GetFormatAuthorAttr();
1870 :
1871 : // initialise preview
1872 0 : InitFontStyle(*pInsertedPreviewWN);
1873 0 : InitFontStyle(*pDeletedPreviewWN);
1874 0 : InitFontStyle(*pChangedPreviewWN);
1875 :
1876 : // initialise colour list box
1877 0 : pInsertColorLB->SetUpdateMode(false);
1878 0 : pDeletedColorLB->SetUpdateMode(false);
1879 0 : pChangedColorLB->SetUpdateMode(false);
1880 0 : pMarkColorLB->SetUpdateMode(false);
1881 0 : pInsertColorLB->InsertEntry(sNone);
1882 0 : pDeletedColorLB->InsertEntry(sNone);
1883 0 : pChangedColorLB->InsertEntry(sNone);
1884 :
1885 0 : pInsertColorLB->InsertEntry(sAuthor);
1886 0 : pDeletedColorLB->InsertEntry(sAuthor);
1887 0 : pChangedColorLB->InsertEntry(sAuthor);
1888 :
1889 0 : XColorListRef pColorLst = XColorList::GetStdColorList();
1890 0 : for( sal_Int32 i = 0; i < pColorLst->Count(); ++i )
1891 : {
1892 0 : XColorEntry* pEntry = pColorLst->GetColor( i );
1893 0 : Color aColor = pEntry->GetColor();
1894 0 : const OUString sName = pEntry->GetName();
1895 :
1896 0 : pInsertColorLB->InsertEntry( aColor, sName );
1897 0 : pDeletedColorLB->InsertEntry( aColor, sName );
1898 0 : pChangedColorLB->InsertEntry( aColor, sName );
1899 0 : pMarkColorLB->InsertEntry( aColor, sName );
1900 0 : }
1901 0 : pInsertColorLB->SetUpdateMode( true );
1902 0 : pDeletedColorLB->SetUpdateMode( true );
1903 0 : pChangedColorLB->SetUpdateMode( true );
1904 0 : pMarkColorLB->SetUpdateMode( true );
1905 :
1906 0 : ColorData nColor = rInsertAttr.nColor;
1907 :
1908 0 : switch (nColor)
1909 : {
1910 : case COL_TRANSPARENT:
1911 0 : pInsertColorLB->SelectEntryPos(1);
1912 0 : break;
1913 : case COL_NONE_COLOR:
1914 0 : pInsertColorLB->SelectEntryPos(0);
1915 0 : break;
1916 : default:
1917 0 : pInsertColorLB->SelectEntry(Color(nColor));
1918 : }
1919 :
1920 0 : nColor = rDeletedAttr.nColor;
1921 :
1922 0 : switch (nColor)
1923 : {
1924 : case COL_TRANSPARENT:
1925 0 : pDeletedColorLB->SelectEntryPos(1);
1926 0 : break;
1927 : case COL_NONE_COLOR:
1928 0 : pDeletedColorLB->SelectEntryPos(0);
1929 0 : break;
1930 : default:
1931 0 : pDeletedColorLB->SelectEntry(Color(nColor));
1932 : }
1933 :
1934 0 : nColor = rChangedAttr.nColor;
1935 :
1936 0 : switch (nColor)
1937 : {
1938 : case COL_TRANSPARENT:
1939 0 : pChangedColorLB->SelectEntryPos(1);
1940 0 : break;
1941 : case COL_NONE_COLOR:
1942 0 : pChangedColorLB->SelectEntryPos(0);
1943 0 : break;
1944 : default:
1945 0 : pChangedColorLB->SelectEntry(Color(nColor));
1946 : }
1947 :
1948 0 : pMarkColorLB->SelectEntry(pOpt->GetMarkAlignColor());
1949 :
1950 0 : pInsertLB->SelectEntryPos(0);
1951 0 : pDeletedLB->SelectEntryPos(0);
1952 0 : pChangedLB->SelectEntryPos(0);
1953 :
1954 0 : lcl_FillRedlineAttrListBox(*pInsertLB, rInsertAttr, aInsertAttrMap, SAL_N_ELEMENTS(aInsertAttrMap));
1955 0 : lcl_FillRedlineAttrListBox(*pDeletedLB, rDeletedAttr, aDeletedAttrMap, SAL_N_ELEMENTS(aDeletedAttrMap));
1956 0 : lcl_FillRedlineAttrListBox(*pChangedLB, rChangedAttr, aChangedAttrMap, SAL_N_ELEMENTS(aChangedAttrMap));
1957 :
1958 0 : sal_Int32 nPos = 0;
1959 0 : switch (pOpt->GetMarkAlignMode())
1960 : {
1961 0 : case text::HoriOrientation::NONE: nPos = 0; break;
1962 0 : case text::HoriOrientation::LEFT: nPos = 1; break;
1963 0 : case text::HoriOrientation::RIGHT: nPos = 2; break;
1964 0 : case text::HoriOrientation::OUTSIDE: nPos = 3; break;
1965 0 : case text::HoriOrientation::INSIDE: nPos = 4; break;
1966 : }
1967 0 : pMarkPosLB->SelectEntryPos(nPos);
1968 :
1969 : // show settings in preview
1970 0 : AttribHdl(pInsertLB);
1971 0 : ColorHdl(pInsertColorLB);
1972 0 : AttribHdl(pDeletedLB);
1973 0 : ColorHdl(pInsertColorLB);
1974 0 : AttribHdl(pChangedLB);
1975 0 : ColorHdl(pChangedColorLB);
1976 :
1977 0 : ChangedMaskPrevHdl();
1978 0 : }
1979 :
1980 0 : IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox *, pLB )
1981 : {
1982 0 : SvxFontPrevWindow *pPrev = 0;
1983 : ColorListBox *pColorLB;
1984 :
1985 0 : if (pLB == pInsertLB)
1986 : {
1987 0 : pColorLB = pInsertColorLB;
1988 0 : pPrev = pInsertedPreviewWN;
1989 : }
1990 0 : else if (pLB == pDeletedLB)
1991 : {
1992 0 : pColorLB = pDeletedColorLB;
1993 0 : pPrev = pDeletedPreviewWN;
1994 : }
1995 : else
1996 : {
1997 0 : pColorLB = pChangedColorLB;
1998 0 : pPrev = pChangedPreviewWN;
1999 : }
2000 :
2001 0 : SvxFont& rFont = pPrev->GetFont();
2002 0 : SvxFont& rCJKFont = pPrev->GetCJKFont();
2003 :
2004 0 : rFont.SetWeight(WEIGHT_NORMAL);
2005 0 : rCJKFont.SetWeight(WEIGHT_NORMAL);
2006 0 : rFont.SetItalic(ITALIC_NONE);
2007 0 : rCJKFont.SetItalic(ITALIC_NONE);
2008 0 : rFont.SetUnderline(UNDERLINE_NONE);
2009 0 : rCJKFont.SetUnderline(UNDERLINE_NONE);
2010 0 : rFont.SetStrikeout(STRIKEOUT_NONE);
2011 0 : rCJKFont.SetStrikeout(STRIKEOUT_NONE);
2012 0 : rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
2013 0 : rCJKFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
2014 :
2015 0 : sal_Int32 nPos = pColorLB->GetSelectEntryPos();
2016 :
2017 0 : switch( nPos )
2018 : {
2019 : case 0:
2020 0 : rFont.SetColor( Color( COL_BLACK ) );
2021 0 : rCJKFont.SetColor( Color( COL_BLACK ) );
2022 0 : break;
2023 : case 1:
2024 : case LISTBOX_ENTRY_NOTFOUND:
2025 0 : rFont.SetColor( Color( COL_RED ) );
2026 0 : rCJKFont.SetColor( Color( COL_RED ) );
2027 0 : break;
2028 : default:
2029 0 : rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2030 0 : rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2031 0 : break;
2032 : }
2033 :
2034 0 : nPos = pLB->GetSelectEntryPos();
2035 0 : if( nPos == LISTBOX_ENTRY_NOTFOUND )
2036 0 : nPos = 0;
2037 :
2038 0 : CharAttr* pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
2039 : //switch off preview background color
2040 0 : pPrev->ResetColor();
2041 0 : switch (pAttr->nItemId)
2042 : {
2043 : case SID_ATTR_CHAR_WEIGHT:
2044 0 : rFont.SetWeight( ( FontWeight ) pAttr->nAttr );
2045 0 : rCJKFont.SetWeight( ( FontWeight ) pAttr->nAttr );
2046 0 : break;
2047 :
2048 : case SID_ATTR_CHAR_POSTURE:
2049 0 : rFont.SetItalic( ( FontItalic ) pAttr->nAttr );
2050 0 : rCJKFont.SetItalic( ( FontItalic ) pAttr->nAttr );
2051 0 : break;
2052 :
2053 : case SID_ATTR_CHAR_UNDERLINE:
2054 0 : rFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
2055 0 : rCJKFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
2056 0 : break;
2057 :
2058 : case SID_ATTR_CHAR_STRIKEOUT:
2059 0 : rFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
2060 0 : rCJKFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
2061 0 : break;
2062 :
2063 : case SID_ATTR_CHAR_CASEMAP:
2064 0 : rFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
2065 0 : rCJKFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
2066 0 : break;
2067 :
2068 : case SID_ATTR_BRUSH:
2069 : {
2070 0 : nPos = pColorLB->GetSelectEntryPos();
2071 0 : if( nPos )
2072 0 : pPrev->SetColor( pColorLB->GetSelectEntryColor() );
2073 : else
2074 0 : pPrev->SetColor( Color( COL_LIGHTGRAY ) );
2075 :
2076 0 : rFont.SetColor( Color( COL_BLACK ) );
2077 0 : rCJKFont.SetColor( Color( COL_BLACK ) );
2078 : }
2079 0 : break;
2080 : }
2081 :
2082 0 : pPrev->Invalidate();
2083 :
2084 0 : return 0;
2085 : }
2086 :
2087 0 : IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
2088 : {
2089 0 : SvxFontPrevWindow *pPrev = 0;
2090 : ListBox* pLB;
2091 :
2092 0 : if (pColorLB == pInsertColorLB)
2093 : {
2094 0 : pLB = pInsertLB;
2095 0 : pPrev = pInsertedPreviewWN;
2096 : }
2097 0 : else if (pColorLB == pDeletedColorLB)
2098 : {
2099 0 : pLB = pDeletedLB;
2100 0 : pPrev = pDeletedPreviewWN;
2101 : }
2102 : else
2103 : {
2104 0 : pLB = pChangedLB;
2105 0 : pPrev = pChangedPreviewWN;
2106 : }
2107 :
2108 0 : SvxFont& rFont = pPrev->GetFont();
2109 0 : SvxFont& rCJKFont = pPrev->GetCJKFont();
2110 0 : sal_Int32 nPos = pLB->GetSelectEntryPos();
2111 0 : if( nPos == LISTBOX_ENTRY_NOTFOUND )
2112 0 : nPos = 0;
2113 :
2114 0 : CharAttr* pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
2115 :
2116 0 : if( pAttr->nItemId == SID_ATTR_BRUSH )
2117 : {
2118 0 : rFont.SetColor( Color( COL_BLACK ) );
2119 0 : rCJKFont.SetColor( Color( COL_BLACK ) );
2120 0 : nPos = pColorLB->GetSelectEntryPos();
2121 0 : if( nPos && nPos != LISTBOX_ENTRY_NOTFOUND )
2122 0 : pPrev->SetColor( pColorLB->GetSelectEntryColor() );
2123 : else
2124 0 : pPrev->SetColor( Color( COL_LIGHTGRAY ) );
2125 : }
2126 : else
2127 : {
2128 0 : nPos = pColorLB->GetSelectEntryPos();
2129 :
2130 0 : switch( nPos )
2131 : {
2132 : case 0:
2133 0 : rFont.SetColor( Color( COL_BLACK ) );
2134 0 : rCJKFont.SetColor( Color( COL_BLACK ) );
2135 0 : break;
2136 : case 1:
2137 : case LISTBOX_ENTRY_NOTFOUND:
2138 0 : rFont.SetColor( Color( COL_RED ) );
2139 0 : rCJKFont.SetColor( Color( COL_RED ) );
2140 0 : break;
2141 : default:
2142 0 : rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2143 0 : rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2144 0 : break;
2145 : }
2146 : }
2147 :
2148 0 : pPrev->Invalidate();
2149 :
2150 0 : return 0;
2151 : }
2152 :
2153 0 : IMPL_LINK_NOARG(SwRedlineOptionsTabPage, ChangedMaskPrevHdl)
2154 : {
2155 0 : pMarkPreviewWN->SetMarkPos(pMarkPosLB->GetSelectEntryPos());
2156 0 : pMarkPreviewWN->SetColor(pMarkColorLB->GetSelectEntryColor().GetColor());
2157 :
2158 0 : pMarkPreviewWN->Invalidate();
2159 :
2160 0 : return 0;
2161 : }
2162 :
2163 0 : void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
2164 : {
2165 0 : const AllSettings& rAllSettings = Application::GetSettings();
2166 0 : LanguageType eLangType = rAllSettings.GetUILanguageTag().getLanguageType();
2167 0 : Color aBackCol( rAllSettings.GetStyleSettings().GetWindowColor() );
2168 0 : SvxFont& rFont = rExampleWin.GetFont();
2169 0 : SvxFont& rCJKFont = rExampleWin.GetCJKFont();
2170 0 : SvxFont& rCTLFont = rExampleWin.GetCTLFont();
2171 :
2172 : vcl::Font aFont( OutputDevice::GetDefaultFont( DEFAULTFONT_SERIF, eLangType,
2173 0 : DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2174 : vcl::Font aCJKFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_TEXT, eLangType,
2175 0 : DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2176 : vcl::Font aCTLFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_TEXT, eLangType,
2177 0 : DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2178 0 : const Size aDefSize( 0, 12 );
2179 0 : aFont.SetSize( aDefSize );
2180 0 : aCJKFont.SetSize( aDefSize );
2181 0 : aCTLFont.SetSize( aDefSize );
2182 :
2183 0 : aFont.SetFillColor( aBackCol );
2184 0 : aCJKFont.SetFillColor( aBackCol );
2185 0 : aCTLFont.SetFillColor( aBackCol );
2186 :
2187 0 : aFont.SetWeight( WEIGHT_NORMAL );
2188 0 : aCJKFont.SetWeight( WEIGHT_NORMAL );
2189 0 : aCTLFont.SetWeight( WEIGHT_NORMAL );
2190 :
2191 0 : rFont = aFont;
2192 0 : rCJKFont = aCJKFont;
2193 0 : rCTLFont = aCTLFont;
2194 :
2195 0 : const Size aNewSize( 0, rExampleWin.GetOutputSize().Height() * 2 / 3 );
2196 0 : rFont.SetSize( aNewSize );
2197 0 : rCJKFont.SetSize( aNewSize );
2198 :
2199 0 : rExampleWin.SetFont( rFont, rCJKFont,rCTLFont );
2200 :
2201 0 : rExampleWin.UseResourceText();
2202 :
2203 0 : Wallpaper aWall( aBackCol );
2204 0 : rExampleWin.SetBackground( aWall );
2205 0 : rExampleWin.Invalidate();
2206 0 : }
2207 :
2208 0 : SwCompareOptionsTabPage::SwCompareOptionsTabPage( vcl::Window* pParent, const SfxItemSet& rSet )
2209 0 : : SfxTabPage( pParent,"OptComparison","modules/swriter/ui/optcomparison.ui", &rSet )
2210 : {
2211 0 : get(m_pAutoRB,"auto");
2212 0 : get(m_pWordRB, "byword");
2213 0 : get(m_pCharRB, "bycharacter");
2214 :
2215 0 : get(m_pRsidCB, "useRSID");
2216 0 : get(m_pIgnoreCB, "ignore");
2217 0 : get(m_pLenNF, "ignorelen");
2218 :
2219 0 : Link aLnk( LINK( this, SwCompareOptionsTabPage, ComparisonHdl ) );
2220 0 : m_pAutoRB->SetClickHdl( aLnk );
2221 0 : m_pWordRB->SetClickHdl( aLnk );
2222 0 : m_pCharRB->SetClickHdl( aLnk );
2223 :
2224 0 : m_pIgnoreCB->SetClickHdl( LINK( this, SwCompareOptionsTabPage, IgnoreHdl) );
2225 0 : }
2226 :
2227 0 : SwCompareOptionsTabPage::~SwCompareOptionsTabPage()
2228 : {
2229 0 : }
2230 :
2231 0 : SfxTabPage* SwCompareOptionsTabPage::Create( vcl::Window* pParent, const SfxItemSet* rAttrSet )
2232 : {
2233 0 : return new SwCompareOptionsTabPage( pParent, *rAttrSet );
2234 : }
2235 :
2236 0 : bool SwCompareOptionsTabPage::FillItemSet( SfxItemSet* )
2237 : {
2238 0 : bool bRet = false;
2239 0 : SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
2240 :
2241 0 : if( m_pAutoRB->IsValueChangedFromSaved() ||
2242 0 : m_pWordRB->IsValueChangedFromSaved() ||
2243 0 : m_pCharRB->IsValueChangedFromSaved() )
2244 : {
2245 0 : SvxCompareMode eCmpMode = SVX_CMP_AUTO;
2246 :
2247 0 : if ( m_pAutoRB->IsChecked() ) eCmpMode = SVX_CMP_AUTO;
2248 0 : if ( m_pWordRB->IsChecked() ) eCmpMode = SVX_CMP_BY_WORD;
2249 0 : if ( m_pCharRB->IsChecked() ) eCmpMode = SVX_CMP_BY_CHAR;
2250 :
2251 0 : pOpt->SetCompareMode( eCmpMode );
2252 0 : bRet = true;
2253 : }
2254 :
2255 0 : if( m_pRsidCB->IsValueChangedFromSaved() )
2256 : {
2257 0 : pOpt->SetUseRsid( m_pRsidCB->IsChecked() );
2258 0 : bRet = true;
2259 : }
2260 :
2261 0 : if( m_pIgnoreCB->IsValueChangedFromSaved() )
2262 : {
2263 0 : pOpt->SetIgnorePieces( m_pIgnoreCB->IsChecked() );
2264 0 : bRet = true;
2265 : }
2266 :
2267 0 : if( m_pLenNF->IsModified() )
2268 : {
2269 0 : pOpt->SetPieceLen( m_pLenNF->GetValue() );
2270 0 : bRet = true;
2271 : }
2272 :
2273 0 : return bRet;
2274 : }
2275 :
2276 0 : void SwCompareOptionsTabPage::Reset( const SfxItemSet* )
2277 : {
2278 0 : SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
2279 :
2280 0 : SvxCompareMode eCmpMode = pOpt->GetCompareMode();
2281 0 : if( eCmpMode == SVX_CMP_AUTO )
2282 : {
2283 0 : m_pAutoRB->Check();
2284 0 : m_pRsidCB->Disable();
2285 0 : m_pIgnoreCB->Disable();
2286 0 : m_pLenNF->Disable();
2287 : }
2288 0 : else if( eCmpMode == SVX_CMP_BY_WORD )
2289 : {
2290 0 : m_pWordRB->Check();
2291 0 : m_pRsidCB->Enable();
2292 0 : m_pIgnoreCB->Enable();
2293 0 : m_pLenNF->Enable();
2294 : }
2295 0 : else if( eCmpMode == SVX_CMP_BY_CHAR)
2296 : {
2297 0 : m_pCharRB->Check();
2298 0 : m_pRsidCB->Enable();
2299 0 : m_pIgnoreCB->Enable();
2300 0 : m_pLenNF->Enable();
2301 : }
2302 0 : m_pAutoRB->SaveValue();
2303 0 : m_pWordRB->SaveValue();
2304 0 : m_pCharRB->SaveValue();
2305 :
2306 0 : m_pRsidCB->Check( pOpt->IsUseRsid() );
2307 0 : m_pRsidCB->SaveValue();
2308 :
2309 0 : m_pIgnoreCB->Check( pOpt->IsIgnorePieces() );
2310 0 : m_pIgnoreCB->SaveValue();
2311 :
2312 0 : m_pLenNF->Enable( m_pIgnoreCB->IsChecked() && eCmpMode );
2313 :
2314 0 : m_pLenNF->SetValue( pOpt->GetPieceLen() );
2315 0 : m_pLenNF->SaveValue();
2316 0 : }
2317 :
2318 0 : IMPL_LINK_NOARG(SwCompareOptionsTabPage, ComparisonHdl)
2319 : {
2320 0 : bool bChecked = !m_pAutoRB->IsChecked();
2321 0 : m_pRsidCB->Enable( bChecked );
2322 0 : m_pIgnoreCB->Enable( bChecked );
2323 0 : m_pLenNF->Enable( bChecked && m_pIgnoreCB->IsChecked() );
2324 :
2325 0 : return 0;
2326 : }
2327 :
2328 0 : IMPL_LINK_NOARG(SwCompareOptionsTabPage, IgnoreHdl)
2329 : {
2330 0 : m_pLenNF->Enable( m_pIgnoreCB->IsChecked() );
2331 0 : return 0;
2332 0 : }
2333 :
2334 : #ifdef DBG_UTIL
2335 :
2336 : SwTestTabPage::SwTestTabPage(vcl::Window* pParent, const SfxItemSet& rCoreSet)
2337 : : SfxTabPage( pParent, "OptTestPage", "modules/swriter/ui/opttestpage.ui", &rCoreSet)
2338 : , bAttrModified( false )
2339 : {
2340 : get(m_pTest1CBox, "unused");
2341 : get(m_pTest2CBox, "dynamic");
2342 : get(m_pTest3CBox, "nocalm");
2343 : get(m_pTest4CBox, "wysiwygdbg");
2344 : get(m_pTest5CBox, "noidle");
2345 : get(m_pTest6CBox, "noscreenadj");
2346 : get(m_pTest7CBox, "winformat");
2347 : get(m_pTest8CBox, "noscroll");
2348 : get(m_pTest9CBox, "DrawingLayerNotLoading");
2349 : get(m_pTest10CBox, "AutoFormatByInput");
2350 :
2351 : Init();
2352 :
2353 : }
2354 :
2355 : SfxTabPage* SwTestTabPage::Create( vcl::Window* pParent,
2356 : const SfxItemSet* rAttrSet )
2357 : {
2358 : return new SwTestTabPage(pParent, *rAttrSet);
2359 : }
2360 :
2361 : bool SwTestTabPage::FillItemSet( SfxItemSet* rCoreSet )
2362 : {
2363 :
2364 : if ( bAttrModified )
2365 : {
2366 : SwTestItem aTestItem(FN_PARAM_SWTEST);
2367 : aTestItem.bTest1=m_pTest1CBox->IsChecked();
2368 : aTestItem.bTest2=m_pTest2CBox->IsChecked();
2369 : aTestItem.bTest3=m_pTest3CBox->IsChecked();
2370 : aTestItem.bTest4=m_pTest4CBox->IsChecked();
2371 : aTestItem.bTest5=m_pTest5CBox->IsChecked();
2372 : aTestItem.bTest6=m_pTest6CBox->IsChecked();
2373 : aTestItem.bTest7=m_pTest7CBox->IsChecked();
2374 : aTestItem.bTest8=m_pTest8CBox->IsChecked();
2375 : aTestItem.bTest9=m_pTest9CBox->IsChecked();
2376 : aTestItem.bTest10=m_pTest10CBox->IsChecked();
2377 : rCoreSet->Put(aTestItem);
2378 : }
2379 : return bAttrModified;
2380 : }
2381 :
2382 : void SwTestTabPage::Reset( const SfxItemSet* )
2383 : {
2384 : const SfxItemSet& rSet = GetItemSet();
2385 : const SwTestItem* pTestAttr = 0;
2386 :
2387 : if( SfxItemState::SET == rSet.GetItemState( FN_PARAM_SWTEST , false,
2388 : (const SfxPoolItem**)&pTestAttr ))
2389 : {
2390 : m_pTest1CBox->Check(pTestAttr->bTest1);
2391 : m_pTest2CBox->Check(pTestAttr->bTest2);
2392 : m_pTest3CBox->Check(pTestAttr->bTest3);
2393 : m_pTest4CBox->Check(pTestAttr->bTest4);
2394 : m_pTest5CBox->Check(pTestAttr->bTest5);
2395 : m_pTest6CBox->Check(pTestAttr->bTest6);
2396 : m_pTest7CBox->Check(pTestAttr->bTest7);
2397 : m_pTest8CBox->Check(pTestAttr->bTest8);
2398 : m_pTest9CBox->Check(pTestAttr->bTest9);
2399 : m_pTest10CBox->Check(pTestAttr->bTest10);
2400 : }
2401 : }
2402 :
2403 : void SwTestTabPage::Init()
2404 : {
2405 : // handler
2406 : Link aLk = LINK( this, SwTestTabPage, AutoClickHdl );
2407 : m_pTest1CBox->SetClickHdl( aLk );
2408 : m_pTest2CBox->SetClickHdl( aLk );
2409 : m_pTest3CBox->SetClickHdl( aLk );
2410 : m_pTest4CBox->SetClickHdl( aLk );
2411 : m_pTest5CBox->SetClickHdl( aLk );
2412 : m_pTest6CBox->SetClickHdl( aLk );
2413 : m_pTest7CBox->SetClickHdl( aLk );
2414 : m_pTest8CBox->SetClickHdl( aLk );
2415 : m_pTest9CBox->SetClickHdl( aLk );
2416 : m_pTest10CBox->SetClickHdl( aLk );
2417 : }
2418 :
2419 : IMPL_LINK_NOARG_INLINE_START(SwTestTabPage, AutoClickHdl)
2420 : {
2421 : bAttrModified = true;
2422 : return 0;
2423 : }
2424 : IMPL_LINK_NOARG_INLINE_END(SwTestTabPage, AutoClickHdl)
2425 :
2426 : #endif
2427 :
2428 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|