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 <view.hxx>
21 : #include <wrtsh.hxx>
22 : #include <cption.hxx>
23 : #include <fldmgr.hxx>
24 : #include <expfld.hxx>
25 : #include <numrule.hxx>
26 : #include <poolfmt.hxx>
27 : #include <docsh.hxx>
28 : #include <frmfmt.hxx>
29 : #include <calc.hxx>
30 : #include <uitool.hxx>
31 : #include <doc.hxx>
32 : #include <modcfg.hxx>
33 : #include <swmodule.hxx>
34 : #include <com/sun/star/frame/XStorable.hpp>
35 : #include <com/sun/star/text/GraphicCrop.hpp>
36 : #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
37 : #include <com/sun/star/text/XTextTableCursor.hpp>
38 : #include <com/sun/star/text/XTextTablesSupplier.hpp>
39 : #include <com/sun/star/text/TableColumnSeparator.hpp>
40 : #include <com/sun/star/text/XTextTable.hpp>
41 : #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
42 : #include <com/sun/star/text/XTextFramesSupplier.hpp>
43 : #include <com/sun/star/text/XTextFrame.hpp>
44 : #include <comphelper/string.hxx>
45 : #include "initui.hxx"
46 : #include <frmui.hrc>
47 : #include <globals.hrc>
48 : #include <SwStyleNameMapper.hxx>
49 :
50 : using namespace ::com::sun::star;
51 :
52 : class SwSequenceOptionDialog : public SvxStandardDialog
53 : {
54 : VclPtr<ListBox> m_pLbLevel;
55 : VclPtr<Edit> m_pEdDelim;
56 :
57 : VclPtr<ListBox> m_pLbCharStyle;
58 : VclPtr<CheckBox> m_pApplyBorderAndShadowCB;
59 :
60 : //#i61007# order of captions
61 : VclPtr<ListBox> m_pLbCaptionOrder;
62 :
63 : SwView& rView;
64 : OUString aFieldTypeName;
65 :
66 : public:
67 : SwSequenceOptionDialog( vcl::Window *pParent, SwView &rV,
68 : const OUString& rSeqFieldType );
69 : virtual ~SwSequenceOptionDialog();
70 : virtual void dispose() SAL_OVERRIDE;
71 : virtual void Apply() SAL_OVERRIDE;
72 :
73 0 : bool IsApplyBorderAndShadow() { return m_pApplyBorderAndShadowCB->IsChecked(); }
74 0 : void SetApplyBorderAndShadow( bool bSet ) { m_pApplyBorderAndShadowCB->Check(bSet); }
75 :
76 : //#i61007# order of captions
77 0 : bool IsOrderNumberingFirst() const {return m_pLbCaptionOrder->GetSelectEntryPos() == 1;}
78 0 : void SetOrderNumberingFirst(bool bSet) { m_pLbCaptionOrder->SelectEntryPos( bSet ? 1 : 0 ); }
79 :
80 : void SetCharacterStyle(const OUString& rStyle);
81 : OUString GetCharacterStyle() const;
82 : };
83 :
84 0 : OUString SwCaptionDialog::our_aSepTextSave(": "); // Caption separator text
85 :
86 : //Resolves: fdo#47427 disallow typing *or* pasting content into the category box
87 0 : OUString TextFilterAutoConvert::filter(const OUString &rText)
88 : {
89 0 : if (rText != m_sNone && !SwCalc::IsValidVarName(rText))
90 0 : return m_sLastGoodText;
91 0 : m_sLastGoodText = rText;
92 0 : return rText;
93 : }
94 :
95 0 : SwCaptionDialog::SwCaptionDialog( vcl::Window *pParent, SwView &rV ) :
96 : SvxStandardDialog( pParent, "InsertCaptionDialog", "modules/swriter/ui/insertcaption.ui" ),
97 : m_sNone( SW_RESSTR(SW_STR_NONE) ),
98 : m_aTextFilter(m_sNone),
99 : rView( rV ),
100 0 : pMgr( new SwFieldMgr(rView.GetWrtShellPtr()) ),
101 : bCopyAttributes( false ),
102 0 : bOrderNumberingFirst( SW_MOD()->GetModuleConfig()->IsCaptionOrderNumberingFirst() )
103 : {
104 0 : get(m_pTextEdit, "caption_edit");
105 0 : get(m_pCategoryBox, "category");
106 0 : m_pCategoryBox->SetTextFilter(&m_aTextFilter);
107 0 : get(m_pFormatText, "numbering_label");
108 0 : get(m_pFormatBox, "numbering");
109 0 : get(m_pNumberingSeparatorFT, "num_separator");
110 0 : get(m_pNumberingSeparatorED, "num_separator_edit");
111 0 : get(m_pSepText, "separator_label");
112 0 : get(m_pSepEdit, "separator_edit");
113 0 : get(m_pPosText, "position_label");
114 0 : get(m_pPosBox, "position");
115 0 : get(m_pPreview, "preview");
116 0 : get(m_pOKButton, "ok");
117 0 : get(m_pAutoCaptionButton, "auto");
118 0 : get(m_pOptionButton, "options");
119 :
120 : //#i61007# order of captions
121 0 : ApplyCaptionOrder();
122 0 : SwWrtShell &rSh = rView.GetWrtShell();
123 0 : uno::Reference< frame::XModel > xModel = rView.GetDocShell()->GetBaseModel();
124 :
125 0 : eType = rSh.GetSelectionType();
126 0 : if ( eType & nsSelectionType::SEL_OLE )
127 : {
128 0 : eType = nsSelectionType::SEL_GRF;
129 0 : uno::Reference< text::XTextEmbeddedObjectsSupplier > xObjs(xModel, uno::UNO_QUERY);
130 0 : xNameAccess = xObjs->getEmbeddedObjects();
131 : }
132 :
133 0 : Link<> aLk = LINK( this, SwCaptionDialog, ModifyHdl );
134 0 : m_pCategoryBox->SetModifyHdl( aLk );
135 0 : m_pTextEdit->SetModifyHdl( aLk );
136 0 : m_pNumberingSeparatorED->SetModifyHdl ( aLk );
137 0 : m_pSepEdit->SetModifyHdl( aLk );
138 :
139 0 : aLk = LINK(this, SwCaptionDialog, SelectHdl);
140 0 : m_pCategoryBox->SetSelectHdl( aLk );
141 0 : m_pFormatBox->SetSelectHdl( aLk );
142 0 : m_pOptionButton->SetClickHdl( LINK( this, SwCaptionDialog, OptionHdl ) );
143 0 : m_pAutoCaptionButton->SetClickHdl(LINK(this, SwCaptionDialog, CaptionHdl));
144 :
145 0 : m_pCategoryBox->InsertEntry( m_sNone );
146 0 : size_t nCount = pMgr->GetFieldTypeCount();
147 0 : for (size_t i = 0; i < nCount; ++i)
148 : {
149 0 : SwFieldType *pType = pMgr->GetFieldType( USHRT_MAX, i );
150 0 : if( pType->Which() == RES_SETEXPFLD &&
151 0 : static_cast<SwSetExpFieldType *>( pType)->GetType() & nsSwGetSetExpType::GSE_SEQ )
152 0 : m_pCategoryBox->InsertEntry(pType->GetName());
153 : }
154 :
155 0 : OUString sString;
156 0 : sal_uInt16 nPoolId = 0;
157 0 : if (eType & nsSelectionType::SEL_GRF)
158 : {
159 0 : nPoolId = RES_POOLCOLL_LABEL_ABB;
160 0 : sString = ::GetOldGrfCat();
161 0 : bCopyAttributes = true;
162 0 : sObjectName = rSh.GetFlyName();
163 : //if not OLE
164 0 : if(!xNameAccess.is())
165 : {
166 0 : uno::Reference< text::XTextGraphicObjectsSupplier > xGraphics(xModel, uno::UNO_QUERY);
167 0 : xNameAccess = xGraphics->getGraphicObjects();
168 : }
169 :
170 : }
171 0 : else if( eType & nsSelectionType::SEL_TBL )
172 : {
173 0 : nPoolId = RES_POOLCOLL_LABEL_TABLE;
174 0 : sString = ::GetOldTabCat();
175 0 : uno::Reference< text::XTextTablesSupplier > xTables(xModel, uno::UNO_QUERY);
176 0 : xNameAccess = xTables->getTextTables();
177 0 : sObjectName = rSh.GetTableFormat()->GetName();
178 : }
179 0 : else if( eType & nsSelectionType::SEL_FRM )
180 : {
181 0 : nPoolId = RES_POOLCOLL_LABEL_FRAME;
182 0 : sString = ::GetOldFrmCat();
183 0 : uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY);
184 0 : xNameAccess = xFrms->getTextFrames();
185 0 : sObjectName = rSh.GetFlyName();
186 : }
187 0 : else if( eType == nsSelectionType::SEL_TXT )
188 : {
189 0 : nPoolId = RES_POOLCOLL_LABEL_FRAME;
190 0 : sString = ::GetOldFrmCat();
191 : }
192 0 : else if( eType & nsSelectionType::SEL_DRW )
193 : {
194 0 : nPoolId = RES_POOLCOLL_LABEL_DRAWING;
195 0 : sString = ::GetOldDrwCat();
196 : }
197 0 : if( nPoolId )
198 : {
199 0 : if (!sString.isEmpty())
200 0 : m_pCategoryBox->SetText( sString );
201 : else
202 0 : m_pCategoryBox->SetText(
203 0 : SwStyleNameMapper::GetUIName( nPoolId, OUString() ));
204 : }
205 :
206 : // aFormatBox
207 0 : sal_uInt16 nSelFormat = SVX_NUM_ARABIC;
208 0 : nCount = pMgr->GetFieldTypeCount();
209 0 : for ( size_t i = nCount; i; )
210 : {
211 0 : SwFieldType* pFieldType = pMgr->GetFieldType(USHRT_MAX, --i);
212 0 : if( pFieldType->GetName().equals(m_pCategoryBox->GetText()) )
213 : {
214 0 : nSelFormat = (sal_uInt16)static_cast<SwSetExpFieldType*>(pFieldType)->GetSeqFormat();
215 0 : break;
216 : }
217 : }
218 :
219 0 : nCount = pMgr->GetFormatCount(TYP_SEQFLD, false);
220 0 : for ( size_t i = 0; i < nCount; ++i )
221 : {
222 0 : m_pFormatBox->InsertEntry( pMgr->GetFormatStr(TYP_SEQFLD, i) );
223 0 : const sal_uInt16 nFormatId = pMgr->GetFormatId(TYP_SEQFLD, i);
224 0 : m_pFormatBox->SetEntryData( i, reinterpret_cast<void*>( nFormatId ) );
225 0 : if( nFormatId == nSelFormat )
226 0 : m_pFormatBox->SelectEntryPos( i );
227 : }
228 :
229 : // aPosBox
230 0 : switch (eType)
231 : {
232 : case nsSelectionType::SEL_GRF:
233 : case nsSelectionType::SEL_TBL:
234 : case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM:
235 : case nsSelectionType::SEL_TBL | nsSelectionType::SEL_TXT:
236 : case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM | nsSelectionType::SEL_TXT:
237 : case nsSelectionType::SEL_DRW:
238 : case nsSelectionType::SEL_DRW | nsSelectionType::SEL_BEZ:
239 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_ABOVE));
240 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_BELOW));
241 0 : break;
242 : case nsSelectionType::SEL_FRM:
243 : case nsSelectionType::SEL_TXT:
244 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_BEGINNING));
245 0 : m_pPosBox->InsertEntry(SW_RESSTR(STR_CAPTION_END ));
246 0 : break;
247 : }
248 0 : m_pPosBox->SelectEntryPos(1);
249 :
250 0 : m_pCategoryBox->GetModifyHdl().Call(m_pCategoryBox);
251 :
252 0 : m_pSepEdit->SetText(our_aSepTextSave);
253 0 : m_pTextEdit->GrabFocus();
254 0 : DrawSample();
255 0 : }
256 :
257 0 : void SwCaptionDialog::Apply()
258 : {
259 0 : InsCaptionOpt aOpt;
260 0 : aOpt.UseCaption() = true;
261 0 : OUString aName( m_pCategoryBox->GetText() );
262 0 : if ( aName == m_sNone )
263 : {
264 0 : aOpt.SetCategory( OUString() );
265 0 : aOpt.SetNumSeparator( OUString() );
266 : }
267 : else
268 : {
269 0 : aOpt.SetCategory(comphelper::string::strip(aName, ' '));
270 0 : aOpt.SetNumSeparator( m_pNumberingSeparatorED->GetText() );
271 : }
272 0 : aOpt.SetNumType( (sal_uInt16)reinterpret_cast<sal_uIntPtr>(m_pFormatBox->GetSelectEntryData()) );
273 0 : aOpt.SetSeparator( m_pSepEdit->IsEnabled() ? m_pSepEdit->GetText() : OUString() );
274 0 : aOpt.SetCaption( m_pTextEdit->GetText() );
275 0 : aOpt.SetPos( m_pPosBox->GetSelectEntryPos() );
276 0 : aOpt.IgnoreSeqOpts() = true;
277 0 : aOpt.CopyAttributes() = bCopyAttributes;
278 0 : aOpt.SetCharacterStyle( sCharacterStyle );
279 0 : rView.InsertCaption( &aOpt );
280 0 : our_aSepTextSave = m_pSepEdit->GetText();
281 0 : }
282 :
283 0 : IMPL_LINK( SwCaptionDialog, OptionHdl, Button*, pButton )
284 : {
285 0 : OUString sFieldTypeName = m_pCategoryBox->GetText();
286 0 : if(sFieldTypeName == m_sNone)
287 0 : sFieldTypeName.clear();
288 0 : ScopedVclPtrInstance< SwSequenceOptionDialog > aDlg( pButton, rView, sFieldTypeName );
289 0 : aDlg->SetApplyBorderAndShadow(bCopyAttributes);
290 0 : aDlg->SetCharacterStyle( sCharacterStyle );
291 0 : aDlg->SetOrderNumberingFirst( bOrderNumberingFirst );
292 0 : aDlg->Execute();
293 0 : bCopyAttributes = aDlg->IsApplyBorderAndShadow();
294 0 : sCharacterStyle = aDlg->GetCharacterStyle();
295 : //#i61007# order of captions
296 0 : if( bOrderNumberingFirst != aDlg->IsOrderNumberingFirst() )
297 : {
298 0 : bOrderNumberingFirst = aDlg->IsOrderNumberingFirst();
299 0 : SW_MOD()->GetModuleConfig()->SetCaptionOrderNumberingFirst(bOrderNumberingFirst);
300 0 : ApplyCaptionOrder();
301 : }
302 0 : DrawSample();
303 0 : return 0;
304 : }
305 :
306 0 : IMPL_LINK_NOARG(SwCaptionDialog, SelectHdl)
307 : {
308 0 : DrawSample();
309 0 : return 0;
310 : }
311 :
312 0 : IMPL_LINK_NOARG(SwCaptionDialog, ModifyHdl)
313 : {
314 0 : SwWrtShell &rSh = rView.GetWrtShell();
315 0 : OUString sFieldTypeName = m_pCategoryBox->GetText();
316 0 : bool bCorrectFieldName = !sFieldTypeName.isEmpty();
317 0 : bool bNone = sFieldTypeName == m_sNone;
318 0 : SwFieldType* pType = (bCorrectFieldName && !bNone)
319 0 : ? rSh.GetFieldType( RES_SETEXPFLD, sFieldTypeName )
320 0 : : 0;
321 0 : fprintf(stderr, "pType is %p\n", pType);
322 0 : fprintf(stderr, "bCorrectFieldName is %d\n", bCorrectFieldName);
323 0 : m_pOKButton->Enable( bCorrectFieldName &&
324 0 : (!pType ||
325 0 : static_cast<SwSetExpFieldType*>(pType)->GetType() == nsSwGetSetExpType::GSE_SEQ) );
326 0 : m_pOptionButton->Enable( m_pOKButton->IsEnabled() && !bNone );
327 0 : m_pNumberingSeparatorFT->Enable( bOrderNumberingFirst && !bNone );
328 0 : m_pNumberingSeparatorED->Enable( bOrderNumberingFirst && !bNone );
329 0 : m_pFormatText->Enable( !bNone );
330 0 : m_pFormatBox->Enable( !bNone );
331 0 : m_pSepText->Enable( !bNone );
332 0 : m_pSepEdit->Enable( !bNone );
333 0 : DrawSample();
334 0 : return 0;
335 : }
336 :
337 0 : IMPL_LINK_NOARG(SwCaptionDialog, CaptionHdl)
338 : {
339 0 : SfxItemSet aSet( rView.GetDocShell()->GetDoc()->GetAttrPool() );
340 0 : ScopedVclPtrInstance< SwCaptionOptDlg > aDlg( this, aSet );
341 0 : aDlg->Execute();
342 :
343 0 : return 0;
344 : }
345 :
346 0 : void SwCaptionDialog::DrawSample()
347 : {
348 0 : OUString aStr;
349 0 : OUString sCaption = m_pTextEdit->GetText();
350 :
351 : // number
352 0 : OUString sFieldTypeName = m_pCategoryBox->GetText();
353 0 : bool bNone = sFieldTypeName == m_sNone;
354 0 : if( !bNone )
355 : {
356 0 : const sal_uInt16 nNumFormat = (sal_uInt16)reinterpret_cast<sal_uIntPtr>(m_pFormatBox->GetSelectEntryData());
357 0 : if( SVX_NUM_NUMBER_NONE != nNumFormat )
358 : {
359 : // category
360 : //#i61007# order of captions
361 0 : if( !bOrderNumberingFirst )
362 : {
363 0 : aStr = sFieldTypeName;
364 0 : if ( !aStr.isEmpty() )
365 0 : aStr += " ";
366 : }
367 :
368 0 : SwWrtShell &rSh = rView.GetWrtShell();
369 : SwSetExpFieldType* pFieldType = static_cast<SwSetExpFieldType*>(rSh.GetFieldType(
370 0 : RES_SETEXPFLD, sFieldTypeName ));
371 0 : if( pFieldType && pFieldType->GetOutlineLvl() < MAXLEVEL )
372 : {
373 0 : sal_Int8 nLvl = pFieldType->GetOutlineLvl();
374 0 : SwNumberTree::tNumberVector aNumVector;
375 0 : for( sal_Int8 i = 0; i <= nLvl; ++i )
376 0 : aNumVector.push_back(1);
377 :
378 : OUString sNumber( rSh.GetOutlineNumRule()->
379 0 : MakeNumString(aNumVector, false ));
380 0 : if( !sNumber.isEmpty() )
381 0 : aStr += sNumber + pFieldType->GetDelimiter();
382 : }
383 :
384 0 : switch( nNumFormat )
385 : {
386 0 : case SVX_NUM_CHARS_UPPER_LETTER: aStr += "A"; break;
387 0 : case SVX_NUM_CHARS_UPPER_LETTER_N: aStr += "A"; break;
388 0 : case SVX_NUM_CHARS_LOWER_LETTER: aStr += "a"; break;
389 0 : case SVX_NUM_CHARS_LOWER_LETTER_N: aStr += "a"; break;
390 0 : case SVX_NUM_ROMAN_UPPER: aStr += "I"; break;
391 0 : case SVX_NUM_ROMAN_LOWER: aStr += "i"; break;
392 0 : default: aStr += "1"; break;
393 : }
394 : //#i61007# order of captions
395 0 : if( bOrderNumberingFirst )
396 : {
397 0 : aStr += m_pNumberingSeparatorED->GetText() + sFieldTypeName;
398 : }
399 :
400 : }
401 0 : if( !sCaption.isEmpty() )
402 : {
403 0 : aStr += m_pSepEdit->GetText();
404 : }
405 : }
406 0 : aStr += sCaption;
407 : // do preview!
408 0 : m_pPreview->SetPreviewText( aStr );
409 0 : }
410 :
411 0 : SwCaptionDialog::~SwCaptionDialog()
412 : {
413 0 : disposeOnce();
414 0 : }
415 :
416 0 : void SwCaptionDialog::dispose()
417 : {
418 0 : delete pMgr;
419 0 : m_pTextEdit.clear();
420 0 : m_pCategoryBox.clear();
421 0 : m_pFormatText.clear();
422 0 : m_pFormatBox.clear();
423 0 : m_pNumberingSeparatorFT.clear();
424 0 : m_pNumberingSeparatorED.clear();
425 0 : m_pSepText.clear();
426 0 : m_pSepEdit.clear();
427 0 : m_pPosText.clear();
428 0 : m_pPosBox.clear();
429 0 : m_pOKButton.clear();
430 0 : m_pAutoCaptionButton.clear();
431 0 : m_pOptionButton.clear();
432 0 : m_pPreview.clear();
433 0 : SvxStandardDialog::dispose();
434 0 : }
435 :
436 0 : SwSequenceOptionDialog::SwSequenceOptionDialog( vcl::Window *pParent, SwView &rV,
437 : const OUString& rSeqFieldType )
438 : : SvxStandardDialog( pParent, "CaptionOptionsDialog", "modules/swriter/ui/captionoptions.ui" ),
439 : rView( rV ),
440 0 : aFieldTypeName( rSeqFieldType )
441 : {
442 0 : get(m_pLbLevel, "level");
443 0 : get(m_pEdDelim, "separator");
444 0 : get(m_pLbCharStyle, "style");
445 0 : get(m_pApplyBorderAndShadowCB, "border_and_shadow");
446 0 : get(m_pLbCaptionOrder, "caption_order");
447 :
448 0 : SwWrtShell &rSh = rView.GetWrtShell();
449 :
450 0 : const OUString sNone(SW_RESSTR(SW_STR_NONE));
451 :
452 0 : m_pLbLevel->InsertEntry(sNone);
453 0 : for( sal_uInt16 n = 0; n < MAXLEVEL; ++n )
454 0 : m_pLbLevel->InsertEntry( OUString::number(n+1) );
455 :
456 : SwSetExpFieldType* pFieldType = static_cast<SwSetExpFieldType*>(rSh.GetFieldType(
457 0 : RES_SETEXPFLD, aFieldTypeName ));
458 :
459 0 : sal_Unicode nLvl = MAXLEVEL;
460 0 : OUString sDelim(": ");
461 0 : if( pFieldType )
462 : {
463 0 : sDelim = pFieldType->GetDelimiter();
464 0 : nLvl = pFieldType->GetOutlineLvl();
465 : }
466 :
467 0 : m_pLbLevel->SelectEntryPos( nLvl < MAXLEVEL ? nLvl + 1 : 0 );
468 0 : m_pEdDelim->SetText(sDelim);
469 :
470 0 : m_pLbCharStyle->InsertEntry(sNone);
471 0 : ::FillCharStyleListBox( *m_pLbCharStyle, rView.GetDocShell(), true, true );
472 0 : m_pLbCharStyle->SelectEntryPos( 0 );
473 0 : }
474 :
475 0 : SwSequenceOptionDialog::~SwSequenceOptionDialog()
476 : {
477 0 : disposeOnce();
478 0 : }
479 :
480 0 : void SwSequenceOptionDialog::dispose()
481 : {
482 0 : m_pLbLevel.clear();
483 0 : m_pEdDelim.clear();
484 0 : m_pLbCharStyle.clear();
485 0 : m_pApplyBorderAndShadowCB.clear();
486 0 : m_pLbCaptionOrder.clear();
487 0 : SvxStandardDialog::dispose();
488 0 : }
489 :
490 :
491 0 : void SwSequenceOptionDialog::Apply()
492 : {
493 0 : SwWrtShell &rSh = rView.GetWrtShell();
494 : SwSetExpFieldType* pFieldType = static_cast<SwSetExpFieldType*>(rSh.GetFieldType(
495 0 : RES_SETEXPFLD, aFieldTypeName ));
496 :
497 0 : sal_Int8 nLvl = (sal_Int8)( m_pLbLevel->GetSelectEntryPos() - 1);
498 0 : sal_Unicode cDelim = m_pEdDelim->GetText()[0];
499 :
500 0 : bool bUpdate = true;
501 0 : if( pFieldType )
502 : {
503 0 : pFieldType->SetDelimiter( OUString(cDelim) );
504 0 : pFieldType->SetOutlineLvl( nLvl );
505 : }
506 0 : else if( !aFieldTypeName.isEmpty() && nLvl < MAXLEVEL )
507 : {
508 : // then we have to insert that
509 0 : SwSetExpFieldType aFieldType( rSh.GetDoc(), aFieldTypeName, nsSwGetSetExpType::GSE_SEQ );
510 0 : aFieldType.SetDelimiter( OUString(cDelim) );
511 0 : aFieldType.SetOutlineLvl( nLvl );
512 0 : rSh.InsertFieldType( aFieldType );
513 : }
514 : else
515 0 : bUpdate = false;
516 :
517 0 : if( bUpdate )
518 0 : rSh.UpdateExpFields();
519 0 : }
520 :
521 0 : OUString SwSequenceOptionDialog::GetCharacterStyle() const
522 : {
523 0 : if(m_pLbCharStyle->GetSelectEntryPos())
524 0 : return m_pLbCharStyle->GetSelectEntry();
525 0 : return OUString();
526 : }
527 :
528 0 : void SwSequenceOptionDialog::SetCharacterStyle(const OUString& rStyle)
529 : {
530 0 : m_pLbCharStyle->SelectEntryPos(0);
531 0 : m_pLbCharStyle->SelectEntry(rStyle);
532 0 : }
533 :
534 : // #i61007# order of captions
535 0 : void SwCaptionDialog::ApplyCaptionOrder()
536 : {
537 0 : m_pNumberingSeparatorFT->Enable(bOrderNumberingFirst);
538 0 : m_pNumberingSeparatorED->Enable(bOrderNumberingFirst);
539 0 : }
540 :
541 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|