xref: /aoo42x/main/sw/source/ui/misc/docfnote.cxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_sw.hxx"
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION
32*cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
33*cdf0e10cSrcweir #endif
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir #include <svl/style.hxx>
37*cdf0e10cSrcweir #include <errhdl.hxx>
38*cdf0e10cSrcweir #include <wrtsh.hxx>
39*cdf0e10cSrcweir #ifndef _VIEW_HXX
40*cdf0e10cSrcweir #include <view.hxx>
41*cdf0e10cSrcweir #endif
42*cdf0e10cSrcweir #ifndef _DOCSH_HXX
43*cdf0e10cSrcweir #include <docsh.hxx>
44*cdf0e10cSrcweir #endif
45*cdf0e10cSrcweir #include <docfnote.hxx>
46*cdf0e10cSrcweir #include <impfnote.hxx>
47*cdf0e10cSrcweir #include <ftninfo.hxx>
48*cdf0e10cSrcweir #include <fmtcol.hxx>
49*cdf0e10cSrcweir #include <pagedesc.hxx>
50*cdf0e10cSrcweir #include <charfmt.hxx>
51*cdf0e10cSrcweir #include <docstyle.hxx>
52*cdf0e10cSrcweir #include <wdocsh.hxx>
53*cdf0e10cSrcweir #include <uitool.hxx>
54*cdf0e10cSrcweir #include <poolfmt.hxx>
55*cdf0e10cSrcweir #include <swstyle.h>
56*cdf0e10cSrcweir #ifndef _HELPID_H
57*cdf0e10cSrcweir #include <helpid.h>
58*cdf0e10cSrcweir #endif
59*cdf0e10cSrcweir #ifndef _MISC_HRC
60*cdf0e10cSrcweir #include <misc.hrc>
61*cdf0e10cSrcweir #endif
62*cdf0e10cSrcweir #ifndef _DOCFNOTE_HRC
63*cdf0e10cSrcweir #include <docfnote.hrc>
64*cdf0e10cSrcweir #endif
65*cdf0e10cSrcweir #ifndef _FRMUI_HRC
66*cdf0e10cSrcweir #include <frmui.hrc>
67*cdf0e10cSrcweir #endif
68*cdf0e10cSrcweir #include <SwStyleNameMapper.hxx>
69*cdf0e10cSrcweir 
70*cdf0e10cSrcweir SwFootNoteOptionDlg::SwFootNoteOptionDlg( Window *pParent, SwWrtShell &rS ) :
71*cdf0e10cSrcweir 	SfxTabDialog( pParent, SW_RES(DLG_DOC_FOOTNOTE) ),
72*cdf0e10cSrcweir 	rSh( rS )
73*cdf0e10cSrcweir {
74*cdf0e10cSrcweir 	FreeResource();
75*cdf0e10cSrcweir 	RemoveResetButton();
76*cdf0e10cSrcweir 
77*cdf0e10cSrcweir 	aOldOkHdl = GetOKButton().GetClickHdl();
78*cdf0e10cSrcweir 	GetOKButton().SetClickHdl( LINK( this, SwFootNoteOptionDlg, OkHdl ) );
79*cdf0e10cSrcweir 
80*cdf0e10cSrcweir 	AddTabPage( TP_FOOTNOTEOPTION, SwFootNoteOptionPage::Create, 0 );
81*cdf0e10cSrcweir 	AddTabPage( TP_ENDNOTEOPTION,  SwEndNoteOptionPage::Create, 0 );
82*cdf0e10cSrcweir }
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir void SwFootNoteOptionDlg::PageCreated( sal_uInt16 /*nId*/, SfxTabPage &rPage )
85*cdf0e10cSrcweir {
86*cdf0e10cSrcweir 	((SwEndNoteOptionPage&)rPage).SetShell( rSh );
87*cdf0e10cSrcweir }
88*cdf0e10cSrcweir 
89*cdf0e10cSrcweir SwFootNoteOptionDlg::~SwFootNoteOptionDlg()
90*cdf0e10cSrcweir {
91*cdf0e10cSrcweir }
92*cdf0e10cSrcweir 
93*cdf0e10cSrcweir IMPL_LINK( SwFootNoteOptionDlg, OkHdl, Button *, pBtn )
94*cdf0e10cSrcweir {
95*cdf0e10cSrcweir     SfxItemSet aDummySet(rSh.GetAttrPool(), 1, 1 );
96*cdf0e10cSrcweir 	SfxTabPage *pPage = GetTabPage( TP_FOOTNOTEOPTION );
97*cdf0e10cSrcweir 	if ( pPage )
98*cdf0e10cSrcweir         pPage->FillItemSet( aDummySet );
99*cdf0e10cSrcweir 	pPage = GetTabPage( TP_ENDNOTEOPTION  );
100*cdf0e10cSrcweir 	if ( pPage )
101*cdf0e10cSrcweir         pPage->FillItemSet( aDummySet );
102*cdf0e10cSrcweir 	aOldOkHdl.Call( pBtn );
103*cdf0e10cSrcweir 	return 0;
104*cdf0e10cSrcweir }
105*cdf0e10cSrcweir 
106*cdf0e10cSrcweir 
107*cdf0e10cSrcweir //----------------------------------------------------------------------
108*cdf0e10cSrcweir 
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir SwEndNoteOptionPage::SwEndNoteOptionPage( Window *pParent, sal_Bool bEN,
111*cdf0e10cSrcweir 										  const SfxItemSet &rSet ) :
112*cdf0e10cSrcweir 	SfxTabPage( pParent, SW_RES(bEN ? TP_ENDNOTEOPTION : TP_FOOTNOTEOPTION), rSet ),
113*cdf0e10cSrcweir     aNumFL         (this, SW_RES( FL_NUM        )),
114*cdf0e10cSrcweir 
115*cdf0e10cSrcweir     aNumTypeFT      (this, SW_RES( FT_NUMTYPE    )),
116*cdf0e10cSrcweir     aNumViewBox     (this, SW_RES( LB_NUMVIEW   ), INSERT_NUM_EXTENDED_TYPES),
117*cdf0e10cSrcweir     aOffsetLbl      (this, SW_RES( FT_OFFSET    )),
118*cdf0e10cSrcweir     aOffsetFld      (this, SW_RES( FLD_OFFSET   )),
119*cdf0e10cSrcweir     aNumCountFT     (this, SW_RES( FT_NUMCOUNT   )),
120*cdf0e10cSrcweir     aNumCountBox    (this, SW_RES( LB_NUMCOUNT  )),
121*cdf0e10cSrcweir     aPrefixFT       (this, SW_RES( FT_PREFIX    )),
122*cdf0e10cSrcweir     aPrefixED       (this, SW_RES( ED_PREFIX    )),
123*cdf0e10cSrcweir     aSuffixFT       (this, SW_RES( FT_SUFFIX    )),
124*cdf0e10cSrcweir     aSuffixED       (this, SW_RES( ED_SUFFIX    )),
125*cdf0e10cSrcweir     aPosFT          (this, SW_RES( FT_POS    )),
126*cdf0e10cSrcweir     aPosPageBox     (this, SW_RES( RB_POS_PAGE   )),
127*cdf0e10cSrcweir     aPosChapterBox  (this, SW_RES( RB_POS_CHAPTER)),
128*cdf0e10cSrcweir 
129*cdf0e10cSrcweir     aTemplFL       (this, SW_RES( FL_TEMPL      )),
130*cdf0e10cSrcweir     aParaTemplLbl   (this, SW_RES( FT_PARA_TEMPL)),
131*cdf0e10cSrcweir     aParaTemplBox   (this, SW_RES( LB_PARA_TEMPL)),
132*cdf0e10cSrcweir     aPageTemplLbl   (this, SW_RES( FT_PAGE_TEMPL)),
133*cdf0e10cSrcweir     aPageTemplBox   (this, SW_RES( LB_PAGE_TEMPL)),
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir     aCharTemplFL(          this, SW_RES(FL_CHAR_TEMPL)),
136*cdf0e10cSrcweir     aFtnCharAnchorTemplLbl( this, SW_RES( FT_ANCHR_CHARFMT)),
137*cdf0e10cSrcweir     aFtnCharAnchorTemplBox( this, SW_RES( LB_ANCHR_CHARFMT)),
138*cdf0e10cSrcweir     aFtnCharTextTemplLbl(   this, SW_RES( FT_TEXT_CHARFMT)),
139*cdf0e10cSrcweir     aFtnCharTextTemplBox(   this, SW_RES( LB_TEXT_CHARFMT)),
140*cdf0e10cSrcweir 
141*cdf0e10cSrcweir     aContFL        (this, SW_RES( FL_CONT       )),
142*cdf0e10cSrcweir     aContLbl        (this, SW_RES( FT_CONT      )),
143*cdf0e10cSrcweir     aContEdit       (this, SW_RES( ED_CONT      )),
144*cdf0e10cSrcweir     aContFromLbl    (this, SW_RES( FT_CONT_FROM )),
145*cdf0e10cSrcweir     aContFromEdit   (this, SW_RES( ED_CONT_FROM )),
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir     aNumDoc(aNumCountBox.GetEntry(FTNNUM_DOC)),
148*cdf0e10cSrcweir     aNumPage(aNumCountBox.GetEntry(FTNNUM_PAGE)),
149*cdf0e10cSrcweir     aNumChapter(aNumCountBox.GetEntry(FTNNUM_CHAPTER)),
150*cdf0e10cSrcweir     pSh( 0 ),
151*cdf0e10cSrcweir 	bPosDoc(sal_False),
152*cdf0e10cSrcweir 	bEndNote( bEN )
153*cdf0e10cSrcweir {
154*cdf0e10cSrcweir 	FreeResource();
155*cdf0e10cSrcweir 
156*cdf0e10cSrcweir     aPosPageBox.SetClickHdl(LINK(this, SwEndNoteOptionPage, PosPageHdl));
157*cdf0e10cSrcweir     aPosChapterBox.SetClickHdl(LINK(this, SwEndNoteOptionPage, PosChapterHdl));
158*cdf0e10cSrcweir     aNumCountBox.SetSelectHdl(LINK(this, SwEndNoteOptionPage, NumCountHdl));
159*cdf0e10cSrcweir 
160*cdf0e10cSrcweir 	aPosPageBox.SetAccessibleRelationMemberOf(&aPosFT);
161*cdf0e10cSrcweir 	aPosChapterBox.SetAccessibleRelationMemberOf(&aPosFT);
162*cdf0e10cSrcweir }
163*cdf0e10cSrcweir 
164*cdf0e10cSrcweir void SwEndNoteOptionPage::Reset( const SfxItemSet& )
165*cdf0e10cSrcweir {
166*cdf0e10cSrcweir 	SwEndNoteInfo *pInf = bEndNote ? new SwEndNoteInfo( pSh->GetEndNoteInfo() )
167*cdf0e10cSrcweir 								   : new SwFtnInfo( pSh->GetFtnInfo() );
168*cdf0e10cSrcweir 	SfxObjectShell * pDocSh = SfxObjectShell::Current();
169*cdf0e10cSrcweir 	sal_uInt16 i;
170*cdf0e10cSrcweir 
171*cdf0e10cSrcweir 	if(PTR_CAST(SwWebDocShell, pDocSh))
172*cdf0e10cSrcweir 	{
173*cdf0e10cSrcweir 		aParaTemplLbl	.Hide();
174*cdf0e10cSrcweir 		aParaTemplBox	.Hide();
175*cdf0e10cSrcweir 		aPageTemplLbl	.Hide();
176*cdf0e10cSrcweir 		aPageTemplBox	.Hide();
177*cdf0e10cSrcweir 		aFtnCharTextTemplLbl.Hide();
178*cdf0e10cSrcweir 		aFtnCharTextTemplBox.Hide();
179*cdf0e10cSrcweir 		aFtnCharAnchorTemplLbl.Hide();
180*cdf0e10cSrcweir 		aFtnCharAnchorTemplBox.Hide();
181*cdf0e10cSrcweir         aCharTemplFL   .Hide();
182*cdf0e10cSrcweir         aTemplFL       .Hide();
183*cdf0e10cSrcweir 	}
184*cdf0e10cSrcweir 	if ( bEndNote )
185*cdf0e10cSrcweir 	{
186*cdf0e10cSrcweir 		aPosPageBox.Hide();
187*cdf0e10cSrcweir 		aPosChapterBox.Hide();
188*cdf0e10cSrcweir 		aNumCountBox.Hide();
189*cdf0e10cSrcweir 		aContLbl.Hide();
190*cdf0e10cSrcweir 		aContEdit.Hide();
191*cdf0e10cSrcweir 		aContFromLbl.Hide();
192*cdf0e10cSrcweir 		aContFromEdit.Hide();
193*cdf0e10cSrcweir         aContFL.Hide();
194*cdf0e10cSrcweir 		bPosDoc = sal_True;
195*cdf0e10cSrcweir 	}
196*cdf0e10cSrcweir 	else
197*cdf0e10cSrcweir 	{
198*cdf0e10cSrcweir 		const SwFtnInfo &rInf = pSh->GetFtnInfo();
199*cdf0e10cSrcweir 		// Position (Seite, Kapitel) setzen
200*cdf0e10cSrcweir 		if ( rInf.ePos == FTNPOS_PAGE )
201*cdf0e10cSrcweir 		{
202*cdf0e10cSrcweir 			aPosPageBox.Check();
203*cdf0e10cSrcweir 			aPageTemplLbl.Enable(sal_False);
204*cdf0e10cSrcweir 			aPageTemplBox.Enable(sal_False);
205*cdf0e10cSrcweir 		}
206*cdf0e10cSrcweir 		else // if ( rInf.ePos == FTNPOS_CHAPTER )
207*cdf0e10cSrcweir 		{
208*cdf0e10cSrcweir 			aPosChapterBox.Check();
209*cdf0e10cSrcweir 			aNumCountBox.RemoveEntry(aNumPage);
210*cdf0e10cSrcweir             aNumCountBox.RemoveEntry(aNumChapter);
211*cdf0e10cSrcweir 			bPosDoc = sal_True;
212*cdf0e10cSrcweir 		}
213*cdf0e10cSrcweir 			// Verweistexte
214*cdf0e10cSrcweir 		aContEdit.SetText(rInf.aQuoVadis);
215*cdf0e10cSrcweir 		aContFromEdit.SetText(rInf.aErgoSum);
216*cdf0e10cSrcweir 
217*cdf0e10cSrcweir 			// gesammelt wo
218*cdf0e10cSrcweir 		SelectNumbering(rInf.eNum);
219*cdf0e10cSrcweir 	}
220*cdf0e10cSrcweir 
221*cdf0e10cSrcweir 		// Numerierung
222*cdf0e10cSrcweir 		// Art
223*cdf0e10cSrcweir 	aNumViewBox.SelectNumberingType( pInf->aFmt.GetNumberingType());
224*cdf0e10cSrcweir 	aOffsetFld.SetValue(pInf->nFtnOffset + 1);
225*cdf0e10cSrcweir 	aPrefixED.SetText(pInf->GetPrefix());
226*cdf0e10cSrcweir 	aSuffixED.SetText(pInf->GetSuffix());
227*cdf0e10cSrcweir 
228*cdf0e10cSrcweir 	const SwCharFmt* pCharFmt = pInf->GetCharFmt(
229*cdf0e10cSrcweir 						*pSh->GetView().GetDocShell()->GetDoc());
230*cdf0e10cSrcweir 	aFtnCharTextTemplBox.SelectEntry(pCharFmt->GetName());
231*cdf0e10cSrcweir 	aFtnCharTextTemplBox.SaveValue();
232*cdf0e10cSrcweir 
233*cdf0e10cSrcweir 	pCharFmt = pInf->GetAnchorCharFmt( *pSh->GetDoc() );
234*cdf0e10cSrcweir 	aFtnCharAnchorTemplBox.SelectEntry( pCharFmt->GetName() );
235*cdf0e10cSrcweir 	aFtnCharAnchorTemplBox.SaveValue();
236*cdf0e10cSrcweir 
237*cdf0e10cSrcweir 		// Vorlagen - Sonderbereiche
238*cdf0e10cSrcweir 		// Absatz
239*cdf0e10cSrcweir 	SfxStyleSheetBasePool* pStyleSheetPool = pSh->GetView().GetDocShell()->GetStyleSheetPool();
240*cdf0e10cSrcweir 	pStyleSheetPool->SetSearchMask(SFX_STYLE_FAMILY_PARA, SWSTYLEBIT_EXTRA);
241*cdf0e10cSrcweir 	SfxStyleSheetBase *pStyle = pStyleSheetPool->First();
242*cdf0e10cSrcweir 	while(pStyle)
243*cdf0e10cSrcweir 	{
244*cdf0e10cSrcweir 		aParaTemplBox.InsertEntry(pStyle->GetName());
245*cdf0e10cSrcweir 		pStyle = pStyleSheetPool->Next();
246*cdf0e10cSrcweir 	}
247*cdf0e10cSrcweir 
248*cdf0e10cSrcweir 	String sStr;
249*cdf0e10cSrcweir     SwStyleNameMapper::FillUIName( static_cast< sal_uInt16 >(bEndNote ? RES_POOLCOLL_ENDNOTE
250*cdf0e10cSrcweir                            : RES_POOLCOLL_FOOTNOTE), sStr );
251*cdf0e10cSrcweir 	if(LISTBOX_ENTRY_NOTFOUND == aParaTemplBox.GetEntryPos( sStr ) )
252*cdf0e10cSrcweir 		aParaTemplBox.InsertEntry( sStr );
253*cdf0e10cSrcweir 
254*cdf0e10cSrcweir 	SwTxtFmtColl* pColl = pInf->GetFtnTxtColl();
255*cdf0e10cSrcweir 	if( !pColl )
256*cdf0e10cSrcweir 		aParaTemplBox.SelectEntry( sStr );		// Default
257*cdf0e10cSrcweir 	else
258*cdf0e10cSrcweir 	{
259*cdf0e10cSrcweir 		ASSERT(!pColl->IsDefault(), "Defaultvorlage fuer Fussnoten ist falsch.");
260*cdf0e10cSrcweir 		const sal_uInt16 nPos = aParaTemplBox.GetEntryPos(pColl->GetName());
261*cdf0e10cSrcweir 		if( LISTBOX_ENTRY_NOTFOUND != nPos )
262*cdf0e10cSrcweir 			aParaTemplBox.SelectEntryPos( nPos );
263*cdf0e10cSrcweir 		else
264*cdf0e10cSrcweir 		{
265*cdf0e10cSrcweir 			aParaTemplBox.InsertEntry(pColl->GetName());
266*cdf0e10cSrcweir 			aParaTemplBox.SelectEntry(pColl->GetName());
267*cdf0e10cSrcweir 		}
268*cdf0e10cSrcweir 	}
269*cdf0e10cSrcweir 
270*cdf0e10cSrcweir 		// Seite
271*cdf0e10cSrcweir     for( i = RES_POOLPAGE_BEGIN; i < RES_POOLPAGE_END; ++i )
272*cdf0e10cSrcweir 		aPageTemplBox.InsertEntry(SwStyleNameMapper::GetUIName( i, aEmptyStr ));
273*cdf0e10cSrcweir 
274*cdf0e10cSrcweir 	sal_uInt16 nCount = pSh->GetPageDescCnt();
275*cdf0e10cSrcweir 	for(i = 0; i < nCount; ++i)
276*cdf0e10cSrcweir 	{
277*cdf0e10cSrcweir 		const SwPageDesc &rPageDesc = pSh->GetPageDesc(i);
278*cdf0e10cSrcweir 		if(LISTBOX_ENTRY_NOTFOUND == aPageTemplBox.GetEntryPos(rPageDesc.GetName()))
279*cdf0e10cSrcweir 			aPageTemplBox.InsertEntry(rPageDesc.GetName());
280*cdf0e10cSrcweir 	}
281*cdf0e10cSrcweir 
282*cdf0e10cSrcweir 	aPageTemplBox.SelectEntry( pInf->GetPageDesc( *pSh->GetDoc() )->GetName());
283*cdf0e10cSrcweir 	delete pInf;
284*cdf0e10cSrcweir }
285*cdf0e10cSrcweir 
286*cdf0e10cSrcweir SwEndNoteOptionPage::~SwEndNoteOptionPage()
287*cdf0e10cSrcweir {
288*cdf0e10cSrcweir }
289*cdf0e10cSrcweir 
290*cdf0e10cSrcweir SfxTabPage *SwEndNoteOptionPage::Create( Window *pParent, const SfxItemSet &rSet )
291*cdf0e10cSrcweir {
292*cdf0e10cSrcweir 	return new SwEndNoteOptionPage( pParent, sal_True, rSet );
293*cdf0e10cSrcweir }
294*cdf0e10cSrcweir 
295*cdf0e10cSrcweir /*------------------------------------------------------------------------
296*cdf0e10cSrcweir  Beschreibung:	Unterschiedliche Arten der Numerierung; da die Listbox
297*cdf0e10cSrcweir 				unterschiedlich viele Eintraege hat, hier Funktionen
298*cdf0e10cSrcweir 				fuer das Setzen und Erfragen der gemeinten Art
299*cdf0e10cSrcweir 				der Numerierung.
300*cdf0e10cSrcweir ------------------------------------------------------------------------*/
301*cdf0e10cSrcweir void SwEndNoteOptionPage::SelectNumbering(int eNum)
302*cdf0e10cSrcweir {
303*cdf0e10cSrcweir     String sSelect;
304*cdf0e10cSrcweir     switch(eNum)
305*cdf0e10cSrcweir     {
306*cdf0e10cSrcweir         case FTNNUM_DOC:
307*cdf0e10cSrcweir             sSelect = aNumDoc;
308*cdf0e10cSrcweir         break;
309*cdf0e10cSrcweir         case FTNNUM_PAGE:
310*cdf0e10cSrcweir             sSelect = aNumPage;
311*cdf0e10cSrcweir         break;
312*cdf0e10cSrcweir         case FTNNUM_CHAPTER:
313*cdf0e10cSrcweir             sSelect = aNumChapter;
314*cdf0e10cSrcweir         break;
315*cdf0e10cSrcweir #ifdef DBG_UTIL
316*cdf0e10cSrcweir         default:
317*cdf0e10cSrcweir             DBG_ERROR("Which numbering type?");
318*cdf0e10cSrcweir #endif
319*cdf0e10cSrcweir     }
320*cdf0e10cSrcweir     aNumCountBox.SelectEntry(sSelect);
321*cdf0e10cSrcweir     NumCountHdl( &aNumCountBox );
322*cdf0e10cSrcweir }
323*cdf0e10cSrcweir 
324*cdf0e10cSrcweir 
325*cdf0e10cSrcweir 
326*cdf0e10cSrcweir int SwEndNoteOptionPage::GetNumbering() const
327*cdf0e10cSrcweir {
328*cdf0e10cSrcweir 	const sal_uInt16 nPos = aNumCountBox.GetSelectEntryPos();
329*cdf0e10cSrcweir 	return (int) bPosDoc? nPos + 1: nPos;
330*cdf0e10cSrcweir }
331*cdf0e10cSrcweir 
332*cdf0e10cSrcweir /*-----------------09.02.98 11:17-------------------
333*cdf0e10cSrcweir 
334*cdf0e10cSrcweir --------------------------------------------------*/
335*cdf0e10cSrcweir void SwEndNoteOptionPage::SetShell( SwWrtShell &rShell )
336*cdf0e10cSrcweir {
337*cdf0e10cSrcweir 	pSh = &rShell;
338*cdf0e10cSrcweir 	// Zeichenvorlagen sammeln
339*cdf0e10cSrcweir 	aFtnCharTextTemplBox.Clear();
340*cdf0e10cSrcweir 	aFtnCharAnchorTemplBox.Clear();
341*cdf0e10cSrcweir 	::FillCharStyleListBox(aFtnCharTextTemplBox,
342*cdf0e10cSrcweir 						pSh->GetView().GetDocShell());
343*cdf0e10cSrcweir 
344*cdf0e10cSrcweir 	::FillCharStyleListBox(aFtnCharAnchorTemplBox,
345*cdf0e10cSrcweir 						pSh->GetView().GetDocShell());
346*cdf0e10cSrcweir }
347*cdf0e10cSrcweir 
348*cdf0e10cSrcweir /*------------------------------------------------------------------------
349*cdf0e10cSrcweir  Beschreibung:	Handler hinter dem Button fuer Sammeln der Fussnote
350*cdf0e10cSrcweir 				auf der Seite.
351*cdf0e10cSrcweir 				In diesem Fall koennen alle Numerierungsarten verwendet
352*cdf0e10cSrcweir 				werden.
353*cdf0e10cSrcweir ------------------------------------------------------------------------*/
354*cdf0e10cSrcweir 
355*cdf0e10cSrcweir 
356*cdf0e10cSrcweir IMPL_LINK( SwEndNoteOptionPage, PosPageHdl, Button *, EMPTYARG )
357*cdf0e10cSrcweir {
358*cdf0e10cSrcweir 	const SwFtnNum eNum = (const SwFtnNum)GetNumbering();
359*cdf0e10cSrcweir 	bPosDoc = sal_False;
360*cdf0e10cSrcweir     if(LISTBOX_ENTRY_NOTFOUND == aNumCountBox.GetEntryPos(aNumPage))
361*cdf0e10cSrcweir     {
362*cdf0e10cSrcweir 		aNumCountBox.InsertEntry(aNumPage, FTNNUM_PAGE);
363*cdf0e10cSrcweir         aNumCountBox.InsertEntry(aNumChapter, FTNNUM_CHAPTER);
364*cdf0e10cSrcweir         SelectNumbering(eNum);
365*cdf0e10cSrcweir 	}
366*cdf0e10cSrcweir 	aPageTemplLbl.Enable(sal_False);
367*cdf0e10cSrcweir 	aPageTemplBox.Enable(sal_False);
368*cdf0e10cSrcweir 
369*cdf0e10cSrcweir 	return 0;
370*cdf0e10cSrcweir }
371*cdf0e10cSrcweir 
372*cdf0e10cSrcweir /*------------------------------------------------------------------------
373*cdf0e10cSrcweir  Beschreibung:
374*cdf0e10cSrcweir ------------------------------------------------------------------------*/
375*cdf0e10cSrcweir 
376*cdf0e10cSrcweir 
377*cdf0e10cSrcweir IMPL_LINK( SwEndNoteOptionPage, NumCountHdl, ListBox*, EMPTYARG )
378*cdf0e10cSrcweir {
379*cdf0e10cSrcweir 	sal_Bool bEnable = sal_True;
380*cdf0e10cSrcweir 	if( aNumCountBox.GetEntryCount() - 1 != aNumCountBox.GetSelectEntryPos() )
381*cdf0e10cSrcweir 	{
382*cdf0e10cSrcweir 		bEnable = sal_False;
383*cdf0e10cSrcweir 		aOffsetFld.SetValue(1);
384*cdf0e10cSrcweir 	}
385*cdf0e10cSrcweir 	aOffsetLbl.Enable(bEnable);
386*cdf0e10cSrcweir 	aOffsetFld.Enable(bEnable);
387*cdf0e10cSrcweir 	return 0;
388*cdf0e10cSrcweir }
389*cdf0e10cSrcweir 
390*cdf0e10cSrcweir /*------------------------------------------------------------------------
391*cdf0e10cSrcweir  Beschreibung:	Handler hinter dem Button fuer Sammeln der Fussnote
392*cdf0e10cSrcweir 				am Kapitel oder Dokumentende.
393*cdf0e10cSrcweir 				In diesem Fall kann keine seitenweise Numerierung verwendet
394*cdf0e10cSrcweir 				werden.
395*cdf0e10cSrcweir ------------------------------------------------------------------------*/
396*cdf0e10cSrcweir 
397*cdf0e10cSrcweir 
398*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwEndNoteOptionPage, PosChapterHdl, Button *, EMPTYARG )
399*cdf0e10cSrcweir {
400*cdf0e10cSrcweir 	if ( !bPosDoc )
401*cdf0e10cSrcweir 		SelectNumbering(FTNNUM_DOC);
402*cdf0e10cSrcweir 
403*cdf0e10cSrcweir 	bPosDoc = sal_True;
404*cdf0e10cSrcweir 	aNumCountBox.RemoveEntry(aNumPage);
405*cdf0e10cSrcweir     aNumCountBox.RemoveEntry(aNumChapter);
406*cdf0e10cSrcweir     aPageTemplLbl.Enable();
407*cdf0e10cSrcweir 	aPageTemplBox.Enable();
408*cdf0e10cSrcweir 	return 0;
409*cdf0e10cSrcweir }
410*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwEndNoteOptionPage, PosChapterHdl, Button *, EMPTYARG )
411*cdf0e10cSrcweir 
412*cdf0e10cSrcweir SwCharFmt* lcl_GetCharFormat( SwWrtShell* pSh, const String& rCharFmtName )
413*cdf0e10cSrcweir {
414*cdf0e10cSrcweir 	SwCharFmt* pFmt = 0;
415*cdf0e10cSrcweir 	sal_uInt16 nChCount = pSh->GetCharFmtCount();
416*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i< nChCount; i++)
417*cdf0e10cSrcweir 	{
418*cdf0e10cSrcweir 		SwCharFmt& rChFmt = pSh->GetCharFmt(i);
419*cdf0e10cSrcweir 		if(rChFmt.GetName() == rCharFmtName )
420*cdf0e10cSrcweir 		{
421*cdf0e10cSrcweir 			pFmt = &rChFmt;
422*cdf0e10cSrcweir 			break;
423*cdf0e10cSrcweir 		}
424*cdf0e10cSrcweir 	}
425*cdf0e10cSrcweir 	if(!pFmt)
426*cdf0e10cSrcweir 	{
427*cdf0e10cSrcweir 		SfxStyleSheetBasePool* pPool = pSh->GetView().GetDocShell()->GetStyleSheetPool();
428*cdf0e10cSrcweir 		SfxStyleSheetBase* pBase;
429*cdf0e10cSrcweir 		pBase = pPool->Find(rCharFmtName, SFX_STYLE_FAMILY_CHAR);
430*cdf0e10cSrcweir 		if(!pBase)
431*cdf0e10cSrcweir 			pBase = &pPool->Make(rCharFmtName, SFX_STYLE_FAMILY_CHAR);
432*cdf0e10cSrcweir 		pFmt = ((SwDocStyleSheet*)pBase)->GetCharFmt();
433*cdf0e10cSrcweir 	}
434*cdf0e10cSrcweir 	return pFmt;
435*cdf0e10cSrcweir }
436*cdf0e10cSrcweir 
437*cdf0e10cSrcweir sal_Bool SwEndNoteOptionPage::FillItemSet( SfxItemSet & )
438*cdf0e10cSrcweir {
439*cdf0e10cSrcweir 	SwEndNoteInfo *pInf = bEndNote ? new SwEndNoteInfo() : new SwFtnInfo();
440*cdf0e10cSrcweir 
441*cdf0e10cSrcweir     pInf->nFtnOffset = static_cast< sal_uInt16 >(aOffsetFld.GetValue() -1);
442*cdf0e10cSrcweir 	pInf->aFmt.SetNumberingType(aNumViewBox.GetSelectedNumberingType() );
443*cdf0e10cSrcweir 	pInf->SetPrefix(aPrefixED.GetText());
444*cdf0e10cSrcweir 	pInf->SetSuffix(aSuffixED.GetText());
445*cdf0e10cSrcweir 
446*cdf0e10cSrcweir 	pInf->SetCharFmt( lcl_GetCharFormat( pSh,
447*cdf0e10cSrcweir 						aFtnCharTextTemplBox.GetSelectEntry() ) );
448*cdf0e10cSrcweir 	pInf->SetAnchorCharFmt( lcl_GetCharFormat( pSh,
449*cdf0e10cSrcweir 						aFtnCharAnchorTemplBox.GetSelectEntry() ) );
450*cdf0e10cSrcweir 
451*cdf0e10cSrcweir 	// Absatzvorlage
452*cdf0e10cSrcweir 	sal_uInt16 nPos = aParaTemplBox.GetSelectEntryPos();
453*cdf0e10cSrcweir 	if(LISTBOX_ENTRY_NOTFOUND != nPos)
454*cdf0e10cSrcweir 	{
455*cdf0e10cSrcweir 		const String aFmtName( aParaTemplBox.GetSelectEntry() );
456*cdf0e10cSrcweir 		SwTxtFmtColl *pColl = pSh->GetParaStyle(aFmtName, SwWrtShell::GETSTYLE_CREATEANY);
457*cdf0e10cSrcweir 		ASSERT(pColl, "Absatzvorlage nicht gefunden.");
458*cdf0e10cSrcweir 		pInf->SetFtnTxtColl(*pColl);
459*cdf0e10cSrcweir 	}
460*cdf0e10cSrcweir 
461*cdf0e10cSrcweir 	// Seitenvorlage
462*cdf0e10cSrcweir 	pInf->ChgPageDesc( pSh->FindPageDescByName(
463*cdf0e10cSrcweir 								aPageTemplBox.GetSelectEntry(), sal_True ) );
464*cdf0e10cSrcweir 
465*cdf0e10cSrcweir 	if ( bEndNote )
466*cdf0e10cSrcweir 	{
467*cdf0e10cSrcweir 		if ( !(*pInf == pSh->GetEndNoteInfo()) )
468*cdf0e10cSrcweir 			pSh->SetEndNoteInfo( *pInf );
469*cdf0e10cSrcweir 	}
470*cdf0e10cSrcweir 	else
471*cdf0e10cSrcweir 	{
472*cdf0e10cSrcweir 		SwFtnInfo *pI = (SwFtnInfo*)pInf;
473*cdf0e10cSrcweir 		pI->ePos = aPosPageBox.IsChecked() ? FTNPOS_PAGE : FTNPOS_CHAPTER;
474*cdf0e10cSrcweir 		pI->eNum = (SwFtnNum)GetNumbering();
475*cdf0e10cSrcweir 		pI->aQuoVadis = aContEdit.GetText();
476*cdf0e10cSrcweir 		pI->aErgoSum = aContFromEdit.GetText();
477*cdf0e10cSrcweir 		if ( !(*pI == pSh->GetFtnInfo()) )
478*cdf0e10cSrcweir 			pSh->SetFtnInfo( *pI );
479*cdf0e10cSrcweir 	}
480*cdf0e10cSrcweir 	delete pInf;
481*cdf0e10cSrcweir 	return sal_True;
482*cdf0e10cSrcweir }
483*cdf0e10cSrcweir 
484*cdf0e10cSrcweir SwFootNoteOptionPage::SwFootNoteOptionPage( Window *pParent, const SfxItemSet &rSet ) :
485*cdf0e10cSrcweir 	SwEndNoteOptionPage( pParent, sal_False, rSet )
486*cdf0e10cSrcweir {
487*cdf0e10cSrcweir }
488*cdf0e10cSrcweir 
489*cdf0e10cSrcweir SwFootNoteOptionPage::~SwFootNoteOptionPage()
490*cdf0e10cSrcweir {
491*cdf0e10cSrcweir }
492*cdf0e10cSrcweir 
493*cdf0e10cSrcweir SfxTabPage *SwFootNoteOptionPage::Create(Window *pParent, const SfxItemSet &rSet )
494*cdf0e10cSrcweir {
495*cdf0e10cSrcweir 	return new SwFootNoteOptionPage( pParent, rSet );
496*cdf0e10cSrcweir }
497*cdf0e10cSrcweir 
498*cdf0e10cSrcweir 
499*cdf0e10cSrcweir 
500*cdf0e10cSrcweir 
501*cdf0e10cSrcweir 
502*cdf0e10cSrcweir 
503*cdf0e10cSrcweir 
504