xref: /AOO41X/main/sw/source/ui/index/swuiidxmrk.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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 #ifdef SW_DLLIMPLEMENTATION
31*cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
32*cdf0e10cSrcweir #endif
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir #include "swuiidxmrk.hxx"
35*cdf0e10cSrcweir #include <hintids.hxx>
36*cdf0e10cSrcweir #include <helpid.h>
37*cdf0e10cSrcweir #define _SVSTDARR_STRINGSSORT
38*cdf0e10cSrcweir #include <svl/svstdarr.hxx>
39*cdf0e10cSrcweir #include <comphelper/processfactory.hxx>
40*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
41*cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
42*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
43*cdf0e10cSrcweir #include <com/sun/star/util/SearchOptions.hpp>
44*cdf0e10cSrcweir #include <com/sun/star/util/SearchFlags.hpp>
45*cdf0e10cSrcweir #include <com/sun/star/i18n/TransliterationModules.hpp>
46*cdf0e10cSrcweir #include <svl/stritem.hxx>
47*cdf0e10cSrcweir #include <vcl/msgbox.hxx>
48*cdf0e10cSrcweir #include <sfx2/dispatch.hxx>
49*cdf0e10cSrcweir #include <svl/eitem.hxx>
50*cdf0e10cSrcweir #include <svtools/txtcmp.hxx>
51*cdf0e10cSrcweir #include <editeng/scripttypeitem.hxx>
52*cdf0e10cSrcweir #include <svl/itemset.hxx>
53*cdf0e10cSrcweir #include <editeng/langitem.hxx>
54*cdf0e10cSrcweir #include "editeng/unolingu.hxx"
55*cdf0e10cSrcweir #include <swtypes.hxx>
56*cdf0e10cSrcweir #include <idxmrk.hxx>
57*cdf0e10cSrcweir #include <txttxmrk.hxx>
58*cdf0e10cSrcweir #include <wrtsh.hxx>
59*cdf0e10cSrcweir #include <view.hxx>
60*cdf0e10cSrcweir #include <multmrk.hxx>
61*cdf0e10cSrcweir #include <swundo.hxx>               	// fuer Undo-Ids
62*cdf0e10cSrcweir #include <cmdid.h>
63*cdf0e10cSrcweir #include <index.hrc>
64*cdf0e10cSrcweir #include <idxmrk.hrc>
65*cdf0e10cSrcweir #include <swmodule.hxx>
66*cdf0e10cSrcweir #include <fldmgr.hxx>
67*cdf0e10cSrcweir #include <fldbas.hxx>
68*cdf0e10cSrcweir #include <utlui.hrc>
69*cdf0e10cSrcweir #include <swcont.hxx>
70*cdf0e10cSrcweir #include <svl/cjkoptions.hxx>
71*cdf0e10cSrcweir #include <ndtxt.hxx>
72*cdf0e10cSrcweir #include <breakit.hxx>
73*cdf0e10cSrcweir #include <SwRewriter.hxx>
74*cdf0e10cSrcweir 
75*cdf0e10cSrcweir #include "swuiidxmrk.hxx"
76*cdf0e10cSrcweir #include <unomid.h>
77*cdf0e10cSrcweir 
78*cdf0e10cSrcweir 
79*cdf0e10cSrcweir #define POS_CONTENT 0
80*cdf0e10cSrcweir #define POS_INDEX   1
81*cdf0e10cSrcweir #define POS_USER    2
82*cdf0e10cSrcweir 
83*cdf0e10cSrcweir static sal_uInt16 nTypePos = 1; // TOX_INDEX as standard
84*cdf0e10cSrcweir static sal_uInt16 nKey1Pos = USHRT_MAX;
85*cdf0e10cSrcweir 
86*cdf0e10cSrcweir static sal_uInt16 nKey2Pos = USHRT_MAX;
87*cdf0e10cSrcweir 
88*cdf0e10cSrcweir using namespace com::sun::star;
89*cdf0e10cSrcweir using namespace com::sun::star::i18n;
90*cdf0e10cSrcweir using namespace com::sun::star::lang;
91*cdf0e10cSrcweir using namespace com::sun::star::util;
92*cdf0e10cSrcweir using namespace com::sun::star::i18n;
93*cdf0e10cSrcweir using ::rtl::OUString;
94*cdf0e10cSrcweir using namespace ::comphelper;
95*cdf0e10cSrcweir using namespace ::com::sun::star;
96*cdf0e10cSrcweir 
97*cdf0e10cSrcweir /*--------------------------------------------------------------------
98*cdf0e10cSrcweir 	 Beschreibung:	Dialog zum Einfuegen einer Verzeichnismarkierung
99*cdf0e10cSrcweir  --------------------------------------------------------------------*/
100*cdf0e10cSrcweir SwIndexMarkDlg::SwIndexMarkDlg(Window *pParent,
101*cdf0e10cSrcweir 							   sal_Bool bNewDlg,
102*cdf0e10cSrcweir 							   const ResId& rResId,
103*cdf0e10cSrcweir                                sal_Int32 _nOptionsId, SwWrtShell& rWrtShell ) :
104*cdf0e10cSrcweir 	  Window(pParent, rResId),
105*cdf0e10cSrcweir     aIndexFL(this,  SW_RES(FL_INDEX )),
106*cdf0e10cSrcweir     aTypeFT (this,  SW_RES(LBL_INDEX    )),
107*cdf0e10cSrcweir     aTypeDCB(this,  SW_RES(DCB_INDEX    )),
108*cdf0e10cSrcweir 	aNewBT(this, 	SW_RES(BT_NEW 	)),
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir     aEntryFT(this,  SW_RES(LBL_ENTRY    )),
111*cdf0e10cSrcweir     aEntryED(this,  SW_RES(SL_ENTRY )),
112*cdf0e10cSrcweir     aPhoneticFT0(this,  SW_RES(FT_PHONETIC_1 )),
113*cdf0e10cSrcweir     aPhoneticED0(this,  SW_RES(ED_PHONETIC_1 )),
114*cdf0e10cSrcweir 
115*cdf0e10cSrcweir     aKeyFT(this,    SW_RES(LBL_KEY  )),
116*cdf0e10cSrcweir     aKeyDCB(this,   SW_RES(DCB_KEY  )),
117*cdf0e10cSrcweir     aPhoneticFT1(this,  SW_RES(FT_PHONETIC_2 )),
118*cdf0e10cSrcweir     aPhoneticED1(this,  SW_RES(ED_PHONETIC_2 )),
119*cdf0e10cSrcweir 
120*cdf0e10cSrcweir     aKey2FT(this,   SW_RES(LBL_KEY2 )),
121*cdf0e10cSrcweir     aKey2DCB(this,  SW_RES(DCB_KEY2 )),
122*cdf0e10cSrcweir     aPhoneticFT2(this,  SW_RES(FT_PHONETIC_3 )),
123*cdf0e10cSrcweir     aPhoneticED2(this,  SW_RES(ED_PHONETIC_3 )),
124*cdf0e10cSrcweir 
125*cdf0e10cSrcweir     aLevelFT(this,  SW_RES(LBL_LEVEL    )),
126*cdf0e10cSrcweir     aLevelED(this,  SW_RES(SL_LEVEL )),
127*cdf0e10cSrcweir     aMainEntryCB(this, SW_RES(CB_MAIN_ENTRY )),
128*cdf0e10cSrcweir     aApplyToAllCB(this,SW_RES(CB_APPLY_TO_ALL)),
129*cdf0e10cSrcweir     aSearchCaseSensitiveCB(this,    SW_RES(CB_CASESENSITIVE )),
130*cdf0e10cSrcweir     aSearchCaseWordOnlyCB(this,     SW_RES(CB_WORDONLY      )),
131*cdf0e10cSrcweir 
132*cdf0e10cSrcweir 
133*cdf0e10cSrcweir     aOKBT(this,     SW_RES(BT_OK    )),
134*cdf0e10cSrcweir     aCancelBT(this, SW_RES(BT_CANCEL )),
135*cdf0e10cSrcweir     aHelpBT(this,   SW_RES(BT_HELP   )),
136*cdf0e10cSrcweir     aDelBT(this,    SW_RES(BT_DEL   )),
137*cdf0e10cSrcweir 
138*cdf0e10cSrcweir     aPrevSameBT(this,SW_RES(BT_PREVSAME)),
139*cdf0e10cSrcweir     aNextSameBT(this,SW_RES(BT_NXTSAME)),
140*cdf0e10cSrcweir     aPrevBT(this,   SW_RES(BT_PREV  )),
141*cdf0e10cSrcweir     aNextBT(this,   SW_RES(BT_NXT   )),
142*cdf0e10cSrcweir 
143*cdf0e10cSrcweir     nOptionsId( _nOptionsId ),
144*cdf0e10cSrcweir     bDel(sal_False),
145*cdf0e10cSrcweir     bNewMark(bNewDlg),
146*cdf0e10cSrcweir     bSelected(sal_False),
147*cdf0e10cSrcweir 
148*cdf0e10cSrcweir     bPhoneticED0_ChangedByUser(sal_False),
149*cdf0e10cSrcweir 	bPhoneticED1_ChangedByUser(sal_False),
150*cdf0e10cSrcweir 	bPhoneticED2_ChangedByUser(sal_False),
151*cdf0e10cSrcweir     nLangForPhoneticReading(2052),
152*cdf0e10cSrcweir     bIsPhoneticReadingEnabled(sal_False),
153*cdf0e10cSrcweir     xExtendedIndexEntrySupplier(NULL),
154*cdf0e10cSrcweir     pTOXMgr(0),
155*cdf0e10cSrcweir     pSh(&rWrtShell)
156*cdf0e10cSrcweir {
157*cdf0e10cSrcweir 	aNewBT.SetAccessibleRelationMemberOf(&aIndexFL);
158*cdf0e10cSrcweir 
159*cdf0e10cSrcweir 	if( SvtCJKOptions().IsCJKFontEnabled() )
160*cdf0e10cSrcweir 	{
161*cdf0e10cSrcweir 		uno::Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
162*cdf0e10cSrcweir 
163*cdf0e10cSrcweir 		xExtendedIndexEntrySupplier =
164*cdf0e10cSrcweir             uno::Reference< i18n::XExtendedIndexEntrySupplier > (
165*cdf0e10cSrcweir 					xMSF->createInstance( C2U("com.sun.star.i18n.IndexEntrySupplier") ),
166*cdf0e10cSrcweir 																		uno::UNO_QUERY );
167*cdf0e10cSrcweir 	}
168*cdf0e10cSrcweir 
169*cdf0e10cSrcweir 	SetStyle(GetStyle()|WB_DIALOGCONTROL);
170*cdf0e10cSrcweir 	FreeResource();
171*cdf0e10cSrcweir 	aOKBT			.SetHelpId(HID_INSERT_IDX_MRK_OK   		);
172*cdf0e10cSrcweir 	aCancelBT		.SetHelpId(HID_INSERT_IDX_MRK_CLOSE		);
173*cdf0e10cSrcweir 	aDelBT      	.SetHelpId(HID_INSERT_IDX_MRK_DELETE	);
174*cdf0e10cSrcweir 	aNewBT      	.SetHelpId(HID_INSERT_IDX_MRK_NEW		);
175*cdf0e10cSrcweir 	aPrevBT     	.SetHelpId(HID_INSERT_IDX_MRK_PREV		);
176*cdf0e10cSrcweir 	aPrevSameBT 	.SetHelpId(HID_INSERT_IDX_MRK_PREV_SAME	);
177*cdf0e10cSrcweir 	aNextBT     	.SetHelpId(HID_INSERT_IDX_MRK_NEXT		);
178*cdf0e10cSrcweir 	aNextSameBT 	.SetHelpId(HID_INSERT_IDX_MRK_NEXT_SAME	);
179*cdf0e10cSrcweir 	aTypeDCB    	.SetHelpId(HID_INSERT_IDX_MRK_TYPE		);
180*cdf0e10cSrcweir 	aEntryED    	.SetHelpId(HID_INSERT_IDX_MRK_ENTRY		);
181*cdf0e10cSrcweir 	aKeyDCB     	.SetHelpId(HID_INSERT_IDX_MRK_PRIM_KEY	);
182*cdf0e10cSrcweir 	aKey2DCB    	.SetHelpId(HID_INSERT_IDX_MRK_SEC_KEY	);
183*cdf0e10cSrcweir 	aLevelED    	.SetHelpId(HID_INSERT_IDX_MRK_LEVEL		);
184*cdf0e10cSrcweir 	aMainEntryCB	.SetHelpId(HID_INSERT_IDX_MRK_MAIN_ENTRY);
185*cdf0e10cSrcweir 	aApplyToAllCB	.SetHelpId(HID_INSERT_IDX_MRK_APPLY_ALL	);
186*cdf0e10cSrcweir 	aPhoneticED0	.SetHelpId(HID_INSERT_IDX_MRK_PHONETIC_READING );
187*cdf0e10cSrcweir 	aPhoneticED1	.SetHelpId(HID_INSERT_IDX_MRK_PHONETIC_READING );
188*cdf0e10cSrcweir 	aPhoneticED2	.SetHelpId(HID_INSERT_IDX_MRK_PHONETIC_READING );
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir 	aSearchCaseSensitiveCB.SetHelpId(	HID_INSERT_IDX_MRK_SRCH_CASESENSITIVE	);
191*cdf0e10cSrcweir 	aSearchCaseWordOnlyCB.SetHelpId(	HID_INSERT_IDX_MRK_SRCH_WORDONLY		);
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 
194*cdf0e10cSrcweir 	GetParent()->SetText( SW_RESSTR( bNewMark ? STR_IDXMRK_INSERT : STR_IDXMRK_EDIT));
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir 	aDelBT.SetClickHdl(LINK(this,SwIndexMarkDlg, 		DelHdl));
197*cdf0e10cSrcweir 	aPrevBT.SetClickHdl(LINK(this,SwIndexMarkDlg, 		PrevHdl));
198*cdf0e10cSrcweir 	aPrevSameBT.SetClickHdl(LINK(this,SwIndexMarkDlg, 	PrevSameHdl));
199*cdf0e10cSrcweir 	aNextBT.SetClickHdl(LINK(this,SwIndexMarkDlg, 		NextHdl));
200*cdf0e10cSrcweir 	aNextSameBT.SetClickHdl(LINK(this,SwIndexMarkDlg, 	NextSameHdl));
201*cdf0e10cSrcweir 	//aTypeDCB.SetModifyHdl(LINK(this,SwIndexMarkDlg, 	ModifyHdl));
202*cdf0e10cSrcweir 	aTypeDCB.SetSelectHdl(LINK(this,SwIndexMarkDlg, 	ModifyHdl));
203*cdf0e10cSrcweir 	aKeyDCB.SetModifyHdl(LINK(this,SwIndexMarkDlg, 		KeyDCBModifyHdl));
204*cdf0e10cSrcweir 	aKey2DCB.SetModifyHdl(LINK(this,SwIndexMarkDlg, 	KeyDCBModifyHdl));
205*cdf0e10cSrcweir 	aOKBT.SetClickHdl(LINK(this,SwIndexMarkDlg, 		InsertHdl));
206*cdf0e10cSrcweir 	aCancelBT.SetClickHdl(LINK(this,SwIndexMarkDlg, 	CloseHdl));
207*cdf0e10cSrcweir 	aEntryED.SetModifyHdl(LINK(this,SwIndexMarkDlg, 	ModifyHdl));
208*cdf0e10cSrcweir 	aNewBT.SetClickHdl(LINK(this, SwIndexMarkDlg,       NewUserIdxHdl));
209*cdf0e10cSrcweir 	aApplyToAllCB.SetClickHdl(LINK(this, SwIndexMarkDlg, SearchTypeHdl));
210*cdf0e10cSrcweir 	aPhoneticED0.SetModifyHdl(LINK(this,SwIndexMarkDlg, PhoneticEDModifyHdl));
211*cdf0e10cSrcweir 	aPhoneticED1.SetModifyHdl(LINK(this,SwIndexMarkDlg, PhoneticEDModifyHdl));
212*cdf0e10cSrcweir 	aPhoneticED2.SetModifyHdl(LINK(this,SwIndexMarkDlg, PhoneticEDModifyHdl));
213*cdf0e10cSrcweir 
214*cdf0e10cSrcweir 	if(bNewMark)
215*cdf0e10cSrcweir 	{
216*cdf0e10cSrcweir 		aDelBT.Hide();
217*cdf0e10cSrcweir 
218*cdf0e10cSrcweir 		{
219*cdf0e10cSrcweir 			ImageList aTempList( SW_RES( IMG_NAVI_ENTRYBMPH ) );
220*cdf0e10cSrcweir 			aNewBT.SetModeImage( aTempList.GetImage( SID_SW_START + CONTENT_TYPE_INDEX ), BMP_COLOR_HIGHCONTRAST );
221*cdf0e10cSrcweir 		}
222*cdf0e10cSrcweir 
223*cdf0e10cSrcweir 		{
224*cdf0e10cSrcweir 			ImageList aTempList( SW_RES( IMG_NAVI_ENTRYBMP ) );
225*cdf0e10cSrcweir 			aNewBT.SetModeImage( aTempList.GetImage( SID_SW_START + CONTENT_TYPE_INDEX ), BMP_COLOR_NORMAL );
226*cdf0e10cSrcweir 		}
227*cdf0e10cSrcweir 	}
228*cdf0e10cSrcweir 	else
229*cdf0e10cSrcweir 	{
230*cdf0e10cSrcweir 		aNewBT.Hide();
231*cdf0e10cSrcweir 		OKButton aTmp(this, WB_HIDE);
232*cdf0e10cSrcweir 		aOKBT.SetText( aTmp.GetText() );
233*cdf0e10cSrcweir 	}
234*cdf0e10cSrcweir 
235*cdf0e10cSrcweir     aEntryED.GrabFocus();
236*cdf0e10cSrcweir }
237*cdf0e10cSrcweir 
238*cdf0e10cSrcweir /*--------------------------------------------------------------------
239*cdf0e10cSrcweir 	 Beschreibung:	Controls neu initialisieren mit der aktuellen
240*cdf0e10cSrcweir 					Markierung
241*cdf0e10cSrcweir  --------------------------------------------------------------------*/
242*cdf0e10cSrcweir 
243*cdf0e10cSrcweir 
244*cdf0e10cSrcweir void SwIndexMarkDlg::InitControls()
245*cdf0e10cSrcweir {
246*cdf0e10cSrcweir 	DBG_ASSERT(pSh && pTOXMgr, "Shell nicht da?");
247*cdf0e10cSrcweir 	// Inhalts-Verzeichnis
248*cdf0e10cSrcweir 	const SwTOXType* pType = pTOXMgr->GetTOXType(TOX_CONTENT, 0);
249*cdf0e10cSrcweir 	ASSERT(pType, "Kein Verzeichnistyp !!");
250*cdf0e10cSrcweir 	String sTmpTypeSelection;
251*cdf0e10cSrcweir 	if(aTypeDCB.GetSelectEntryCount())
252*cdf0e10cSrcweir 		sTmpTypeSelection = aTypeDCB.GetSelectEntry();
253*cdf0e10cSrcweir 	aTypeDCB.Clear();
254*cdf0e10cSrcweir 	aTypeDCB.InsertEntry(pType->GetTypeName());
255*cdf0e10cSrcweir 
256*cdf0e10cSrcweir 	// Stichwort-Verzeichnis
257*cdf0e10cSrcweir 	pType = pTOXMgr->GetTOXType(TOX_INDEX, 0);
258*cdf0e10cSrcweir 	ASSERT(pType, "Kein Verzeichnistyp !!");
259*cdf0e10cSrcweir 	aTypeDCB.InsertEntry(pType->GetTypeName());
260*cdf0e10cSrcweir 
261*cdf0e10cSrcweir 	// Benutzerverzeichnisse
262*cdf0e10cSrcweir 	sal_uInt16 nCount = pSh->GetTOXTypeCount(TOX_USER);
263*cdf0e10cSrcweir 	sal_uInt16 i;
264*cdf0e10cSrcweir 	for( i = 0; i < nCount; ++i )
265*cdf0e10cSrcweir 		aTypeDCB.InsertEntry( pSh->GetTOXType(TOX_USER, i)->GetTypeName() );
266*cdf0e10cSrcweir 
267*cdf0e10cSrcweir 	// KeyWords Primary einlesen
268*cdf0e10cSrcweir 	SvStringsSort aArr;
269*cdf0e10cSrcweir 	nCount = pSh->GetTOIKeys( TOI_PRIMARY, aArr );
270*cdf0e10cSrcweir 	for(i=0; i < nCount; ++i)
271*cdf0e10cSrcweir 		aKeyDCB.InsertEntry( *aArr[ i ] );
272*cdf0e10cSrcweir 
273*cdf0e10cSrcweir 	// KeyWords Secondary einlesen
274*cdf0e10cSrcweir 	nCount = pSh->GetTOIKeys( TOI_SECONDARY, aArr );
275*cdf0e10cSrcweir 	for(i=0; i < nCount; ++i)
276*cdf0e10cSrcweir 		aKey2DCB.InsertEntry( *aArr[ i ] );
277*cdf0e10cSrcweir 
278*cdf0e10cSrcweir 	UpdateLanguageDependenciesForPhoneticReading();
279*cdf0e10cSrcweir 
280*cdf0e10cSrcweir 	// Aktueller Eintrag
281*cdf0e10cSrcweir 	const SwTOXMark* pMark = pTOXMgr->GetCurTOXMark();
282*cdf0e10cSrcweir 	if( pMark && !bNewMark)
283*cdf0e10cSrcweir 	{
284*cdf0e10cSrcweir 		// Controls-Handling
285*cdf0e10cSrcweir 
286*cdf0e10cSrcweir 		// nur wenn mehr als eins vorhanden
287*cdf0e10cSrcweir 		// wenn gleich landet es auf dem gleichen Eintrag
288*cdf0e10cSrcweir 		pSh->SttCrsrMove();
289*cdf0e10cSrcweir 
290*cdf0e10cSrcweir 		const SwTOXMark* pMoveMark;
291*cdf0e10cSrcweir 		sal_Bool bShow = sal_False;
292*cdf0e10cSrcweir 
293*cdf0e10cSrcweir 		pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_PRV );
294*cdf0e10cSrcweir 		if( pMoveMark != pMark )
295*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_NXT ), bShow = sal_True;
296*cdf0e10cSrcweir 		aPrevBT.Enable( pMoveMark != pMark );
297*cdf0e10cSrcweir 		pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_NXT );
298*cdf0e10cSrcweir 		if( pMoveMark != pMark )
299*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_PRV ), bShow = sal_True;
300*cdf0e10cSrcweir 		aNextBT.Enable( pMoveMark != pMark );
301*cdf0e10cSrcweir 		if( bShow )
302*cdf0e10cSrcweir 		{
303*cdf0e10cSrcweir 			aPrevBT.Show();
304*cdf0e10cSrcweir 			aNextBT.Show();
305*cdf0e10cSrcweir 			bShow = sal_False;
306*cdf0e10cSrcweir 		}
307*cdf0e10cSrcweir 
308*cdf0e10cSrcweir 		pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_PRV );
309*cdf0e10cSrcweir 		if( pMoveMark != pMark )
310*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_SAME_NXT ), bShow = sal_True;
311*cdf0e10cSrcweir 		aPrevSameBT.Enable( pMoveMark != pMark );
312*cdf0e10cSrcweir 		pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_NXT );
313*cdf0e10cSrcweir 		if( pMoveMark != pMark )
314*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_SAME_PRV ), bShow = sal_True;
315*cdf0e10cSrcweir 		aNextSameBT.Enable( pMoveMark != pMark );
316*cdf0e10cSrcweir 		if( bShow )
317*cdf0e10cSrcweir 		{
318*cdf0e10cSrcweir 			aNextSameBT.Show();
319*cdf0e10cSrcweir 			aPrevSameBT.Show();
320*cdf0e10cSrcweir 		}
321*cdf0e10cSrcweir 		pSh->EndCrsrMove();
322*cdf0e10cSrcweir 
323*cdf0e10cSrcweir 		aTypeFT.Show();
324*cdf0e10cSrcweir 
325*cdf0e10cSrcweir 		aTypeDCB.Enable(sal_False);
326*cdf0e10cSrcweir 		aTypeFT.Enable(sal_False);
327*cdf0e10cSrcweir 
328*cdf0e10cSrcweir 		UpdateDialog();
329*cdf0e10cSrcweir 	}
330*cdf0e10cSrcweir 	else
331*cdf0e10cSrcweir 	{ 	// aktuelle Selektion (1.Element) anzeigen  ????
332*cdf0e10cSrcweir 		sal_uInt16 nCnt = pSh->GetCrsrCnt();
333*cdf0e10cSrcweir 		if (nCnt < 2)
334*cdf0e10cSrcweir 		{
335*cdf0e10cSrcweir 			bSelected = !pSh->HasSelection();
336*cdf0e10cSrcweir 			aOrgStr = pSh->GetView().GetSelectionTextParam(sal_True, sal_False);
337*cdf0e10cSrcweir 			aEntryED.SetText(aOrgStr);
338*cdf0e10cSrcweir 
339*cdf0e10cSrcweir 			//alle gleichen Eintraege aufzunehmen darf nur im Body und auch da nur
340*cdf0e10cSrcweir 			//bei vorhandener einfacher Selektion erlaubt werden
341*cdf0e10cSrcweir 			const sal_uInt16 nFrmType = pSh->GetFrmType(0,sal_True);
342*cdf0e10cSrcweir 			aApplyToAllCB.Show();
343*cdf0e10cSrcweir 			aSearchCaseSensitiveCB.Show();
344*cdf0e10cSrcweir 			aSearchCaseWordOnlyCB.Show();
345*cdf0e10cSrcweir 			aApplyToAllCB.Enable(0 != aOrgStr.Len() &&
346*cdf0e10cSrcweir 				0 == (nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FLY_ANY )));
347*cdf0e10cSrcweir 			SearchTypeHdl(&aApplyToAllCB);
348*cdf0e10cSrcweir 		}
349*cdf0e10cSrcweir 
350*cdf0e10cSrcweir 		// Verzeichnistyp ist default
351*cdf0e10cSrcweir 		if(	sTmpTypeSelection.Len() &&
352*cdf0e10cSrcweir 			LISTBOX_ENTRY_NOTFOUND != aTypeDCB.GetEntryPos( sTmpTypeSelection ) )
353*cdf0e10cSrcweir             aTypeDCB.SelectEntry(sTmpTypeSelection);
354*cdf0e10cSrcweir 		else
355*cdf0e10cSrcweir 			aTypeDCB.SelectEntry(aTypeDCB.GetEntry(nTypePos));
356*cdf0e10cSrcweir 		ModifyHdl(&aTypeDCB);
357*cdf0e10cSrcweir 	}
358*cdf0e10cSrcweir }
359*cdf0e10cSrcweir 
360*cdf0e10cSrcweir void	SwIndexMarkDlg::UpdateLanguageDependenciesForPhoneticReading()
361*cdf0e10cSrcweir {
362*cdf0e10cSrcweir 	//no phonetic reading if no global cjk support
363*cdf0e10cSrcweir 	if( !xExtendedIndexEntrySupplier.is() )
364*cdf0e10cSrcweir 	{
365*cdf0e10cSrcweir 		bIsPhoneticReadingEnabled = sal_False;
366*cdf0e10cSrcweir 		return;
367*cdf0e10cSrcweir 	}
368*cdf0e10cSrcweir 	bIsPhoneticReadingEnabled = sal_True;
369*cdf0e10cSrcweir 
370*cdf0e10cSrcweir 	//get the current language
371*cdf0e10cSrcweir 	if(!bNewMark) //if dialog is opened to iterate existing marks
372*cdf0e10cSrcweir 	{
373*cdf0e10cSrcweir 		ASSERT(pTOXMgr, "need TOXMgr")
374*cdf0e10cSrcweir 		if(!pTOXMgr)
375*cdf0e10cSrcweir 			return;
376*cdf0e10cSrcweir 		SwTOXMark* pMark = pTOXMgr->GetCurTOXMark();
377*cdf0e10cSrcweir 		ASSERT(pMark, "need current SwTOXMark");
378*cdf0e10cSrcweir 		if(!pMark)
379*cdf0e10cSrcweir 			return;
380*cdf0e10cSrcweir 		SwTxtTOXMark* pTxtTOXMark = pMark->GetTxtTOXMark();
381*cdf0e10cSrcweir 		ASSERT(pTxtTOXMark, "need current SwTxtTOXMark");
382*cdf0e10cSrcweir 		if(!pTxtTOXMark)
383*cdf0e10cSrcweir 			return;
384*cdf0e10cSrcweir 		const SwTxtNode* pTxtNode = pTxtTOXMark->GetpTxtNd();
385*cdf0e10cSrcweir 		ASSERT(pTxtNode, "need current SwTxtNode");
386*cdf0e10cSrcweir 		if(!pTxtNode)
387*cdf0e10cSrcweir 			return;
388*cdf0e10cSrcweir 		xub_StrLen nTextIndex = *pTxtTOXMark->GetStart();
389*cdf0e10cSrcweir 		nLangForPhoneticReading = pTxtNode->GetLang( nTextIndex );
390*cdf0e10cSrcweir 	}
391*cdf0e10cSrcweir 	else //if dialog is opened to create a new mark
392*cdf0e10cSrcweir 	{
393*cdf0e10cSrcweir 		sal_uInt16 nScriptType = pSh->GetScriptType();
394*cdf0e10cSrcweir 		sal_uInt16 nWhich;
395*cdf0e10cSrcweir 		switch(nScriptType)
396*cdf0e10cSrcweir 		{
397*cdf0e10cSrcweir 			case SCRIPTTYPE_ASIAN: nWhich = RES_CHRATR_CJK_LANGUAGE; break;
398*cdf0e10cSrcweir 			case SCRIPTTYPE_COMPLEX:nWhich = RES_CHRATR_CTL_LANGUAGE; break;
399*cdf0e10cSrcweir 			//case SCRIPTTYPE_LATIN:
400*cdf0e10cSrcweir 			default:nWhich = RES_CHRATR_LANGUAGE; break;
401*cdf0e10cSrcweir 		}
402*cdf0e10cSrcweir         SfxItemSet aLangSet(pSh->GetAttrPool(), nWhich, nWhich);
403*cdf0e10cSrcweir         pSh->GetCurAttr(aLangSet);
404*cdf0e10cSrcweir         nLangForPhoneticReading = ((const SvxLanguageItem&)aLangSet.Get(nWhich)).GetLanguage();
405*cdf0e10cSrcweir 	}
406*cdf0e10cSrcweir 
407*cdf0e10cSrcweir 	/*
408*cdf0e10cSrcweir 	//enable phonetic reading dependent on the current language
409*cdf0e10cSrcweir 	{
410*cdf0e10cSrcweir 		lang::Locale aLocale( SvxCreateLocale( LanguageType( nLangForPhoneticReading ) ) );
411*cdf0e10cSrcweir 		bIsPhoneticReadingEnabled = xExtendedIndexEntrySupplier->usePhoneticEntry( aLocale );
412*cdf0e10cSrcweir 	}
413*cdf0e10cSrcweir 	*/
414*cdf0e10cSrcweir }
415*cdf0e10cSrcweir 
416*cdf0e10cSrcweir String	SwIndexMarkDlg::GetDefaultPhoneticReading( const String& rText )
417*cdf0e10cSrcweir {
418*cdf0e10cSrcweir 	if( !bIsPhoneticReadingEnabled )
419*cdf0e10cSrcweir 		return aEmptyStr;
420*cdf0e10cSrcweir 
421*cdf0e10cSrcweir 	lang::Locale aLocale( SvxCreateLocale( LanguageType( nLangForPhoneticReading ) ) );
422*cdf0e10cSrcweir 	return xExtendedIndexEntrySupplier->getPhoneticCandidate(rText, aLocale);
423*cdf0e10cSrcweir }
424*cdf0e10cSrcweir 
425*cdf0e10cSrcweir /* -----------------07.09.99 10:43-------------------
426*cdf0e10cSrcweir 	Change the content of aEntryED if text is selected
427*cdf0e10cSrcweir  --------------------------------------------------*/
428*cdf0e10cSrcweir 
429*cdf0e10cSrcweir void	SwIndexMarkDlg::Activate()
430*cdf0e10cSrcweir {
431*cdf0e10cSrcweir 	// aktuelle Selektion (1.Element) anzeigen  ????
432*cdf0e10cSrcweir 	if(bNewMark)
433*cdf0e10cSrcweir 	{
434*cdf0e10cSrcweir 		sal_uInt16 nCnt = pSh->GetCrsrCnt();
435*cdf0e10cSrcweir 		if (nCnt < 2)
436*cdf0e10cSrcweir 		{
437*cdf0e10cSrcweir 			bSelected = !pSh->HasSelection();
438*cdf0e10cSrcweir 			aOrgStr = pSh->GetView().GetSelectionTextParam(sal_True, sal_False);
439*cdf0e10cSrcweir 			aEntryED.SetText(aOrgStr);
440*cdf0e10cSrcweir 
441*cdf0e10cSrcweir 			//alle gleichen Eintraege aufzunehmen darf nur im Body und auch da nur
442*cdf0e10cSrcweir 			//bei vorhandener einfacher Selektion erlaubt werden
443*cdf0e10cSrcweir 			const sal_uInt16 nFrmType = pSh->GetFrmType(0,sal_True);
444*cdf0e10cSrcweir 			aApplyToAllCB.Show();
445*cdf0e10cSrcweir 			aSearchCaseSensitiveCB.Show();
446*cdf0e10cSrcweir 			aSearchCaseWordOnlyCB.Show();
447*cdf0e10cSrcweir 			aApplyToAllCB.Enable(0 != aOrgStr.Len() &&
448*cdf0e10cSrcweir 				0 == (nFrmType & ( FRMTYPE_HEADER | FRMTYPE_FOOTER | FRMTYPE_FLY_ANY )));
449*cdf0e10cSrcweir 			SearchTypeHdl(&aApplyToAllCB);
450*cdf0e10cSrcweir 		}
451*cdf0e10cSrcweir 		ModifyHdl(&aTypeDCB);
452*cdf0e10cSrcweir 	}
453*cdf0e10cSrcweir }
454*cdf0e10cSrcweir 
455*cdf0e10cSrcweir /*--------------------------------------------------------------------
456*cdf0e10cSrcweir 	 Beschreibung:	Ok-Button auswerten
457*cdf0e10cSrcweir  --------------------------------------------------------------------*/
458*cdf0e10cSrcweir void SwIndexMarkDlg::Apply()
459*cdf0e10cSrcweir {
460*cdf0e10cSrcweir 	InsertUpdate();
461*cdf0e10cSrcweir 	if(bSelected)
462*cdf0e10cSrcweir 		pSh->ResetSelect(0, sal_False);
463*cdf0e10cSrcweir }
464*cdf0e10cSrcweir 
465*cdf0e10cSrcweir /*--------------------------------------------------------------------
466*cdf0e10cSrcweir 	Beschreibung: Aenderungen uebernehmen
467*cdf0e10cSrcweir  --------------------------------------------------------------------*/
468*cdf0e10cSrcweir 
469*cdf0e10cSrcweir 
470*cdf0e10cSrcweir void SwIndexMarkDlg::InsertUpdate()
471*cdf0e10cSrcweir {
472*cdf0e10cSrcweir 	pSh->StartUndo(bDel ? UNDO_INDEX_ENTRY_DELETE : UNDO_INDEX_ENTRY_INSERT);
473*cdf0e10cSrcweir 	pSh->StartAllAction();
474*cdf0e10cSrcweir 
475*cdf0e10cSrcweir     SwRewriter aRewriter;
476*cdf0e10cSrcweir 
477*cdf0e10cSrcweir 	if( bNewMark )
478*cdf0e10cSrcweir     {
479*cdf0e10cSrcweir 		InsertMark();
480*cdf0e10cSrcweir 
481*cdf0e10cSrcweir         if ( pTOXMgr->GetCurTOXMark())
482*cdf0e10cSrcweir             aRewriter.AddRule(UNDO_ARG1, pTOXMgr->GetCurTOXMark()->GetText());
483*cdf0e10cSrcweir     }
484*cdf0e10cSrcweir 	else if( !pSh->HasReadonlySel() )
485*cdf0e10cSrcweir 	{
486*cdf0e10cSrcweir         if ( pTOXMgr->GetCurTOXMark())
487*cdf0e10cSrcweir             aRewriter.AddRule(UNDO_ARG1,
488*cdf0e10cSrcweir                               pTOXMgr->GetCurTOXMark()->GetText());
489*cdf0e10cSrcweir 
490*cdf0e10cSrcweir 		if( bDel )
491*cdf0e10cSrcweir 			pTOXMgr->DeleteTOXMark();
492*cdf0e10cSrcweir 		else if( pTOXMgr->GetCurTOXMark() )
493*cdf0e10cSrcweir 			UpdateMark();
494*cdf0e10cSrcweir 	}
495*cdf0e10cSrcweir 
496*cdf0e10cSrcweir 	pSh->EndAllAction();
497*cdf0e10cSrcweir 	pSh->EndUndo(bDel ? UNDO_INDEX_ENTRY_DELETE : UNDO_INDEX_ENTRY_INSERT);
498*cdf0e10cSrcweir 
499*cdf0e10cSrcweir 	if((nTypePos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry())) == LISTBOX_ENTRY_NOTFOUND)
500*cdf0e10cSrcweir 		nTypePos = 0;
501*cdf0e10cSrcweir 
502*cdf0e10cSrcweir 	nKey1Pos = aKeyDCB.GetEntryPos(aKeyDCB.GetText());
503*cdf0e10cSrcweir 	nKey2Pos = aKey2DCB.GetEntryPos(aKey2DCB.GetText());
504*cdf0e10cSrcweir }
505*cdf0e10cSrcweir 
506*cdf0e10cSrcweir /*--------------------------------------------------------------------
507*cdf0e10cSrcweir 	 Beschreibung:	Marke einfuegen
508*cdf0e10cSrcweir  --------------------------------------------------------------------*/
509*cdf0e10cSrcweir static void lcl_SelectSameStrings(SwWrtShell& rSh, sal_Bool bWordOnly, sal_Bool bCaseSensitive)
510*cdf0e10cSrcweir {
511*cdf0e10cSrcweir 	rSh.Push();
512*cdf0e10cSrcweir 
513*cdf0e10cSrcweir 	SearchOptions aSearchOpt(
514*cdf0e10cSrcweir 						SearchAlgorithms_ABSOLUTE,
515*cdf0e10cSrcweir 						( bWordOnly ? SearchFlags::NORM_WORD_ONLY : 0 ),
516*cdf0e10cSrcweir 						rSh.GetSelTxt(), OUString(),
517*cdf0e10cSrcweir 						SvxCreateLocale( GetAppLanguage() ),
518*cdf0e10cSrcweir 						0, 0, 0,
519*cdf0e10cSrcweir 						(bCaseSensitive
520*cdf0e10cSrcweir 							? 0
521*cdf0e10cSrcweir 							: TransliterationModules_IGNORE_CASE) );
522*cdf0e10cSrcweir 
523*cdf0e10cSrcweir 	rSh.ClearMark();
524*cdf0e10cSrcweir     sal_Bool bCancel;
525*cdf0e10cSrcweir 
526*cdf0e10cSrcweir 	//todo/mba: assuming that notes should not be searched
527*cdf0e10cSrcweir 	sal_Bool bSearchInNotes = sal_False;
528*cdf0e10cSrcweir     rSh.Find( aSearchOpt,  bSearchInNotes, DOCPOS_START, DOCPOS_END, bCancel,
529*cdf0e10cSrcweir                         (FindRanges)(FND_IN_SELALL|FND_IN_BODYONLY), sal_False );
530*cdf0e10cSrcweir }
531*cdf0e10cSrcweir 
532*cdf0e10cSrcweir 
533*cdf0e10cSrcweir void SwIndexMarkDlg::InsertMark()
534*cdf0e10cSrcweir {
535*cdf0e10cSrcweir 	sal_uInt16 nPos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry());
536*cdf0e10cSrcweir 	TOXTypes eType = nPos == POS_CONTENT ? TOX_CONTENT :
537*cdf0e10cSrcweir 						nPos == POS_INDEX ? TOX_INDEX : TOX_USER;
538*cdf0e10cSrcweir 
539*cdf0e10cSrcweir 	SwTOXMarkDescription aDesc(eType);
540*cdf0e10cSrcweir 
541*cdf0e10cSrcweir 	sal_uInt16 nLevel = (sal_uInt16)aLevelED.Denormalize(aLevelED.GetValue());
542*cdf0e10cSrcweir 	switch(nPos)
543*cdf0e10cSrcweir 	{
544*cdf0e10cSrcweir 		case POS_CONTENT : break;
545*cdf0e10cSrcweir 		case POS_INDEX:  	// Stichwortverzeichnismarke
546*cdf0e10cSrcweir 		{
547*cdf0e10cSrcweir 			UpdateKeyBoxes();
548*cdf0e10cSrcweir 			String  aPrim(aKeyDCB.GetText());
549*cdf0e10cSrcweir 			String  aSec(aKey2DCB.GetText());
550*cdf0e10cSrcweir 			aDesc.SetPrimKey(aPrim);
551*cdf0e10cSrcweir 			aDesc.SetSecKey(aSec);
552*cdf0e10cSrcweir 			aDesc.SetMainEntry(aMainEntryCB.IsChecked());
553*cdf0e10cSrcweir 			aDesc.SetPhoneticReadingOfAltStr(aPhoneticED0.GetText());
554*cdf0e10cSrcweir 			aDesc.SetPhoneticReadingOfPrimKey(aPhoneticED1.GetText());
555*cdf0e10cSrcweir 			aDesc.SetPhoneticReadingOfSecKey(aPhoneticED2.GetText());
556*cdf0e10cSrcweir 		}
557*cdf0e10cSrcweir 		break;
558*cdf0e10cSrcweir 		default:            // Userdefinedverz.-Marke
559*cdf0e10cSrcweir 		{
560*cdf0e10cSrcweir 			String aName(aTypeDCB.GetSelectEntry());
561*cdf0e10cSrcweir 			aDesc.SetTOUName(aName);
562*cdf0e10cSrcweir 		}
563*cdf0e10cSrcweir 	}
564*cdf0e10cSrcweir 	if (aOrgStr != aEntryED.GetText())
565*cdf0e10cSrcweir 		aDesc.SetAltStr(aEntryED.GetText());
566*cdf0e10cSrcweir 	sal_Bool bApplyAll = aApplyToAllCB.IsChecked();
567*cdf0e10cSrcweir     sal_Bool bWordOnly = aSearchCaseWordOnlyCB.IsChecked();
568*cdf0e10cSrcweir 	sal_Bool bCaseSensitive = aSearchCaseSensitiveCB.IsChecked();
569*cdf0e10cSrcweir 
570*cdf0e10cSrcweir 	pSh->StartAllAction();
571*cdf0e10cSrcweir 	// hier muessen alle gleichen Strings selektiert werden
572*cdf0e10cSrcweir 	// damit der Eintrag auf alle gleichen Strings angewandt wird
573*cdf0e10cSrcweir 	if(bApplyAll)
574*cdf0e10cSrcweir 	{
575*cdf0e10cSrcweir 		lcl_SelectSameStrings(*pSh, bWordOnly, bCaseSensitive);
576*cdf0e10cSrcweir 	}
577*cdf0e10cSrcweir 	aDesc.SetLevel(nLevel);
578*cdf0e10cSrcweir 	SwTOXMgr aMgr(pSh);
579*cdf0e10cSrcweir 	aMgr.InsertTOXMark(aDesc);
580*cdf0e10cSrcweir 	if(bApplyAll)
581*cdf0e10cSrcweir 		pSh->Pop(sal_False);
582*cdf0e10cSrcweir 
583*cdf0e10cSrcweir 	pSh->EndAllAction();
584*cdf0e10cSrcweir }
585*cdf0e10cSrcweir 
586*cdf0e10cSrcweir /*--------------------------------------------------------------------
587*cdf0e10cSrcweir 	 Beschreibung:	Marke Updaten
588*cdf0e10cSrcweir  --------------------------------------------------------------------*/
589*cdf0e10cSrcweir 
590*cdf0e10cSrcweir 
591*cdf0e10cSrcweir void SwIndexMarkDlg::UpdateMark()
592*cdf0e10cSrcweir {
593*cdf0e10cSrcweir 	String 	aAltText(aEntryED.GetText());
594*cdf0e10cSrcweir 	String* pAltText = aOrgStr != aEntryED.GetText() ? &aAltText : 0;
595*cdf0e10cSrcweir 	//empty alternative texts are not allowed
596*cdf0e10cSrcweir 	if(pAltText && !pAltText->Len())
597*cdf0e10cSrcweir 		return;
598*cdf0e10cSrcweir 
599*cdf0e10cSrcweir 	UpdateKeyBoxes();
600*cdf0e10cSrcweir 
601*cdf0e10cSrcweir 	sal_uInt16 nPos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry());
602*cdf0e10cSrcweir 	TOXTypes eType = TOX_USER;
603*cdf0e10cSrcweir 	if(POS_CONTENT == nPos)
604*cdf0e10cSrcweir 		eType = TOX_CONTENT;
605*cdf0e10cSrcweir 	else if(POS_INDEX == nPos)
606*cdf0e10cSrcweir 		eType = TOX_INDEX;
607*cdf0e10cSrcweir 
608*cdf0e10cSrcweir 	SwTOXMarkDescription aDesc(eType);
609*cdf0e10cSrcweir     aDesc.SetLevel( static_cast< int >(aLevelED.GetValue()) );
610*cdf0e10cSrcweir 	if(pAltText)
611*cdf0e10cSrcweir 		aDesc.SetAltStr(*pAltText);
612*cdf0e10cSrcweir 
613*cdf0e10cSrcweir 	String  aPrim(aKeyDCB.GetText());
614*cdf0e10cSrcweir 	if(aPrim.Len())
615*cdf0e10cSrcweir 		aDesc.SetPrimKey(aPrim);
616*cdf0e10cSrcweir 	String  aSec(aKey2DCB.GetText());
617*cdf0e10cSrcweir 	if(aSec.Len())
618*cdf0e10cSrcweir 		aDesc.SetSecKey(aSec);
619*cdf0e10cSrcweir 
620*cdf0e10cSrcweir 	if(eType == TOX_INDEX)
621*cdf0e10cSrcweir 	{
622*cdf0e10cSrcweir 		aDesc.SetPhoneticReadingOfAltStr(aPhoneticED0.GetText());
623*cdf0e10cSrcweir 		aDesc.SetPhoneticReadingOfPrimKey(aPhoneticED1.GetText());
624*cdf0e10cSrcweir 		aDesc.SetPhoneticReadingOfSecKey(aPhoneticED2.GetText());
625*cdf0e10cSrcweir 	}
626*cdf0e10cSrcweir 	aDesc.SetMainEntry(aMainEntryCB.IsVisible() && aMainEntryCB.IsChecked());
627*cdf0e10cSrcweir 	pTOXMgr->UpdateTOXMark(aDesc);
628*cdf0e10cSrcweir }
629*cdf0e10cSrcweir 
630*cdf0e10cSrcweir /*--------------------------------------------------------------------
631*cdf0e10cSrcweir 	Beschreibung: Neue Keys eintragen
632*cdf0e10cSrcweir  --------------------------------------------------------------------*/
633*cdf0e10cSrcweir 
634*cdf0e10cSrcweir 
635*cdf0e10cSrcweir void SwIndexMarkDlg::UpdateKeyBoxes()
636*cdf0e10cSrcweir {
637*cdf0e10cSrcweir 	String aKey(aKeyDCB.GetText());
638*cdf0e10cSrcweir 	sal_uInt16 nPos = aKeyDCB.GetEntryPos(aKey);
639*cdf0e10cSrcweir 
640*cdf0e10cSrcweir 	if(nPos == LISTBOX_ENTRY_NOTFOUND && aKey.Len() > 0)
641*cdf0e10cSrcweir 	{	// neuen Key erzeugen
642*cdf0e10cSrcweir 		aKeyDCB.InsertEntry(aKey);
643*cdf0e10cSrcweir 	}
644*cdf0e10cSrcweir 
645*cdf0e10cSrcweir 	aKey = aKey2DCB.GetText();
646*cdf0e10cSrcweir 	nPos = aKey2DCB.GetEntryPos(aKey);
647*cdf0e10cSrcweir 
648*cdf0e10cSrcweir 	if(nPos == LISTBOX_ENTRY_NOTFOUND && aKey.Len() > 0)
649*cdf0e10cSrcweir 	{	// neuen Key erzeugen
650*cdf0e10cSrcweir 		aKey2DCB.InsertEntry(aKey);
651*cdf0e10cSrcweir 	}
652*cdf0e10cSrcweir }
653*cdf0e10cSrcweir /* -----------------13.10.99 15:10-------------------
654*cdf0e10cSrcweir 
655*cdf0e10cSrcweir  --------------------------------------------------*/
656*cdf0e10cSrcweir class SwNewUserIdxDlg : public ModalDialog
657*cdf0e10cSrcweir {
658*cdf0e10cSrcweir 	OKButton 		aOKPB;
659*cdf0e10cSrcweir 	CancelButton 	aCancelPB;
660*cdf0e10cSrcweir 	HelpButton 		aHelpPB;
661*cdf0e10cSrcweir     FixedLine       aNameFL;
662*cdf0e10cSrcweir 	FixedText		aNameFT;
663*cdf0e10cSrcweir 	Edit			aNameED;
664*cdf0e10cSrcweir 
665*cdf0e10cSrcweir 	SwIndexMarkDlg*	pDlg;
666*cdf0e10cSrcweir 
667*cdf0e10cSrcweir 	DECL_LINK( ModifyHdl, Edit*);
668*cdf0e10cSrcweir 
669*cdf0e10cSrcweir 	public:
670*cdf0e10cSrcweir 		SwNewUserIdxDlg(SwIndexMarkDlg* pParent) :
671*cdf0e10cSrcweir 			ModalDialog(pParent, SW_RES(DLG_NEW_USER_IDX)),
672*cdf0e10cSrcweir             aOKPB(this, SW_RES(     PB_OK       )),
673*cdf0e10cSrcweir             aCancelPB(this, SW_RES( PB_CANCEL   )),
674*cdf0e10cSrcweir             aHelpPB(this, SW_RES(   PB_HELP     )),
675*cdf0e10cSrcweir             aNameFL(this, SW_RES(    FL_NAME     )),
676*cdf0e10cSrcweir             aNameFT(this, SW_RES(   FT_NAME     )),
677*cdf0e10cSrcweir             aNameED(this, SW_RES(    ED_NAME     )),
678*cdf0e10cSrcweir             pDlg(pParent)
679*cdf0e10cSrcweir 			{
680*cdf0e10cSrcweir 				FreeResource();
681*cdf0e10cSrcweir 				aNameED.SetModifyHdl(LINK(this, SwNewUserIdxDlg, ModifyHdl));
682*cdf0e10cSrcweir 				aOKPB.Enable(sal_False);
683*cdf0e10cSrcweir 				aNameED.GrabFocus();
684*cdf0e10cSrcweir 			}
685*cdf0e10cSrcweir 
686*cdf0e10cSrcweir 	virtual void	Apply();
687*cdf0e10cSrcweir 	String 	GetName(){return aNameED.GetText();}
688*cdf0e10cSrcweir };
689*cdf0e10cSrcweir void SwNewUserIdxDlg::Apply()
690*cdf0e10cSrcweir {
691*cdf0e10cSrcweir }
692*cdf0e10cSrcweir 
693*cdf0e10cSrcweir IMPL_LINK( SwNewUserIdxDlg, ModifyHdl, Edit*, pEdit)
694*cdf0e10cSrcweir {
695*cdf0e10cSrcweir 	aOKPB.Enable(pEdit->GetText().Len() && !pDlg->IsTOXType(pEdit->GetText()));
696*cdf0e10cSrcweir 	return 0;
697*cdf0e10cSrcweir }
698*cdf0e10cSrcweir 
699*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, NewUserIdxHdl, Button*, EMPTYARG)
700*cdf0e10cSrcweir {
701*cdf0e10cSrcweir 	SwNewUserIdxDlg* pDlg = new SwNewUserIdxDlg(this);
702*cdf0e10cSrcweir 	if(RET_OK == pDlg->Execute())
703*cdf0e10cSrcweir 	{
704*cdf0e10cSrcweir 		String sNewName(pDlg->GetName());
705*cdf0e10cSrcweir 		aTypeDCB.InsertEntry(sNewName);
706*cdf0e10cSrcweir 		aTypeDCB.SelectEntry(sNewName);
707*cdf0e10cSrcweir 	}
708*cdf0e10cSrcweir 	delete pDlg;
709*cdf0e10cSrcweir 	return 0;
710*cdf0e10cSrcweir }
711*cdf0e10cSrcweir /* -----------------------------17.01.00 12:18--------------------------------
712*cdf0e10cSrcweir 
713*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
714*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, SearchTypeHdl, CheckBox*, pBox)
715*cdf0e10cSrcweir {
716*cdf0e10cSrcweir 	sal_Bool bEnable = pBox->IsChecked() && pBox->IsEnabled();
717*cdf0e10cSrcweir 	aSearchCaseWordOnlyCB.Enable(bEnable);
718*cdf0e10cSrcweir 	aSearchCaseSensitiveCB.Enable(bEnable);
719*cdf0e10cSrcweir 	return 0;
720*cdf0e10cSrcweir }
721*cdf0e10cSrcweir /* -----------------07.09.99 10:30-------------------
722*cdf0e10cSrcweir 
723*cdf0e10cSrcweir  --------------------------------------------------*/
724*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, InsertHdl, Button *, pButton )
725*cdf0e10cSrcweir {
726*cdf0e10cSrcweir 	Apply();
727*cdf0e10cSrcweir 	//close the dialog if only one entry is available
728*cdf0e10cSrcweir 	if(!bNewMark && !aPrevBT.IsVisible() && !aNextBT.IsVisible())
729*cdf0e10cSrcweir 		CloseHdl(pButton);
730*cdf0e10cSrcweir 	return 0;
731*cdf0e10cSrcweir }
732*cdf0e10cSrcweir /* -----------------07.09.99 10:29-------------------
733*cdf0e10cSrcweir 
734*cdf0e10cSrcweir  --------------------------------------------------*/
735*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, CloseHdl, Button *, EMPTYARG )
736*cdf0e10cSrcweir {
737*cdf0e10cSrcweir 	if(bNewMark)
738*cdf0e10cSrcweir 	{
739*cdf0e10cSrcweir 		sal_uInt16 nSlot = FN_INSERT_IDX_ENTRY_DLG;
740*cdf0e10cSrcweir 		SfxViewFrame::Current()->GetDispatcher()->Execute(nSlot,
741*cdf0e10cSrcweir 					SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD);
742*cdf0e10cSrcweir 	}
743*cdf0e10cSrcweir 	else
744*cdf0e10cSrcweir 	{
745*cdf0e10cSrcweir 		((SwIndexMarkModalDlg*)GetParent())->EndDialog(RET_CANCEL);
746*cdf0e10cSrcweir 	}
747*cdf0e10cSrcweir 	return 0;
748*cdf0e10cSrcweir }
749*cdf0e10cSrcweir /*--------------------------------------------------------------------
750*cdf0e10cSrcweir 	 Beschreibung:	VerzeichnisTyp auswaehlen nur bei Einfuegen
751*cdf0e10cSrcweir  --------------------------------------------------------------------*/
752*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, ModifyHdl, ListBox *, pBox )
753*cdf0e10cSrcweir {
754*cdf0e10cSrcweir 	if(&aTypeDCB == pBox)
755*cdf0e10cSrcweir 	{
756*cdf0e10cSrcweir 		// Verzeichnistyp setzen
757*cdf0e10cSrcweir 		sal_uInt16 nPos = aTypeDCB.GetEntryPos(aTypeDCB.GetSelectEntry());
758*cdf0e10cSrcweir 		sal_Bool bLevelEnable = sal_False,
759*cdf0e10cSrcweir 		 	bKeyEnable	  = sal_False,
760*cdf0e10cSrcweir 		 	bSetKey2 	  = sal_False,
761*cdf0e10cSrcweir 		 	bKey2Enable  = sal_False,
762*cdf0e10cSrcweir 			bEntryHasText	= sal_False,
763*cdf0e10cSrcweir 			bKey1HasText	= sal_False,
764*cdf0e10cSrcweir 			bKey2HasText	= sal_False;
765*cdf0e10cSrcweir 		if(nPos == POS_INDEX)
766*cdf0e10cSrcweir 		{
767*cdf0e10cSrcweir 			if(aEntryED.GetText().Len())
768*cdf0e10cSrcweir 				bEntryHasText = sal_True;
769*cdf0e10cSrcweir 			aPhoneticED0.SetText(GetDefaultPhoneticReading(aEntryED.GetText()));
770*cdf0e10cSrcweir 
771*cdf0e10cSrcweir 			bKeyEnable = sal_True;
772*cdf0e10cSrcweir 			aKeyDCB.SetText(aKeyDCB.GetEntry(nKey1Pos));
773*cdf0e10cSrcweir 			aPhoneticED1.SetText(GetDefaultPhoneticReading(aKeyDCB.GetText()));
774*cdf0e10cSrcweir 			if(aKeyDCB.GetText().Len() > 0)
775*cdf0e10cSrcweir 			{
776*cdf0e10cSrcweir 				bKey1HasText = bSetKey2 = bKey2Enable = sal_True;
777*cdf0e10cSrcweir 				aKey2DCB.SetText(aKey2DCB.GetEntry(nKey2Pos));
778*cdf0e10cSrcweir 				aPhoneticED2.SetText(GetDefaultPhoneticReading(aKey2DCB.GetText()));
779*cdf0e10cSrcweir 				if(aKey2DCB.GetText().Len())
780*cdf0e10cSrcweir 					bKey2HasText = sal_True;
781*cdf0e10cSrcweir 			}
782*cdf0e10cSrcweir 		}
783*cdf0e10cSrcweir 		else
784*cdf0e10cSrcweir 		{
785*cdf0e10cSrcweir 			bLevelEnable = sal_True;
786*cdf0e10cSrcweir 			aLevelED.SetMax(MAXLEVEL);
787*cdf0e10cSrcweir 			aLevelED.SetValue(aLevelED.Normalize(0));
788*cdf0e10cSrcweir 			bSetKey2 = sal_True;
789*cdf0e10cSrcweir 		}
790*cdf0e10cSrcweir 		aLevelFT.Show(bLevelEnable);
791*cdf0e10cSrcweir 		aLevelED.Show(bLevelEnable);
792*cdf0e10cSrcweir 		aMainEntryCB.Show(nPos == POS_INDEX);
793*cdf0e10cSrcweir 
794*cdf0e10cSrcweir 		aKeyFT.Enable(bKeyEnable);
795*cdf0e10cSrcweir 		aKeyDCB.Enable(bKeyEnable);
796*cdf0e10cSrcweir 		if ( bSetKey2 )
797*cdf0e10cSrcweir 		{
798*cdf0e10cSrcweir 			aKey2DCB.Enable(bKey2Enable);
799*cdf0e10cSrcweir 			aKey2FT.Enable(bKey2Enable);
800*cdf0e10cSrcweir 		}
801*cdf0e10cSrcweir 		aPhoneticFT0.Enable(bKeyEnable&&bEntryHasText&&bIsPhoneticReadingEnabled);
802*cdf0e10cSrcweir 		aPhoneticED0.Enable(bKeyEnable&&bEntryHasText&&bIsPhoneticReadingEnabled);
803*cdf0e10cSrcweir 		aPhoneticFT1.Enable(bKeyEnable&&bKey1HasText&&bIsPhoneticReadingEnabled);
804*cdf0e10cSrcweir 		aPhoneticED1.Enable(bKeyEnable&&bKey1HasText&&bIsPhoneticReadingEnabled);
805*cdf0e10cSrcweir 		aPhoneticFT2.Enable(bKeyEnable&&bKey2HasText&&bIsPhoneticReadingEnabled);
806*cdf0e10cSrcweir 		aPhoneticED2.Enable(bKeyEnable&&bKey2HasText&&bIsPhoneticReadingEnabled);
807*cdf0e10cSrcweir 	}
808*cdf0e10cSrcweir 	else //aEntryED  !!aEntryED is not a ListBox but a Edit
809*cdf0e10cSrcweir 	{
810*cdf0e10cSrcweir 		sal_Bool bHasText = (aEntryED.GetText().Len()>0);
811*cdf0e10cSrcweir 		if(!bHasText)
812*cdf0e10cSrcweir 		{
813*cdf0e10cSrcweir 			aPhoneticED0.SetText(aEmptyStr);
814*cdf0e10cSrcweir 			bPhoneticED0_ChangedByUser = sal_False;
815*cdf0e10cSrcweir 		}
816*cdf0e10cSrcweir 		else if(!bPhoneticED0_ChangedByUser)
817*cdf0e10cSrcweir 			aPhoneticED0.SetText(GetDefaultPhoneticReading(aEntryED.GetText()));
818*cdf0e10cSrcweir 
819*cdf0e10cSrcweir 		aPhoneticFT0.Enable(bHasText&&bIsPhoneticReadingEnabled);
820*cdf0e10cSrcweir 		aPhoneticED0.Enable(bHasText&&bIsPhoneticReadingEnabled);
821*cdf0e10cSrcweir 	}
822*cdf0e10cSrcweir     aOKBT.Enable(!pSh->HasReadonlySel() &&
823*cdf0e10cSrcweir         (aEntryED.GetText().Len() || pSh->GetCrsrCnt(sal_False)));
824*cdf0e10cSrcweir 	return 0;
825*cdf0e10cSrcweir }
826*cdf0e10cSrcweir 
827*cdf0e10cSrcweir /*--------------------------------------------------------------------
828*cdf0e10cSrcweir 	 Beschreibung:
829*cdf0e10cSrcweir  --------------------------------------------------------------------*/
830*cdf0e10cSrcweir 
831*cdf0e10cSrcweir 
832*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwIndexMarkDlg, NextHdl, Button *, EMPTYARG )
833*cdf0e10cSrcweir {
834*cdf0e10cSrcweir 	InsertUpdate();
835*cdf0e10cSrcweir 	pTOXMgr->NextTOXMark();
836*cdf0e10cSrcweir 	UpdateDialog();
837*cdf0e10cSrcweir 	return 0;
838*cdf0e10cSrcweir }
839*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwIndexMarkDlg, NextHdl, Button *, EMPTYARG )
840*cdf0e10cSrcweir 
841*cdf0e10cSrcweir 
842*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwIndexMarkDlg, NextSameHdl, Button *, EMPTYARG )
843*cdf0e10cSrcweir {
844*cdf0e10cSrcweir 	InsertUpdate();
845*cdf0e10cSrcweir 	pTOXMgr->NextTOXMark(sal_True);
846*cdf0e10cSrcweir 	UpdateDialog();
847*cdf0e10cSrcweir 	return 0;
848*cdf0e10cSrcweir }
849*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwIndexMarkDlg, NextSameHdl, Button *, EMPTYARG )
850*cdf0e10cSrcweir 
851*cdf0e10cSrcweir 
852*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwIndexMarkDlg, PrevHdl, Button *, EMPTYARG )
853*cdf0e10cSrcweir {
854*cdf0e10cSrcweir 	InsertUpdate();
855*cdf0e10cSrcweir 	pTOXMgr->PrevTOXMark();
856*cdf0e10cSrcweir 	UpdateDialog();
857*cdf0e10cSrcweir 	return 0;
858*cdf0e10cSrcweir }
859*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwIndexMarkDlg, PrevHdl, Button *, EMPTYARG )
860*cdf0e10cSrcweir 
861*cdf0e10cSrcweir 
862*cdf0e10cSrcweir IMPL_LINK_INLINE_START( SwIndexMarkDlg, PrevSameHdl, Button *, EMPTYARG )
863*cdf0e10cSrcweir {
864*cdf0e10cSrcweir 	InsertUpdate();
865*cdf0e10cSrcweir 	pTOXMgr->PrevTOXMark(sal_True);
866*cdf0e10cSrcweir 	UpdateDialog();
867*cdf0e10cSrcweir 
868*cdf0e10cSrcweir 	return 0;
869*cdf0e10cSrcweir }
870*cdf0e10cSrcweir IMPL_LINK_INLINE_END( SwIndexMarkDlg, PrevSameHdl, Button *, EMPTYARG )
871*cdf0e10cSrcweir 
872*cdf0e10cSrcweir 
873*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, DelHdl, Button *, EMPTYARG )
874*cdf0e10cSrcweir {
875*cdf0e10cSrcweir 	bDel = sal_True;
876*cdf0e10cSrcweir 	InsertUpdate();
877*cdf0e10cSrcweir 	bDel = sal_False;
878*cdf0e10cSrcweir 
879*cdf0e10cSrcweir 	if(pTOXMgr->GetCurTOXMark())
880*cdf0e10cSrcweir 		UpdateDialog();
881*cdf0e10cSrcweir 	else
882*cdf0e10cSrcweir 	{
883*cdf0e10cSrcweir 		CloseHdl(&aCancelBT);
884*cdf0e10cSrcweir 		SfxViewFrame::Current()->GetBindings().Invalidate(FN_EDIT_IDX_ENTRY_DLG);
885*cdf0e10cSrcweir 	}
886*cdf0e10cSrcweir 	return 0;
887*cdf0e10cSrcweir }
888*cdf0e10cSrcweir 
889*cdf0e10cSrcweir /*--------------------------------------------------------------------
890*cdf0e10cSrcweir 	 Beschreibung: Dialoganzeige erneuern
891*cdf0e10cSrcweir  --------------------------------------------------------------------*/
892*cdf0e10cSrcweir 
893*cdf0e10cSrcweir 
894*cdf0e10cSrcweir void SwIndexMarkDlg::UpdateDialog()
895*cdf0e10cSrcweir {
896*cdf0e10cSrcweir 	DBG_ASSERT(pSh && pTOXMgr, "Shell nicht da?");
897*cdf0e10cSrcweir 	SwTOXMark* pMark = pTOXMgr->GetCurTOXMark();
898*cdf0e10cSrcweir 	ASSERT(pMark, "Keine aktuelle Markierung");
899*cdf0e10cSrcweir 	if(!pMark)
900*cdf0e10cSrcweir 		return;
901*cdf0e10cSrcweir 
902*cdf0e10cSrcweir 	ViewShell::SetCareWin( GetParent() );
903*cdf0e10cSrcweir 
904*cdf0e10cSrcweir 	aOrgStr = pMark->GetText();
905*cdf0e10cSrcweir 	aEntryED.SetText(aOrgStr);
906*cdf0e10cSrcweir 
907*cdf0e10cSrcweir 	// Verzeichnistyp setzen
908*cdf0e10cSrcweir 	sal_Bool bLevelEnable = sal_True,
909*cdf0e10cSrcweir 		 bKeyEnable   = sal_False,
910*cdf0e10cSrcweir 		 bKey2Enable  = sal_False,
911*cdf0e10cSrcweir 		 bEntryHasText	= sal_False,
912*cdf0e10cSrcweir 		 bKey1HasText	= sal_False,
913*cdf0e10cSrcweir 		 bKey2HasText	= sal_False;
914*cdf0e10cSrcweir 
915*cdf0e10cSrcweir 	TOXTypes eCurType = pMark->GetTOXType()->GetType();
916*cdf0e10cSrcweir 	if(TOX_INDEX == eCurType)
917*cdf0e10cSrcweir 	{
918*cdf0e10cSrcweir 		bLevelEnable = sal_False;
919*cdf0e10cSrcweir 		bKeyEnable = sal_True;
920*cdf0e10cSrcweir 		bKey1HasText = bKey2Enable = 0 != pMark->GetPrimaryKey().Len();
921*cdf0e10cSrcweir 		bKey2HasText = 0 != pMark->GetSecondaryKey().Len();
922*cdf0e10cSrcweir 		bEntryHasText = 0 != pMark->GetText().Len();
923*cdf0e10cSrcweir 		aKeyDCB.SetText( pMark->GetPrimaryKey() );
924*cdf0e10cSrcweir 		aKey2DCB.SetText( pMark->GetSecondaryKey() );
925*cdf0e10cSrcweir 		aPhoneticED0.SetText( pMark->GetTextReading() );
926*cdf0e10cSrcweir 		aPhoneticED1.SetText( pMark->GetPrimaryKeyReading() );
927*cdf0e10cSrcweir 		aPhoneticED2.SetText( pMark->GetSecondaryKeyReading() );
928*cdf0e10cSrcweir 		aMainEntryCB.Check(pMark->IsMainEntry());
929*cdf0e10cSrcweir 	}
930*cdf0e10cSrcweir 	else if(TOX_CONTENT == eCurType || TOX_USER == eCurType)
931*cdf0e10cSrcweir 	{
932*cdf0e10cSrcweir 		aLevelED.SetValue(aLevelED.Normalize(pMark->GetLevel()));
933*cdf0e10cSrcweir 	}
934*cdf0e10cSrcweir 	aKeyFT.Enable(bKeyEnable);
935*cdf0e10cSrcweir 	aKeyDCB.Enable(bKeyEnable);
936*cdf0e10cSrcweir 	aLevelED.SetMax(MAXLEVEL);
937*cdf0e10cSrcweir 	aLevelFT.Show(bLevelEnable);
938*cdf0e10cSrcweir 	aLevelED.Show(bLevelEnable);
939*cdf0e10cSrcweir 	aMainEntryCB.Show(!bLevelEnable);
940*cdf0e10cSrcweir 	aKey2FT.Enable(bKey2Enable);
941*cdf0e10cSrcweir 	aKey2DCB.Enable(bKey2Enable);
942*cdf0e10cSrcweir 
943*cdf0e10cSrcweir 	UpdateLanguageDependenciesForPhoneticReading();
944*cdf0e10cSrcweir 	aPhoneticFT0.Enable(bKeyEnable&&bEntryHasText&&bIsPhoneticReadingEnabled);
945*cdf0e10cSrcweir 	aPhoneticED0.Enable(bKeyEnable&&bEntryHasText&&bIsPhoneticReadingEnabled);
946*cdf0e10cSrcweir 	aPhoneticFT1.Enable(bKeyEnable&&bKey1HasText&&bIsPhoneticReadingEnabled);
947*cdf0e10cSrcweir 	aPhoneticED1.Enable(bKeyEnable&&bKey1HasText&&bIsPhoneticReadingEnabled);
948*cdf0e10cSrcweir 	aPhoneticFT2.Enable(bKeyEnable&&bKey2HasText&&bIsPhoneticReadingEnabled);
949*cdf0e10cSrcweir 	aPhoneticED2.Enable(bKeyEnable&&bKey2HasText&&bIsPhoneticReadingEnabled);
950*cdf0e10cSrcweir 
951*cdf0e10cSrcweir 	// Verzeichnis-Typ setzen
952*cdf0e10cSrcweir 	aTypeDCB.SelectEntry(pMark->GetTOXType()->GetTypeName());
953*cdf0e10cSrcweir 
954*cdf0e10cSrcweir 	// Next - Prev - Buttons setzen
955*cdf0e10cSrcweir 	pSh->SttCrsrMove();
956*cdf0e10cSrcweir 	if( aPrevBT.IsVisible() )
957*cdf0e10cSrcweir 	{
958*cdf0e10cSrcweir 		const SwTOXMark* pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_PRV );
959*cdf0e10cSrcweir 		if( pMoveMark != pMark )
960*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_NXT );
961*cdf0e10cSrcweir 		aPrevBT.Enable( pMoveMark != pMark );
962*cdf0e10cSrcweir 		pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_NXT );
963*cdf0e10cSrcweir 		if( pMoveMark != pMark )
964*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_PRV );
965*cdf0e10cSrcweir 		aNextBT.Enable( pMoveMark != pMark );
966*cdf0e10cSrcweir 	}
967*cdf0e10cSrcweir 
968*cdf0e10cSrcweir 	if( aPrevSameBT.IsVisible() )
969*cdf0e10cSrcweir 	{
970*cdf0e10cSrcweir 		const SwTOXMark* pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_PRV );
971*cdf0e10cSrcweir 		if( pMoveMark != pMark )
972*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_SAME_NXT );
973*cdf0e10cSrcweir 		aPrevSameBT.Enable( pMoveMark != pMark );
974*cdf0e10cSrcweir 		pMoveMark = &pSh->GotoTOXMark( *pMark, TOX_SAME_NXT );
975*cdf0e10cSrcweir 		if( pMoveMark != pMark )
976*cdf0e10cSrcweir 			pSh->GotoTOXMark( *pMoveMark, TOX_SAME_PRV );
977*cdf0e10cSrcweir 		aNextSameBT.Enable( pMoveMark != pMark );
978*cdf0e10cSrcweir 	}
979*cdf0e10cSrcweir 
980*cdf0e10cSrcweir 	sal_Bool bEnable = !pSh->HasReadonlySel();
981*cdf0e10cSrcweir 	aOKBT.Enable( bEnable );
982*cdf0e10cSrcweir 	aDelBT.Enable( bEnable );
983*cdf0e10cSrcweir 	aEntryED.SetReadOnly( !bEnable );
984*cdf0e10cSrcweir 	aLevelED.SetReadOnly( !bEnable );
985*cdf0e10cSrcweir 	aKeyDCB.SetReadOnly( !bEnable );
986*cdf0e10cSrcweir 	aKey2DCB.SetReadOnly( !bEnable );
987*cdf0e10cSrcweir 
988*cdf0e10cSrcweir 	pSh->SelectTxtAttr( RES_TXTATR_TOXMARK, pMark->GetTxtTOXMark() );
989*cdf0e10cSrcweir 	// we need the point at the start of the attribut
990*cdf0e10cSrcweir 	pSh->SwapPam();
991*cdf0e10cSrcweir 
992*cdf0e10cSrcweir 	pSh->EndCrsrMove();
993*cdf0e10cSrcweir }
994*cdf0e10cSrcweir 
995*cdf0e10cSrcweir /*--------------------------------------------------------------------
996*cdf0e10cSrcweir 	 Remind wether the edit boxes for Phonetic reading are changed manually
997*cdf0e10cSrcweir  --------------------------------------------------------------------*/
998*cdf0e10cSrcweir 
999*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, PhoneticEDModifyHdl, Edit *, pEdit )
1000*cdf0e10cSrcweir {
1001*cdf0e10cSrcweir 	if(&aPhoneticED0 == pEdit)
1002*cdf0e10cSrcweir 	{
1003*cdf0e10cSrcweir 		bPhoneticED0_ChangedByUser = pEdit->GetText().Len()>0;
1004*cdf0e10cSrcweir 	}
1005*cdf0e10cSrcweir 	else if(&aPhoneticED1 == pEdit)
1006*cdf0e10cSrcweir 	{
1007*cdf0e10cSrcweir 		bPhoneticED1_ChangedByUser = pEdit->GetText().Len()>0;
1008*cdf0e10cSrcweir 	}
1009*cdf0e10cSrcweir 	else if(&aPhoneticED2 == pEdit)
1010*cdf0e10cSrcweir 	{
1011*cdf0e10cSrcweir 		bPhoneticED2_ChangedByUser = pEdit->GetText().Len()>0;
1012*cdf0e10cSrcweir 	}
1013*cdf0e10cSrcweir 	return 0;
1014*cdf0e10cSrcweir }
1015*cdf0e10cSrcweir 
1016*cdf0e10cSrcweir /*--------------------------------------------------------------------
1017*cdf0e10cSrcweir 	 Beschreibung: Enable Disable des 2. Schluessels
1018*cdf0e10cSrcweir  --------------------------------------------------------------------*/
1019*cdf0e10cSrcweir 
1020*cdf0e10cSrcweir IMPL_LINK( SwIndexMarkDlg, KeyDCBModifyHdl, ComboBox *, pBox )
1021*cdf0e10cSrcweir {
1022*cdf0e10cSrcweir 	if(&aKeyDCB == pBox)
1023*cdf0e10cSrcweir 	{
1024*cdf0e10cSrcweir 		sal_Bool bEnable = pBox->GetText().Len() > 0;
1025*cdf0e10cSrcweir 		if(!bEnable)
1026*cdf0e10cSrcweir 		{
1027*cdf0e10cSrcweir 			aKey2DCB.SetText(aEmptyStr);
1028*cdf0e10cSrcweir 			aPhoneticED1.SetText(aEmptyStr);
1029*cdf0e10cSrcweir 			aPhoneticED2.SetText(aEmptyStr);
1030*cdf0e10cSrcweir 			bPhoneticED1_ChangedByUser = sal_False;
1031*cdf0e10cSrcweir 			bPhoneticED2_ChangedByUser = sal_False;
1032*cdf0e10cSrcweir 		}
1033*cdf0e10cSrcweir 		else
1034*cdf0e10cSrcweir 		{
1035*cdf0e10cSrcweir 			if(pBox->IsInDropDown())
1036*cdf0e10cSrcweir 			{
1037*cdf0e10cSrcweir 				//reset bPhoneticED1_ChangedByUser if a completly new string is selected
1038*cdf0e10cSrcweir 				bPhoneticED1_ChangedByUser = sal_False;
1039*cdf0e10cSrcweir 			}
1040*cdf0e10cSrcweir 			if(!bPhoneticED1_ChangedByUser)
1041*cdf0e10cSrcweir 				aPhoneticED1.SetText(GetDefaultPhoneticReading(pBox->GetText()));
1042*cdf0e10cSrcweir 		}
1043*cdf0e10cSrcweir 		aKey2DCB.Enable(bEnable);
1044*cdf0e10cSrcweir 		aKey2FT.Enable(bEnable);
1045*cdf0e10cSrcweir 	}
1046*cdf0e10cSrcweir 	else if(&aKey2DCB == pBox)
1047*cdf0e10cSrcweir 	{
1048*cdf0e10cSrcweir 		if(!(pBox->GetText().Len()>0))
1049*cdf0e10cSrcweir 		{
1050*cdf0e10cSrcweir 			aPhoneticED2.SetText(aEmptyStr);
1051*cdf0e10cSrcweir 			bPhoneticED2_ChangedByUser = sal_False;
1052*cdf0e10cSrcweir 		}
1053*cdf0e10cSrcweir 		else
1054*cdf0e10cSrcweir 		{
1055*cdf0e10cSrcweir 			if(pBox->IsInDropDown())
1056*cdf0e10cSrcweir 			{
1057*cdf0e10cSrcweir 				//reset bPhoneticED1_ChangedByUser if a completly new string is selected
1058*cdf0e10cSrcweir 				bPhoneticED2_ChangedByUser = sal_False;
1059*cdf0e10cSrcweir 			}
1060*cdf0e10cSrcweir 			if(!bPhoneticED2_ChangedByUser)
1061*cdf0e10cSrcweir 				aPhoneticED2.SetText(GetDefaultPhoneticReading(pBox->GetText()));
1062*cdf0e10cSrcweir 		}
1063*cdf0e10cSrcweir 	}
1064*cdf0e10cSrcweir 	sal_Bool	bKey1HasText	= (0 != aKeyDCB.GetText().Len());
1065*cdf0e10cSrcweir 	sal_Bool	bKey2HasText	= (0 != aKey2DCB.GetText().Len());
1066*cdf0e10cSrcweir 
1067*cdf0e10cSrcweir 	aPhoneticFT1.Enable(bKey1HasText&&bIsPhoneticReadingEnabled);
1068*cdf0e10cSrcweir 	aPhoneticED1.Enable(bKey1HasText&bIsPhoneticReadingEnabled);
1069*cdf0e10cSrcweir 	aPhoneticFT2.Enable(bKey2HasText&bIsPhoneticReadingEnabled);
1070*cdf0e10cSrcweir 	aPhoneticED2.Enable(bKey2HasText&bIsPhoneticReadingEnabled);
1071*cdf0e10cSrcweir 
1072*cdf0e10cSrcweir 	return 0;
1073*cdf0e10cSrcweir }
1074*cdf0e10cSrcweir 
1075*cdf0e10cSrcweir /*-----------------25.02.94 21:19-------------------
1076*cdf0e10cSrcweir  dtor ueberladen
1077*cdf0e10cSrcweir --------------------------------------------------*/
1078*cdf0e10cSrcweir 
1079*cdf0e10cSrcweir 
1080*cdf0e10cSrcweir SwIndexMarkDlg::~SwIndexMarkDlg()
1081*cdf0e10cSrcweir {
1082*cdf0e10cSrcweir 	delete pTOXMgr;
1083*cdf0e10cSrcweir 	ViewShell::SetCareWin( 0 );
1084*cdf0e10cSrcweir }
1085*cdf0e10cSrcweir /* -----------------07.09.99 08:41-------------------
1086*cdf0e10cSrcweir 
1087*cdf0e10cSrcweir  --------------------------------------------------*/
1088*cdf0e10cSrcweir void    SwIndexMarkDlg::ReInitDlg(SwWrtShell& rWrtShell, SwTOXMark* pCurTOXMark)
1089*cdf0e10cSrcweir {
1090*cdf0e10cSrcweir 	pSh = &rWrtShell;
1091*cdf0e10cSrcweir 	delete pTOXMgr;
1092*cdf0e10cSrcweir 	pTOXMgr = new SwTOXMgr(pSh);
1093*cdf0e10cSrcweir     if(pCurTOXMark)
1094*cdf0e10cSrcweir     {
1095*cdf0e10cSrcweir         for(sal_uInt16 i = 0; i < pTOXMgr->GetTOXMarkCount(); i++)
1096*cdf0e10cSrcweir             if(pTOXMgr->GetTOXMark(i) == pCurTOXMark)
1097*cdf0e10cSrcweir             {
1098*cdf0e10cSrcweir                 pTOXMgr->SetCurTOXMark(i);
1099*cdf0e10cSrcweir                 break;
1100*cdf0e10cSrcweir             }
1101*cdf0e10cSrcweir     }
1102*cdf0e10cSrcweir     InitControls();
1103*cdf0e10cSrcweir }
1104*cdf0e10cSrcweir /* -----------------06.10.99 10:00-------------------
1105*cdf0e10cSrcweir 
1106*cdf0e10cSrcweir  --------------------------------------------------*/
1107*cdf0e10cSrcweir SwIndexMarkFloatDlg::SwIndexMarkFloatDlg(SfxBindings* _pBindings,
1108*cdf0e10cSrcweir 				   				SfxChildWindow* pChild,
1109*cdf0e10cSrcweir 				   				Window *pParent,
1110*cdf0e10cSrcweir 								SfxChildWinInfo* pInfo,
1111*cdf0e10cSrcweir 				   				sal_Bool bNew) :
1112*cdf0e10cSrcweir SfxModelessDialog(_pBindings, pChild, pParent, SvtCJKOptions().IsCJKFontEnabled()?SW_RES(DLG_INSIDXMARK_CJK):SW_RES(DLG_INSIDXMARK)),
1113*cdf0e10cSrcweir     aDlg(this, bNew, SW_RES(WIN_DLG), SvtCJKOptions().IsCJKFontEnabled()?DLG_INSIDXMARK_CJK:DLG_INSIDXMARK, *::GetActiveWrtShell())
1114*cdf0e10cSrcweir {
1115*cdf0e10cSrcweir 	FreeResource();
1116*cdf0e10cSrcweir     aDlg.ReInitDlg(*::GetActiveWrtShell());
1117*cdf0e10cSrcweir 	Initialize(pInfo);
1118*cdf0e10cSrcweir }
1119*cdf0e10cSrcweir /* -----------------06.10.99 10:27-------------------
1120*cdf0e10cSrcweir 
1121*cdf0e10cSrcweir  --------------------------------------------------*/
1122*cdf0e10cSrcweir void	SwIndexMarkFloatDlg::Activate()
1123*cdf0e10cSrcweir {
1124*cdf0e10cSrcweir 	SfxModelessDialog::Activate();
1125*cdf0e10cSrcweir 	aDlg.Activate();
1126*cdf0e10cSrcweir }
1127*cdf0e10cSrcweir 
1128*cdf0e10cSrcweir void SwIndexMarkFloatDlg::ReInitDlg(SwWrtShell& rWrtShell)
1129*cdf0e10cSrcweir {
1130*cdf0e10cSrcweir 	aDlg.ReInitDlg( rWrtShell );
1131*cdf0e10cSrcweir }
1132*cdf0e10cSrcweir 
1133*cdf0e10cSrcweir /* -----------------06.10.99 10:35-------------------
1134*cdf0e10cSrcweir 
1135*cdf0e10cSrcweir  --------------------------------------------------*/
1136*cdf0e10cSrcweir SwIndexMarkModalDlg::SwIndexMarkModalDlg(Window *pParent, SwWrtShell& rSh, SwTOXMark* pCurTOXMark) :
1137*cdf0e10cSrcweir SvxStandardDialog(pParent, SvtCJKOptions().IsCJKFontEnabled()?SW_RES(DLG_EDIT_IDXMARK_CJK):SW_RES(DLG_EDIT_IDXMARK)),
1138*cdf0e10cSrcweir     aDlg(this, sal_False, SW_RES(WIN_DLG), SvtCJKOptions().IsCJKFontEnabled()?DLG_EDIT_IDXMARK_CJK:DLG_EDIT_IDXMARK, rSh)
1139*cdf0e10cSrcweir {
1140*cdf0e10cSrcweir 	FreeResource();
1141*cdf0e10cSrcweir     aDlg.ReInitDlg(rSh, pCurTOXMark);
1142*cdf0e10cSrcweir }
1143*cdf0e10cSrcweir /* -----------------06.10.99 10:46-------------------
1144*cdf0e10cSrcweir 
1145*cdf0e10cSrcweir  --------------------------------------------------*/
1146*cdf0e10cSrcweir void	SwIndexMarkModalDlg::Apply()
1147*cdf0e10cSrcweir {
1148*cdf0e10cSrcweir 	aDlg.Apply();
1149*cdf0e10cSrcweir }
1150*cdf0e10cSrcweir /* -----------------16.09.99 14:19-------------------
1151*cdf0e10cSrcweir 
1152*cdf0e10cSrcweir  --------------------------------------------------*/
1153*cdf0e10cSrcweir class SwCreateAuthEntryDlg_Impl : public ModalDialog
1154*cdf0e10cSrcweir {
1155*cdf0e10cSrcweir     FixedLine       aEntriesFL;
1156*cdf0e10cSrcweir 
1157*cdf0e10cSrcweir 	FixedText*		pFixedTexts[AUTH_FIELD_END];
1158*cdf0e10cSrcweir 	ListBox*		pTypeListBox;
1159*cdf0e10cSrcweir 	ComboBox*		pIdentifierBox;
1160*cdf0e10cSrcweir 	Edit*			pEdits[AUTH_FIELD_END];
1161*cdf0e10cSrcweir 
1162*cdf0e10cSrcweir     OKButton        aOKBT;
1163*cdf0e10cSrcweir 	CancelButton 	aCancelBT;
1164*cdf0e10cSrcweir 	HelpButton 		aHelpBT;
1165*cdf0e10cSrcweir 
1166*cdf0e10cSrcweir 	Link			aShortNameCheckLink;
1167*cdf0e10cSrcweir 
1168*cdf0e10cSrcweir 	SwWrtShell& 	rWrtSh;
1169*cdf0e10cSrcweir 
1170*cdf0e10cSrcweir 	sal_Bool			m_bNewEntryMode;
1171*cdf0e10cSrcweir 	sal_Bool			m_bNameAllowed;
1172*cdf0e10cSrcweir 
1173*cdf0e10cSrcweir 	DECL_LINK(IdentifierHdl, ComboBox*);
1174*cdf0e10cSrcweir 	DECL_LINK(ShortNameHdl, Edit*);
1175*cdf0e10cSrcweir 	DECL_LINK(EnableHdl, ListBox* pBox);
1176*cdf0e10cSrcweir 
1177*cdf0e10cSrcweir public:
1178*cdf0e10cSrcweir 	SwCreateAuthEntryDlg_Impl(Window* pParent,
1179*cdf0e10cSrcweir 							const String pFields[],
1180*cdf0e10cSrcweir 							SwWrtShell& rSh,
1181*cdf0e10cSrcweir 							sal_Bool bNewEntry,
1182*cdf0e10cSrcweir 							sal_Bool bCreate);
1183*cdf0e10cSrcweir 	~SwCreateAuthEntryDlg_Impl();
1184*cdf0e10cSrcweir 
1185*cdf0e10cSrcweir 	String			GetEntryText(ToxAuthorityField eField) const;
1186*cdf0e10cSrcweir 
1187*cdf0e10cSrcweir 	void			SetCheckNameHdl(const Link& rLink) {aShortNameCheckLink = rLink;}
1188*cdf0e10cSrcweir 
1189*cdf0e10cSrcweir };
1190*cdf0e10cSrcweir /*-- 15.09.99 08:43:24---------------------------------------------------
1191*cdf0e10cSrcweir 
1192*cdf0e10cSrcweir   -----------------------------------------------------------------------*/
1193*cdf0e10cSrcweir struct TextInfo
1194*cdf0e10cSrcweir {
1195*cdf0e10cSrcweir 	sal_uInt16 nToxField;
1196*cdf0e10cSrcweir 	const char* pHelpId;
1197*cdf0e10cSrcweir };
1198*cdf0e10cSrcweir 
1199*cdf0e10cSrcweir static const TextInfo aTextInfoArr[] =
1200*cdf0e10cSrcweir {
1201*cdf0e10cSrcweir 	{AUTH_FIELD_IDENTIFIER,      HID_AUTH_FIELD_IDENTIFIER      },
1202*cdf0e10cSrcweir 	{AUTH_FIELD_AUTHORITY_TYPE,  HID_AUTH_FIELD_AUTHORITY_TYPE  },
1203*cdf0e10cSrcweir 	{AUTH_FIELD_AUTHOR,          HID_AUTH_FIELD_AUTHOR          },
1204*cdf0e10cSrcweir 	{AUTH_FIELD_TITLE,           HID_AUTH_FIELD_TITLE           },
1205*cdf0e10cSrcweir 	{AUTH_FIELD_YEAR,            HID_AUTH_FIELD_YEAR            },
1206*cdf0e10cSrcweir 	{AUTH_FIELD_PUBLISHER,       HID_AUTH_FIELD_PUBLISHER       },
1207*cdf0e10cSrcweir 	{AUTH_FIELD_ADDRESS,         HID_AUTH_FIELD_ADDRESS         },
1208*cdf0e10cSrcweir 	{AUTH_FIELD_ISBN,            HID_AUTH_FIELD_ISBN            },
1209*cdf0e10cSrcweir 	{AUTH_FIELD_CHAPTER,         HID_AUTH_FIELD_CHAPTER         },
1210*cdf0e10cSrcweir 	{AUTH_FIELD_PAGES,           HID_AUTH_FIELD_PAGES           },
1211*cdf0e10cSrcweir 	{AUTH_FIELD_EDITOR,          HID_AUTH_FIELD_EDITOR          },
1212*cdf0e10cSrcweir 	{AUTH_FIELD_EDITION,         HID_AUTH_FIELD_EDITION         },
1213*cdf0e10cSrcweir 	{AUTH_FIELD_BOOKTITLE,       HID_AUTH_FIELD_BOOKTITLE       },
1214*cdf0e10cSrcweir 	{AUTH_FIELD_VOLUME,          HID_AUTH_FIELD_VOLUME          },
1215*cdf0e10cSrcweir 	{AUTH_FIELD_HOWPUBLISHED,    HID_AUTH_FIELD_HOWPUBLISHED    },
1216*cdf0e10cSrcweir 	{AUTH_FIELD_ORGANIZATIONS,   HID_AUTH_FIELD_ORGANIZATIONS   },
1217*cdf0e10cSrcweir 	{AUTH_FIELD_INSTITUTION,     HID_AUTH_FIELD_INSTITUTION     },
1218*cdf0e10cSrcweir 	{AUTH_FIELD_SCHOOL,          HID_AUTH_FIELD_SCHOOL          },
1219*cdf0e10cSrcweir 	{AUTH_FIELD_REPORT_TYPE,     HID_AUTH_FIELD_REPORT_TYPE     },
1220*cdf0e10cSrcweir 	{AUTH_FIELD_MONTH,           HID_AUTH_FIELD_MONTH           },
1221*cdf0e10cSrcweir 	{AUTH_FIELD_JOURNAL,         HID_AUTH_FIELD_JOURNAL         },
1222*cdf0e10cSrcweir 	{AUTH_FIELD_NUMBER,          HID_AUTH_FIELD_NUMBER          },
1223*cdf0e10cSrcweir 	{AUTH_FIELD_SERIES,          HID_AUTH_FIELD_SERIES          },
1224*cdf0e10cSrcweir 	{AUTH_FIELD_ANNOTE,          HID_AUTH_FIELD_ANNOTE          },
1225*cdf0e10cSrcweir 	{AUTH_FIELD_NOTE,            HID_AUTH_FIELD_NOTE            },
1226*cdf0e10cSrcweir 	{AUTH_FIELD_URL,             HID_AUTH_FIELD_URL             },
1227*cdf0e10cSrcweir 	{AUTH_FIELD_CUSTOM1,         HID_AUTH_FIELD_CUSTOM1         },
1228*cdf0e10cSrcweir 	{AUTH_FIELD_CUSTOM2,         HID_AUTH_FIELD_CUSTOM2         },
1229*cdf0e10cSrcweir 	{AUTH_FIELD_CUSTOM3,         HID_AUTH_FIELD_CUSTOM3         },
1230*cdf0e10cSrcweir 	{AUTH_FIELD_CUSTOM4,         HID_AUTH_FIELD_CUSTOM4         },
1231*cdf0e10cSrcweir 	{AUTH_FIELD_CUSTOM5,         HID_AUTH_FIELD_CUSTOM5         }
1232*cdf0e10cSrcweir };
1233*cdf0e10cSrcweir 
1234*cdf0e10cSrcweir sal_Bool SwAuthMarkDlg::bIsFromComponent = sal_True;
1235*cdf0e10cSrcweir 
1236*cdf0e10cSrcweir SwAuthMarkDlg::SwAuthMarkDlg(  Window *pParent,
1237*cdf0e10cSrcweir 							   const ResId& rResId,
1238*cdf0e10cSrcweir 							   sal_Bool bNewDlg) :
1239*cdf0e10cSrcweir 	Window(pParent, rResId),
1240*cdf0e10cSrcweir     aFromComponentRB(   this, ResId(RB_FROMCOMPONENT, *rResId.GetResMgr()   )),
1241*cdf0e10cSrcweir     aFromDocContentRB(  this, ResId(RB_FROMDOCCONTENT, *rResId.GetResMgr()  )),
1242*cdf0e10cSrcweir 
1243*cdf0e10cSrcweir     aAuthorFT(  this, ResId(FT_AUTHOR, *rResId.GetResMgr()       )),
1244*cdf0e10cSrcweir     aAuthorFI(  this, ResId(FI_AUTHOR, *rResId.GetResMgr()   )),
1245*cdf0e10cSrcweir     aTitleFT(   this, ResId(FT_TITLE, *rResId.GetResMgr()    )),
1246*cdf0e10cSrcweir     aTitleFI(   this, ResId(FI_TITLE, *rResId.GetResMgr()    )),
1247*cdf0e10cSrcweir     aEntryFT(   this, ResId(FT_ENTRY, *rResId.GetResMgr()    )),
1248*cdf0e10cSrcweir     aEntryED(   this, ResId(ED_ENTRY, *rResId.GetResMgr()   )),
1249*cdf0e10cSrcweir     aEntryLB(   this, ResId(LB_ENTRY, *rResId.GetResMgr()   )),
1250*cdf0e10cSrcweir 
1251*cdf0e10cSrcweir     aEntryFL(   this, ResId(FL_ENTRY, *rResId.GetResMgr()    )),
1252*cdf0e10cSrcweir 
1253*cdf0e10cSrcweir     aOKBT(      this, ResId(PB_OK, *rResId.GetResMgr()       )),
1254*cdf0e10cSrcweir     aCancelBT(  this, ResId(PB_CANCEL, *rResId.GetResMgr()  )),
1255*cdf0e10cSrcweir     aHelpBT(    this, ResId(PB_HELP, *rResId.GetResMgr()    )),
1256*cdf0e10cSrcweir     aCreateEntryPB(this,ResId(PB_CREATEENTRY, *rResId.GetResMgr())),
1257*cdf0e10cSrcweir     aEditEntryPB(this,  ResId(PB_EDITENTRY, *rResId.GetResMgr())),
1258*cdf0e10cSrcweir 
1259*cdf0e10cSrcweir     sChangeST(  ResId(ST_CHANGE, *rResId.GetResMgr())),
1260*cdf0e10cSrcweir     bNewEntry(bNewDlg),
1261*cdf0e10cSrcweir     bBibAccessInitialized(sal_False),
1262*cdf0e10cSrcweir 
1263*cdf0e10cSrcweir     pSh(0)
1264*cdf0e10cSrcweir {
1265*cdf0e10cSrcweir 	SetStyle(GetStyle()|WB_DIALOGCONTROL);
1266*cdf0e10cSrcweir 	FreeResource();
1267*cdf0e10cSrcweir 
1268*cdf0e10cSrcweir 	aFromComponentRB.SetHelpId(HID_AUTH_MARK_DLG_FROM_COMP_RB);
1269*cdf0e10cSrcweir 	aFromDocContentRB.SetHelpId(HID_AUTH_MARK_DLG_FROM_DOC_RB );
1270*cdf0e10cSrcweir 	aEntryED.SetHelpId(HID_AUTH_MARK_DLG_ID_LISTBOX           );
1271*cdf0e10cSrcweir 	aEntryLB.SetHelpId(HID_AUTH_MARK_DLG_ID_LISTBOX           );
1272*cdf0e10cSrcweir 
1273*cdf0e10cSrcweir 	aFromComponentRB.Show(bNewEntry);
1274*cdf0e10cSrcweir 	aFromDocContentRB.Show(bNewEntry);
1275*cdf0e10cSrcweir 	aFromComponentRB.Check(bIsFromComponent);
1276*cdf0e10cSrcweir 	aFromDocContentRB.Check(!bIsFromComponent);
1277*cdf0e10cSrcweir 
1278*cdf0e10cSrcweir 	aOKBT		.SetHelpId(HID_INSERT_AUTH_MRK_OK   );
1279*cdf0e10cSrcweir 	aCancelBT	.SetHelpId(HID_INSERT_AUTH_MRK_CLOSE);
1280*cdf0e10cSrcweir 	aEntryED		.SetHelpId(HID_INSERT_AUTH_MRK_ENTRY		);
1281*cdf0e10cSrcweir 	aCreateEntryPB  .SetHelpId(HID_INSERT_AUTH_MRK_CREATE_ENTRY	);
1282*cdf0e10cSrcweir 	aEditEntryPB    .SetHelpId(HID_INSERT_AUTH_MRK_EDIT_ENTRY	);
1283*cdf0e10cSrcweir 
1284*cdf0e10cSrcweir 	aOKBT.SetClickHdl(LINK(this,SwAuthMarkDlg, InsertHdl));
1285*cdf0e10cSrcweir 	aCancelBT.SetClickHdl(LINK(this,SwAuthMarkDlg, CloseHdl));
1286*cdf0e10cSrcweir 	aCreateEntryPB.SetClickHdl(LINK(this,SwAuthMarkDlg, CreateEntryHdl));
1287*cdf0e10cSrcweir 	aEditEntryPB.SetClickHdl(LINK(this,SwAuthMarkDlg, CreateEntryHdl));
1288*cdf0e10cSrcweir 	aFromComponentRB.SetClickHdl(LINK(this,SwAuthMarkDlg, ChangeSourceHdl));
1289*cdf0e10cSrcweir 	aFromDocContentRB.SetClickHdl(LINK(this,SwAuthMarkDlg, ChangeSourceHdl));
1290*cdf0e10cSrcweir     aEntryED.SetModifyHdl(LINK(this,SwAuthMarkDlg, EditModifyHdl));
1291*cdf0e10cSrcweir 
1292*cdf0e10cSrcweir 	GetParent()->SetText(String(SW_RES(
1293*cdf0e10cSrcweir 					bNewEntry ? STR_AUTHMRK_INSERT : STR_AUTHMRK_EDIT)));
1294*cdf0e10cSrcweir 	aEntryED.Show(!bNewEntry);
1295*cdf0e10cSrcweir 	aEntryLB.Show(bNewEntry);
1296*cdf0e10cSrcweir 	if(!bNewEntry)
1297*cdf0e10cSrcweir 	{
1298*cdf0e10cSrcweir 		aOKBT.SetText(sChangeST);
1299*cdf0e10cSrcweir 	}
1300*cdf0e10cSrcweir 	else
1301*cdf0e10cSrcweir 	{
1302*cdf0e10cSrcweir 		aEntryLB.SetSelectHdl(LINK(this, SwAuthMarkDlg, CompEntryHdl));
1303*cdf0e10cSrcweir 	}
1304*cdf0e10cSrcweir }
1305*cdf0e10cSrcweir /*-- 15.09.99 08:43:25---------------------------------------------------
1306*cdf0e10cSrcweir 
1307*cdf0e10cSrcweir   -----------------------------------------------------------------------*/
1308*cdf0e10cSrcweir SwAuthMarkDlg::~SwAuthMarkDlg()
1309*cdf0e10cSrcweir {
1310*cdf0e10cSrcweir }
1311*cdf0e10cSrcweir /*-- 15.09.99 08:43:25---------------------------------------------------
1312*cdf0e10cSrcweir 
1313*cdf0e10cSrcweir   -----------------------------------------------------------------------*/
1314*cdf0e10cSrcweir void	SwAuthMarkDlg::ReInitDlg(SwWrtShell& rWrtShell)
1315*cdf0e10cSrcweir {
1316*cdf0e10cSrcweir 	pSh = &rWrtShell;
1317*cdf0e10cSrcweir 	InitControls();
1318*cdf0e10cSrcweir }
1319*cdf0e10cSrcweir /* -----------------15.09.99 08:57-------------------
1320*cdf0e10cSrcweir 
1321*cdf0e10cSrcweir  --------------------------------------------------*/
1322*cdf0e10cSrcweir IMPL_LINK( SwAuthMarkDlg, CloseHdl, PushButton *, EMPTYARG )
1323*cdf0e10cSrcweir {
1324*cdf0e10cSrcweir 	if(bNewEntry)
1325*cdf0e10cSrcweir 	{
1326*cdf0e10cSrcweir 		sal_uInt16 nSlot = FN_INSERT_AUTH_ENTRY_DLG;
1327*cdf0e10cSrcweir 		SfxViewFrame::Current()->GetDispatcher()->Execute(nSlot,
1328*cdf0e10cSrcweir 					SFX_CALLMODE_ASYNCHRON|SFX_CALLMODE_RECORD);
1329*cdf0e10cSrcweir 	}
1330*cdf0e10cSrcweir 	else
1331*cdf0e10cSrcweir 	{
1332*cdf0e10cSrcweir 		((SwAuthMarkModalDlg*)GetParent())->EndDialog(RET_CANCEL);
1333*cdf0e10cSrcweir 	}
1334*cdf0e10cSrcweir 	return 0;
1335*cdf0e10cSrcweir }
1336*cdf0e10cSrcweir /* -----------------06.12.99 13:54-------------------
1337*cdf0e10cSrcweir 
1338*cdf0e10cSrcweir  --------------------------------------------------*/
1339*cdf0e10cSrcweir static String lcl_FindColumnEntry(const beans::PropertyValue* pFields, sal_Int32 nLen, const String& rColumnTitle)
1340*cdf0e10cSrcweir {
1341*cdf0e10cSrcweir 	String sRet;
1342*cdf0e10cSrcweir 	OUString uColumnTitle = rColumnTitle;
1343*cdf0e10cSrcweir     for(sal_uInt16 i = 0; i < nLen; i++)
1344*cdf0e10cSrcweir 	{
1345*cdf0e10cSrcweir         OUString uTmp;
1346*cdf0e10cSrcweir         if(pFields[i].Name == uColumnTitle &&
1347*cdf0e10cSrcweir             (pFields[i].Value >>= uTmp))
1348*cdf0e10cSrcweir 		{
1349*cdf0e10cSrcweir 			sRet = String(uTmp);
1350*cdf0e10cSrcweir 			break;
1351*cdf0e10cSrcweir 		}
1352*cdf0e10cSrcweir 	}
1353*cdf0e10cSrcweir 	return sRet;
1354*cdf0e10cSrcweir }
1355*cdf0e10cSrcweir /* -----------------------------07.12.99 15:39--------------------------------
1356*cdf0e10cSrcweir 
1357*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
1358*cdf0e10cSrcweir IMPL_LINK( SwAuthMarkDlg, CompEntryHdl, ListBox*, pBox)
1359*cdf0e10cSrcweir {
1360*cdf0e10cSrcweir 	String sEntry(pBox->GetSelectEntry());
1361*cdf0e10cSrcweir 	if(bIsFromComponent)
1362*cdf0e10cSrcweir 	{
1363*cdf0e10cSrcweir 		if(xBibAccess.is() && sEntry.Len())
1364*cdf0e10cSrcweir 		{
1365*cdf0e10cSrcweir 			OUString uEntry(sEntry);
1366*cdf0e10cSrcweir 			if(xBibAccess->hasByName(uEntry))
1367*cdf0e10cSrcweir 			{
1368*cdf0e10cSrcweir 				uno::Any aEntry(xBibAccess->getByName(uEntry));
1369*cdf0e10cSrcweir                 uno::Sequence<beans::PropertyValue> aFieldProps;
1370*cdf0e10cSrcweir                 if(aEntry >>= aFieldProps)
1371*cdf0e10cSrcweir 				{
1372*cdf0e10cSrcweir 					const beans::PropertyValue* pProps = aFieldProps.getConstArray();
1373*cdf0e10cSrcweir                     for(sal_uInt16 i = 0; i < AUTH_FIELD_END && i < aFieldProps.getLength(); i++)
1374*cdf0e10cSrcweir 					{
1375*cdf0e10cSrcweir 						m_sFields[i] = lcl_FindColumnEntry(
1376*cdf0e10cSrcweir 								pProps, aFieldProps.getLength(), m_sColumnTitles[i]);
1377*cdf0e10cSrcweir 					}
1378*cdf0e10cSrcweir 				}
1379*cdf0e10cSrcweir 			}
1380*cdf0e10cSrcweir 		}
1381*cdf0e10cSrcweir 	}
1382*cdf0e10cSrcweir 	else
1383*cdf0e10cSrcweir 	{
1384*cdf0e10cSrcweir 		if(sEntry.Len())
1385*cdf0e10cSrcweir 		{
1386*cdf0e10cSrcweir 			const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
1387*cdf0e10cSrcweir 										pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
1388*cdf0e10cSrcweir 			const SwAuthEntry* 	pEntry = pFType ? pFType->GetEntryByIdentifier(sEntry) : 0;
1389*cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1390*cdf0e10cSrcweir 				m_sFields[i] = pEntry ?
1391*cdf0e10cSrcweir 							pEntry->GetAuthorField((ToxAuthorityField)i) : aEmptyStr;
1392*cdf0e10cSrcweir 		}
1393*cdf0e10cSrcweir 	}
1394*cdf0e10cSrcweir 	if(!pBox->GetSelectEntry().Len())
1395*cdf0e10cSrcweir 	{
1396*cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1397*cdf0e10cSrcweir 			m_sFields[i] = aEmptyStr;
1398*cdf0e10cSrcweir 	}
1399*cdf0e10cSrcweir 	aAuthorFI.SetText(m_sFields[AUTH_FIELD_AUTHOR]);
1400*cdf0e10cSrcweir 	aTitleFI.SetText(m_sFields[AUTH_FIELD_TITLE]);
1401*cdf0e10cSrcweir 	return 0;
1402*cdf0e10cSrcweir }
1403*cdf0e10cSrcweir 
1404*cdf0e10cSrcweir /* -----------------15.09.99 08:57-------------------
1405*cdf0e10cSrcweir 
1406*cdf0e10cSrcweir  --------------------------------------------------*/
1407*cdf0e10cSrcweir IMPL_LINK( SwAuthMarkDlg, InsertHdl, PushButton *, EMPTYARG )
1408*cdf0e10cSrcweir {
1409*cdf0e10cSrcweir 	//insert or update the SwAuthorityField...
1410*cdf0e10cSrcweir 	if(pSh)
1411*cdf0e10cSrcweir 	{
1412*cdf0e10cSrcweir 		sal_Bool bDifferent = sal_False;
1413*cdf0e10cSrcweir 		DBG_ASSERT(m_sFields[AUTH_FIELD_IDENTIFIER].Len() , "No Id is set!");
1414*cdf0e10cSrcweir 		DBG_ASSERT(m_sFields[AUTH_FIELD_AUTHORITY_TYPE].Len() , "No authority type is set!");
1415*cdf0e10cSrcweir 		//check if the entry already exists with different content
1416*cdf0e10cSrcweir 		const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
1417*cdf0e10cSrcweir 										pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
1418*cdf0e10cSrcweir 		const SwAuthEntry* 	pEntry = pFType ?
1419*cdf0e10cSrcweir 				pFType->GetEntryByIdentifier( m_sFields[AUTH_FIELD_IDENTIFIER])
1420*cdf0e10cSrcweir 				: 0;
1421*cdf0e10cSrcweir 		if(pEntry)
1422*cdf0e10cSrcweir 		{
1423*cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < AUTH_FIELD_END && !bDifferent; i++)
1424*cdf0e10cSrcweir 				bDifferent |= m_sFields[i] != pEntry->GetAuthorField((ToxAuthorityField)i);
1425*cdf0e10cSrcweir 			if(bDifferent)
1426*cdf0e10cSrcweir 			{
1427*cdf0e10cSrcweir 				QueryBox aQuery(this, SW_RES(DLG_CHANGE_AUTH_ENTRY));
1428*cdf0e10cSrcweir 				if(RET_YES != aQuery.Execute())
1429*cdf0e10cSrcweir 					return 0;
1430*cdf0e10cSrcweir 			}
1431*cdf0e10cSrcweir 		}
1432*cdf0e10cSrcweir 
1433*cdf0e10cSrcweir 		SwFldMgr aMgr(pSh);
1434*cdf0e10cSrcweir 		String sFields;
1435*cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1436*cdf0e10cSrcweir 		{
1437*cdf0e10cSrcweir 			sFields += m_sFields[i];
1438*cdf0e10cSrcweir 			sFields += TOX_STYLE_DELIMITER;
1439*cdf0e10cSrcweir 		}
1440*cdf0e10cSrcweir 		if(bNewEntry)
1441*cdf0e10cSrcweir 		{
1442*cdf0e10cSrcweir 			if(bDifferent)
1443*cdf0e10cSrcweir 			{
1444*cdf0e10cSrcweir 				SwAuthEntry aNewData;
1445*cdf0e10cSrcweir 				for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1446*cdf0e10cSrcweir 					aNewData.SetAuthorField((ToxAuthorityField)i, m_sFields[i]);
1447*cdf0e10cSrcweir 				pSh->ChangeAuthorityData(&aNewData);
1448*cdf0e10cSrcweir 			}
1449*cdf0e10cSrcweir             SwInsertFld_Data aData(TYP_AUTHORITY, 0, sFields, aEmptyStr, 0 );
1450*cdf0e10cSrcweir             aMgr.InsertFld( aData );
1451*cdf0e10cSrcweir 		}
1452*cdf0e10cSrcweir 		else if(aMgr.GetCurFld())
1453*cdf0e10cSrcweir 		{
1454*cdf0e10cSrcweir 			aMgr.UpdateCurFld(0, sFields, aEmptyStr);
1455*cdf0e10cSrcweir 		}
1456*cdf0e10cSrcweir 	}
1457*cdf0e10cSrcweir 	if(!bNewEntry)
1458*cdf0e10cSrcweir 		CloseHdl(0);
1459*cdf0e10cSrcweir 	return 0;
1460*cdf0e10cSrcweir }
1461*cdf0e10cSrcweir /* -----------------17.09.99 13:06-------------------
1462*cdf0e10cSrcweir 
1463*cdf0e10cSrcweir  --------------------------------------------------*/
1464*cdf0e10cSrcweir IMPL_LINK(SwAuthMarkDlg, CreateEntryHdl, PushButton*, pButton)
1465*cdf0e10cSrcweir {
1466*cdf0e10cSrcweir 	sal_Bool bCreate = pButton == &aCreateEntryPB;
1467*cdf0e10cSrcweir 	String sOldId = m_sCreatedEntry[0];
1468*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1469*cdf0e10cSrcweir 		m_sCreatedEntry[i] = bCreate ? aEmptyStr : m_sFields[i];
1470*cdf0e10cSrcweir 	SwCreateAuthEntryDlg_Impl aDlg(pButton,
1471*cdf0e10cSrcweir 				bCreate ? m_sCreatedEntry : m_sFields,
1472*cdf0e10cSrcweir 				*pSh, bNewEntry, bCreate);
1473*cdf0e10cSrcweir 	if(bNewEntry)
1474*cdf0e10cSrcweir 	{
1475*cdf0e10cSrcweir 		aDlg.SetCheckNameHdl(LINK(this, SwAuthMarkDlg, IsEntryAllowedHdl));
1476*cdf0e10cSrcweir 	}
1477*cdf0e10cSrcweir 	if(RET_OK == aDlg.Execute())
1478*cdf0e10cSrcweir 	{
1479*cdf0e10cSrcweir 		if(bCreate && sOldId.Len())
1480*cdf0e10cSrcweir 		{
1481*cdf0e10cSrcweir 			aEntryLB.RemoveEntry(sOldId);
1482*cdf0e10cSrcweir 		}
1483*cdf0e10cSrcweir 		for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1484*cdf0e10cSrcweir 		{
1485*cdf0e10cSrcweir 			m_sFields[i] = aDlg.GetEntryText((ToxAuthorityField)i);
1486*cdf0e10cSrcweir 			m_sCreatedEntry[i] = m_sFields[i];
1487*cdf0e10cSrcweir 		}
1488*cdf0e10cSrcweir 		if(bNewEntry && !aFromDocContentRB.IsChecked())
1489*cdf0e10cSrcweir 		{
1490*cdf0e10cSrcweir 			aFromDocContentRB.Check(sal_True);
1491*cdf0e10cSrcweir 			ChangeSourceHdl(&aFromDocContentRB);
1492*cdf0e10cSrcweir 		}
1493*cdf0e10cSrcweir 		if(bCreate)
1494*cdf0e10cSrcweir 		{
1495*cdf0e10cSrcweir 			DBG_ASSERT(LISTBOX_ENTRY_NOTFOUND ==
1496*cdf0e10cSrcweir 						aEntryLB.GetEntryPos(m_sFields[AUTH_FIELD_IDENTIFIER]),
1497*cdf0e10cSrcweir 						"entry exists!");
1498*cdf0e10cSrcweir 			aEntryLB.InsertEntry(m_sFields[AUTH_FIELD_IDENTIFIER]);
1499*cdf0e10cSrcweir 			aEntryLB.SelectEntry(m_sFields[AUTH_FIELD_IDENTIFIER]);
1500*cdf0e10cSrcweir 		}
1501*cdf0e10cSrcweir 		aEntryED.SetText(m_sFields[AUTH_FIELD_IDENTIFIER]);
1502*cdf0e10cSrcweir 		aAuthorFI.SetText(m_sFields[AUTH_FIELD_AUTHOR]);
1503*cdf0e10cSrcweir 		aTitleFI.SetText(m_sFields[AUTH_FIELD_TITLE]);
1504*cdf0e10cSrcweir         aOKBT.Enable();
1505*cdf0e10cSrcweir 	}
1506*cdf0e10cSrcweir 	return 0;
1507*cdf0e10cSrcweir }
1508*cdf0e10cSrcweir /* -----------------------------20.12.99 14:26--------------------------------
1509*cdf0e10cSrcweir 
1510*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
1511*cdf0e10cSrcweir IMPL_LINK(SwAuthMarkDlg, ChangeSourceHdl, RadioButton*, pButton)
1512*cdf0e10cSrcweir {
1513*cdf0e10cSrcweir 	sal_Bool bFromComp = (pButton == &aFromComponentRB);
1514*cdf0e10cSrcweir 	bIsFromComponent = bFromComp;
1515*cdf0e10cSrcweir 	aCreateEntryPB.Enable(!bIsFromComponent);
1516*cdf0e10cSrcweir 	aEntryLB.Clear();
1517*cdf0e10cSrcweir 	if(bIsFromComponent)
1518*cdf0e10cSrcweir 	{
1519*cdf0e10cSrcweir 		if(!bBibAccessInitialized)
1520*cdf0e10cSrcweir 		{
1521*cdf0e10cSrcweir  			uno::Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
1522*cdf0e10cSrcweir 			xBibAccess = uno::Reference< container::XNameAccess > (
1523*cdf0e10cSrcweir 							xMSF->createInstance( C2U("com.sun.star.frame.Bibliography") ),
1524*cdf0e10cSrcweir 																		uno::UNO_QUERY );
1525*cdf0e10cSrcweir 			uno::Reference< beans::XPropertySet >  xPropSet(xBibAccess, uno::UNO_QUERY);
1526*cdf0e10cSrcweir 			OUString uPropName(C2U("BibliographyDataFieldNames"));
1527*cdf0e10cSrcweir 			if(xPropSet.is() && xPropSet->getPropertySetInfo()->hasPropertyByName(uPropName))
1528*cdf0e10cSrcweir 			{
1529*cdf0e10cSrcweir 				uno::Any aNames = xPropSet->getPropertyValue(uPropName);
1530*cdf0e10cSrcweir                 uno::Sequence<beans::PropertyValue> aSeq;
1531*cdf0e10cSrcweir                 if( aNames >>= aSeq)
1532*cdf0e10cSrcweir 				{
1533*cdf0e10cSrcweir                     const beans::PropertyValue* pArr = aSeq.getConstArray();
1534*cdf0e10cSrcweir 					for(sal_uInt16 i = 0; i < aSeq.getLength(); i++)
1535*cdf0e10cSrcweir 					{
1536*cdf0e10cSrcweir 						String sTitle = pArr[i].Name;
1537*cdf0e10cSrcweir 						sal_Int16 nField = 0;
1538*cdf0e10cSrcweir 						pArr[i].Value >>= nField;
1539*cdf0e10cSrcweir 						if(nField >= 0 && nField < AUTH_FIELD_END)
1540*cdf0e10cSrcweir 							m_sColumnTitles[nField] = sTitle;
1541*cdf0e10cSrcweir 					}
1542*cdf0e10cSrcweir 				}
1543*cdf0e10cSrcweir 			}
1544*cdf0e10cSrcweir 			bBibAccessInitialized = sal_True;
1545*cdf0e10cSrcweir 		}
1546*cdf0e10cSrcweir 		if(xBibAccess.is())
1547*cdf0e10cSrcweir 		{
1548*cdf0e10cSrcweir 			uno::Sequence<OUString> aIdentifiers = xBibAccess->getElementNames();
1549*cdf0e10cSrcweir 			const OUString* pNames = aIdentifiers.getConstArray();
1550*cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < aIdentifiers.getLength(); i++)
1551*cdf0e10cSrcweir 			{
1552*cdf0e10cSrcweir 				aEntryLB.InsertEntry(pNames[i]);
1553*cdf0e10cSrcweir 			}
1554*cdf0e10cSrcweir 		}
1555*cdf0e10cSrcweir 	}
1556*cdf0e10cSrcweir 	else
1557*cdf0e10cSrcweir 	{
1558*cdf0e10cSrcweir 		const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
1559*cdf0e10cSrcweir 									pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
1560*cdf0e10cSrcweir 		if(pFType)
1561*cdf0e10cSrcweir 		{
1562*cdf0e10cSrcweir 			SvStringsDtor aIds;
1563*cdf0e10cSrcweir 			pFType->GetAllEntryIdentifiers(	aIds );
1564*cdf0e10cSrcweir 			for(sal_uInt16 n = 0; n < aIds.Count(); n++)
1565*cdf0e10cSrcweir 				aEntryLB.InsertEntry(*aIds.GetObject(n));
1566*cdf0e10cSrcweir 		}
1567*cdf0e10cSrcweir 		if(m_sCreatedEntry[AUTH_FIELD_IDENTIFIER].Len())
1568*cdf0e10cSrcweir 			aEntryLB.InsertEntry(m_sCreatedEntry[AUTH_FIELD_IDENTIFIER]);
1569*cdf0e10cSrcweir 	}
1570*cdf0e10cSrcweir 	aEntryLB.SelectEntryPos(0);
1571*cdf0e10cSrcweir 	CompEntryHdl(&aEntryLB);
1572*cdf0e10cSrcweir 	return 0;
1573*cdf0e10cSrcweir }
1574*cdf0e10cSrcweir /* -----------------15.10.2002 13:16-----------------
1575*cdf0e10cSrcweir  *
1576*cdf0e10cSrcweir  * --------------------------------------------------*/
1577*cdf0e10cSrcweir IMPL_LINK(SwAuthMarkDlg, EditModifyHdl, Edit*, pEdit)
1578*cdf0e10cSrcweir {
1579*cdf0e10cSrcweir     Link aAllowed = LINK(this, SwAuthMarkDlg, IsEntryAllowedHdl);
1580*cdf0e10cSrcweir     long nResult = aAllowed.Call(pEdit);
1581*cdf0e10cSrcweir     aOKBT.Enable(nResult > 0);
1582*cdf0e10cSrcweir     if(nResult)
1583*cdf0e10cSrcweir     {
1584*cdf0e10cSrcweir         String sEntry(pEdit->GetText());
1585*cdf0e10cSrcweir         m_sFields[AUTH_FIELD_IDENTIFIER] = sEntry;
1586*cdf0e10cSrcweir         m_sCreatedEntry[AUTH_FIELD_IDENTIFIER] = sEntry;
1587*cdf0e10cSrcweir     }
1588*cdf0e10cSrcweir     return 0;
1589*cdf0e10cSrcweir };
1590*cdf0e10cSrcweir /* -----------------------------20.12.99 15:11--------------------------------
1591*cdf0e10cSrcweir 
1592*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
1593*cdf0e10cSrcweir IMPL_LINK(SwAuthMarkDlg, IsEntryAllowedHdl, Edit*, pEdit)
1594*cdf0e10cSrcweir {
1595*cdf0e10cSrcweir 	String sEntry = pEdit->GetText();
1596*cdf0e10cSrcweir 	sal_Bool bAllowed = sal_False;
1597*cdf0e10cSrcweir 	if(sEntry.Len())
1598*cdf0e10cSrcweir 	{
1599*cdf0e10cSrcweir 		if(aEntryLB.GetEntryPos(sEntry) != LISTBOX_ENTRY_NOTFOUND)
1600*cdf0e10cSrcweir 			return 0;
1601*cdf0e10cSrcweir 		else if(bIsFromComponent)
1602*cdf0e10cSrcweir 		{
1603*cdf0e10cSrcweir 			const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
1604*cdf0e10cSrcweir 										pSh->GetFldType(RES_AUTHORITY, aEmptyStr);
1605*cdf0e10cSrcweir 			bAllowed = !pFType || !pFType->GetEntryByIdentifier(sEntry);
1606*cdf0e10cSrcweir 		}
1607*cdf0e10cSrcweir 		else
1608*cdf0e10cSrcweir 		{
1609*cdf0e10cSrcweir 			bAllowed = !xBibAccess.is() || !xBibAccess->hasByName(sEntry);
1610*cdf0e10cSrcweir 		}
1611*cdf0e10cSrcweir 	}
1612*cdf0e10cSrcweir 	return bAllowed;
1613*cdf0e10cSrcweir }
1614*cdf0e10cSrcweir /* -----------------21.09.99 14:19-------------------
1615*cdf0e10cSrcweir 
1616*cdf0e10cSrcweir  --------------------------------------------------*/
1617*cdf0e10cSrcweir void SwAuthMarkDlg::InitControls()
1618*cdf0e10cSrcweir {
1619*cdf0e10cSrcweir 	DBG_ASSERT(pSh, "Shell nicht da?");
1620*cdf0e10cSrcweir 	SwField* pField = pSh->GetCurFld();
1621*cdf0e10cSrcweir 	ASSERT(bNewEntry || pField, "Keine aktuelle Markierung");
1622*cdf0e10cSrcweir 	if(bNewEntry)
1623*cdf0e10cSrcweir 	{
1624*cdf0e10cSrcweir 		ChangeSourceHdl(aFromComponentRB.IsChecked() ? &aFromComponentRB : &aFromDocContentRB);
1625*cdf0e10cSrcweir 		aCreateEntryPB.Enable(!aFromComponentRB.IsChecked());
1626*cdf0e10cSrcweir 		if(!aFromComponentRB.IsChecked() && m_sCreatedEntry[0].Len())
1627*cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1628*cdf0e10cSrcweir 				m_sFields[i] = m_sCreatedEntry[i];
1629*cdf0e10cSrcweir 	}
1630*cdf0e10cSrcweir 	if(bNewEntry || !pField || pField->GetTyp()->Which() != RES_AUTHORITY)
1631*cdf0e10cSrcweir 		return;
1632*cdf0e10cSrcweir 
1633*cdf0e10cSrcweir 	const SwAuthEntry* pEntry = ((SwAuthorityFieldType*)pField->GetTyp())->
1634*cdf0e10cSrcweir             GetEntryByHandle(((SwAuthorityField*)pField)->GetHandle());
1635*cdf0e10cSrcweir 
1636*cdf0e10cSrcweir 	DBG_ASSERT(pEntry, "No authority entry found");
1637*cdf0e10cSrcweir 	if(!pEntry)
1638*cdf0e10cSrcweir 		return;
1639*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1640*cdf0e10cSrcweir 		m_sFields[i] = pEntry->GetAuthorField((ToxAuthorityField)i);
1641*cdf0e10cSrcweir 
1642*cdf0e10cSrcweir 	aEntryED.SetText(pEntry->GetAuthorField(AUTH_FIELD_IDENTIFIER));
1643*cdf0e10cSrcweir 	aAuthorFI.SetText(pEntry->GetAuthorField(AUTH_FIELD_AUTHOR));
1644*cdf0e10cSrcweir 	aTitleFI.SetText(pEntry->GetAuthorField(AUTH_FIELD_TITLE));
1645*cdf0e10cSrcweir }
1646*cdf0e10cSrcweir /* -----------------------------05.09.2002 09:44------------------------------
1647*cdf0e10cSrcweir 
1648*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
1649*cdf0e10cSrcweir void    SwAuthMarkDlg::Activate()
1650*cdf0e10cSrcweir {
1651*cdf0e10cSrcweir     aOKBT.Enable(!pSh->HasReadonlySel());
1652*cdf0e10cSrcweir     Window::Activate();
1653*cdf0e10cSrcweir }
1654*cdf0e10cSrcweir /* -----------------16.09.99 14:27-------------------
1655*cdf0e10cSrcweir 
1656*cdf0e10cSrcweir  --------------------------------------------------*/
1657*cdf0e10cSrcweir SwCreateAuthEntryDlg_Impl::SwCreateAuthEntryDlg_Impl(Window* pParent,
1658*cdf0e10cSrcweir 		const String pFields[],
1659*cdf0e10cSrcweir 		SwWrtShell& rSh,
1660*cdf0e10cSrcweir 		sal_Bool bNewEntry,
1661*cdf0e10cSrcweir 		sal_Bool bCreate) :
1662*cdf0e10cSrcweir 	ModalDialog(pParent, SW_RES(DLG_CREATE_AUTH_ENTRY)),
1663*cdf0e10cSrcweir     aEntriesFL(this,    SW_RES(FL_ENTRIES    )),
1664*cdf0e10cSrcweir     pTypeListBox(0),
1665*cdf0e10cSrcweir     pIdentifierBox(0),
1666*cdf0e10cSrcweir     aOKBT(this,         SW_RES(PB_OK         )),
1667*cdf0e10cSrcweir     aCancelBT(this,     SW_RES(PB_CANCEL        )),
1668*cdf0e10cSrcweir     aHelpBT(this,       SW_RES(PB_HELP      )),
1669*cdf0e10cSrcweir     rWrtSh(rSh),
1670*cdf0e10cSrcweir 	m_bNewEntryMode(bNewEntry),
1671*cdf0e10cSrcweir 	m_bNameAllowed(sal_True)
1672*cdf0e10cSrcweir {
1673*cdf0e10cSrcweir 	FreeResource();
1674*cdf0e10cSrcweir     Point aFLPos(aEntriesFL.GetPosPixel());
1675*cdf0e10cSrcweir     Point aTL1(aFLPos);
1676*cdf0e10cSrcweir     Size aFLSz(aEntriesFL.GetSizePixel().Width(), GetSizePixel().Height());
1677*cdf0e10cSrcweir     long nControlSpace = aFLSz.Width() / 4;
1678*cdf0e10cSrcweir 	long nControlWidth = nControlSpace - 2 * aTL1.X();
1679*cdf0e10cSrcweir 	aTL1.X() *= 2;
1680*cdf0e10cSrcweir 	aTL1.Y() *= 5;
1681*cdf0e10cSrcweir 	Point aTR1(aTL1);
1682*cdf0e10cSrcweir 	aTR1.X() += nControlSpace;
1683*cdf0e10cSrcweir 	Point aTL2(aTR1);
1684*cdf0e10cSrcweir 	aTL2.X() += nControlSpace;
1685*cdf0e10cSrcweir 	Point aTR2(aTL2);
1686*cdf0e10cSrcweir 	aTR2.X() += nControlSpace;
1687*cdf0e10cSrcweir     Size aFixedTextSize(aFLSz);
1688*cdf0e10cSrcweir 	Size aTmpSz(8,10);
1689*cdf0e10cSrcweir 	aTmpSz = LogicToPixel(aTmpSz, MAP_APPFONT);
1690*cdf0e10cSrcweir 	aFixedTextSize.Height() = aTmpSz.Width();
1691*cdf0e10cSrcweir 	Size aEditSize(aFixedTextSize);
1692*cdf0e10cSrcweir     aFixedTextSize.Width() = nControlWidth + aFLPos.X();
1693*cdf0e10cSrcweir 	aEditSize.Height() = aTmpSz.Height();
1694*cdf0e10cSrcweir 	aEditSize.Width() = nControlWidth;
1695*cdf0e10cSrcweir 
1696*cdf0e10cSrcweir     sal_uInt16 nOffset = static_cast< sal_uInt16 >(aTmpSz.Width() * 3 / 2);
1697*cdf0e10cSrcweir 	sal_Bool bLeft = sal_True;
1698*cdf0e10cSrcweir     Window* pRefWindow = 0;
1699*cdf0e10cSrcweir     for(sal_uInt16 nIndex = 0; nIndex < AUTH_FIELD_END; nIndex++)
1700*cdf0e10cSrcweir 	{
1701*cdf0e10cSrcweir 		const TextInfo aCurInfo = aTextInfoArr[nIndex];
1702*cdf0e10cSrcweir 
1703*cdf0e10cSrcweir 		pFixedTexts[nIndex] = new FixedText(this);
1704*cdf0e10cSrcweir         if(nIndex)
1705*cdf0e10cSrcweir             pFixedTexts[nIndex]->SetZOrder( pRefWindow, WINDOW_ZORDER_BEHIND );
1706*cdf0e10cSrcweir         else
1707*cdf0e10cSrcweir             pFixedTexts[nIndex]->SetZOrder( 0, WINDOW_ZORDER_FIRST );
1708*cdf0e10cSrcweir 
1709*cdf0e10cSrcweir         pRefWindow = pFixedTexts[nIndex];
1710*cdf0e10cSrcweir 
1711*cdf0e10cSrcweir 		pFixedTexts[nIndex]->SetSizePixel(aFixedTextSize);
1712*cdf0e10cSrcweir 		pFixedTexts[nIndex]->SetPosPixel(bLeft ? aTL1 : aTL2);
1713*cdf0e10cSrcweir 		pFixedTexts[nIndex]->SetText(SW_RES(STR_AUTH_FIELD_START + aCurInfo.nToxField));
1714*cdf0e10cSrcweir 		pFixedTexts[nIndex]->Show();
1715*cdf0e10cSrcweir 		pEdits[nIndex] = 0;
1716*cdf0e10cSrcweir 		if( AUTH_FIELD_AUTHORITY_TYPE == aCurInfo.nToxField )
1717*cdf0e10cSrcweir 		{
1718*cdf0e10cSrcweir 			pTypeListBox = new ListBox(this, WB_DROPDOWN|WB_BORDER);
1719*cdf0e10cSrcweir             pTypeListBox->SetZOrder( pRefWindow, WINDOW_ZORDER_BEHIND );
1720*cdf0e10cSrcweir             pRefWindow = pTypeListBox;
1721*cdf0e10cSrcweir 			for(sal_uInt16 j = 0; j < AUTH_TYPE_END; j++)
1722*cdf0e10cSrcweir 				pTypeListBox->InsertEntry(String(SW_RES(STR_AUTH_TYPE_START + j)));
1723*cdf0e10cSrcweir 			if(pFields[aCurInfo.nToxField].Len())
1724*cdf0e10cSrcweir 			{
1725*cdf0e10cSrcweir                 sal_uInt16 nIndexPos = static_cast< sal_uInt16 >(pFields[aCurInfo.nToxField].ToInt32());
1726*cdf0e10cSrcweir 				pTypeListBox->SelectEntryPos(nIndexPos);
1727*cdf0e10cSrcweir 			}
1728*cdf0e10cSrcweir 			Size aTmp(aEditSize);
1729*cdf0e10cSrcweir 			aTmp.Height() *= 4;
1730*cdf0e10cSrcweir 			pTypeListBox->SetSizePixel(aTmp);
1731*cdf0e10cSrcweir 			pTypeListBox->SetPosPixel(bLeft ? aTR1 : aTR2);
1732*cdf0e10cSrcweir 			pTypeListBox->Show();
1733*cdf0e10cSrcweir 			pTypeListBox->SetSelectHdl(LINK(this, SwCreateAuthEntryDlg_Impl, EnableHdl));
1734*cdf0e10cSrcweir 			pTypeListBox->SetHelpId(aCurInfo.pHelpId);
1735*cdf0e10cSrcweir 
1736*cdf0e10cSrcweir 		}
1737*cdf0e10cSrcweir 		else if(AUTH_FIELD_IDENTIFIER == aCurInfo.nToxField && !m_bNewEntryMode)
1738*cdf0e10cSrcweir 		{
1739*cdf0e10cSrcweir             pIdentifierBox = new ComboBox(this, WB_BORDER|WB_DROPDOWN);
1740*cdf0e10cSrcweir             pIdentifierBox->SetZOrder( pRefWindow, WINDOW_ZORDER_BEHIND );
1741*cdf0e10cSrcweir             pRefWindow = pIdentifierBox;
1742*cdf0e10cSrcweir 
1743*cdf0e10cSrcweir 			pIdentifierBox->SetSelectHdl(LINK(this,
1744*cdf0e10cSrcweir 									SwCreateAuthEntryDlg_Impl, IdentifierHdl));
1745*cdf0e10cSrcweir 
1746*cdf0e10cSrcweir 
1747*cdf0e10cSrcweir 			const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
1748*cdf0e10cSrcweir 										rSh.GetFldType(RES_AUTHORITY, aEmptyStr);
1749*cdf0e10cSrcweir 			if(pFType)
1750*cdf0e10cSrcweir 			{
1751*cdf0e10cSrcweir 				SvStringsDtor aIds;
1752*cdf0e10cSrcweir 				pFType->GetAllEntryIdentifiers(	aIds );
1753*cdf0e10cSrcweir 				for(sal_uInt16 n = 0; n < aIds.Count(); n++)
1754*cdf0e10cSrcweir 					pIdentifierBox->InsertEntry(*aIds.GetObject(n));
1755*cdf0e10cSrcweir 			}
1756*cdf0e10cSrcweir 			pIdentifierBox->SetText(pFields[aCurInfo.nToxField]);
1757*cdf0e10cSrcweir 			Size aTmp(aEditSize);
1758*cdf0e10cSrcweir 			aTmp.Height() *= 4;
1759*cdf0e10cSrcweir 			pIdentifierBox->SetSizePixel(aTmp);
1760*cdf0e10cSrcweir 			pIdentifierBox->SetPosPixel(bLeft ? aTR1 : aTR2);
1761*cdf0e10cSrcweir 			pIdentifierBox->Show();
1762*cdf0e10cSrcweir 			pIdentifierBox->SetHelpId(aCurInfo.pHelpId);
1763*cdf0e10cSrcweir 		}
1764*cdf0e10cSrcweir 		else
1765*cdf0e10cSrcweir 		{
1766*cdf0e10cSrcweir 			pEdits[nIndex] = new Edit(this, WB_BORDER);
1767*cdf0e10cSrcweir             pEdits[nIndex]->SetZOrder( pRefWindow, WINDOW_ZORDER_BEHIND );
1768*cdf0e10cSrcweir             pRefWindow = pEdits[nIndex];
1769*cdf0e10cSrcweir             pEdits[nIndex]->SetSizePixel(aEditSize);
1770*cdf0e10cSrcweir 			pEdits[nIndex]->SetPosPixel(bLeft ? aTR1 : aTR2);
1771*cdf0e10cSrcweir 			pEdits[nIndex]->SetText(pFields[aCurInfo.nToxField]);
1772*cdf0e10cSrcweir 			pEdits[nIndex]->Show();
1773*cdf0e10cSrcweir 			pEdits[nIndex]->SetHelpId(aCurInfo.pHelpId);
1774*cdf0e10cSrcweir 			if(AUTH_FIELD_IDENTIFIER == aCurInfo.nToxField)
1775*cdf0e10cSrcweir 			{
1776*cdf0e10cSrcweir 				pEdits[nIndex]->SetModifyHdl(LINK(this, SwCreateAuthEntryDlg_Impl, ShortNameHdl));
1777*cdf0e10cSrcweir 				m_bNameAllowed = pFields[nIndex].Len() > 0;
1778*cdf0e10cSrcweir 				if(!bCreate)
1779*cdf0e10cSrcweir 				{
1780*cdf0e10cSrcweir 					pFixedTexts[nIndex]->Enable(sal_False);
1781*cdf0e10cSrcweir 					pEdits[nIndex]->Enable(sal_False);
1782*cdf0e10cSrcweir 				}
1783*cdf0e10cSrcweir 			}
1784*cdf0e10cSrcweir 		}
1785*cdf0e10cSrcweir 		if(bLeft)
1786*cdf0e10cSrcweir 		{
1787*cdf0e10cSrcweir 			aTL1.Y() += nOffset;
1788*cdf0e10cSrcweir 			aTR1.Y() += nOffset;
1789*cdf0e10cSrcweir 		}
1790*cdf0e10cSrcweir 		else
1791*cdf0e10cSrcweir 		{
1792*cdf0e10cSrcweir 			aTL2.Y() += nOffset;
1793*cdf0e10cSrcweir 			aTR2.Y() += nOffset;
1794*cdf0e10cSrcweir 		}
1795*cdf0e10cSrcweir 		bLeft = !bLeft;
1796*cdf0e10cSrcweir 	}
1797*cdf0e10cSrcweir 	EnableHdl(pTypeListBox);
1798*cdf0e10cSrcweir 
1799*cdf0e10cSrcweir     long nHeightDiff = - aFLSz.Height();
1800*cdf0e10cSrcweir     aFLSz.Height() = aTL1.Y();
1801*cdf0e10cSrcweir     nHeightDiff += aFLSz.Height();
1802*cdf0e10cSrcweir //    aEntriesFL.SetSizePixel(aFLSz);
1803*cdf0e10cSrcweir 	Size aDlgSize(GetSizePixel());
1804*cdf0e10cSrcweir 	aDlgSize.Height() += nHeightDiff;
1805*cdf0e10cSrcweir     SetSizePixel(aDlgSize);
1806*cdf0e10cSrcweir 
1807*cdf0e10cSrcweir }
1808*cdf0e10cSrcweir /* -----------------16.09.99 14:47-------------------
1809*cdf0e10cSrcweir 
1810*cdf0e10cSrcweir  --------------------------------------------------*/
1811*cdf0e10cSrcweir SwCreateAuthEntryDlg_Impl::~SwCreateAuthEntryDlg_Impl()
1812*cdf0e10cSrcweir {
1813*cdf0e10cSrcweir 	for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1814*cdf0e10cSrcweir 	{
1815*cdf0e10cSrcweir 		delete pFixedTexts[i];
1816*cdf0e10cSrcweir 		delete pEdits[i];
1817*cdf0e10cSrcweir 	}
1818*cdf0e10cSrcweir 	delete pTypeListBox;
1819*cdf0e10cSrcweir 	delete pIdentifierBox;
1820*cdf0e10cSrcweir }
1821*cdf0e10cSrcweir /* -----------------16.09.99 14:27-------------------
1822*cdf0e10cSrcweir 
1823*cdf0e10cSrcweir  --------------------------------------------------*/
1824*cdf0e10cSrcweir String	SwCreateAuthEntryDlg_Impl::GetEntryText(ToxAuthorityField eField) const
1825*cdf0e10cSrcweir {
1826*cdf0e10cSrcweir 	String sRet;
1827*cdf0e10cSrcweir 	if( AUTH_FIELD_AUTHORITY_TYPE == eField )
1828*cdf0e10cSrcweir 	{
1829*cdf0e10cSrcweir 		DBG_ASSERT(pTypeListBox, "No ListBox");
1830*cdf0e10cSrcweir 		sRet = String::CreateFromInt32(pTypeListBox->GetSelectEntryPos());
1831*cdf0e10cSrcweir 	}
1832*cdf0e10cSrcweir 	else if( AUTH_FIELD_IDENTIFIER == eField && !m_bNewEntryMode)
1833*cdf0e10cSrcweir 	{
1834*cdf0e10cSrcweir 		DBG_ASSERT(pIdentifierBox, "No ComboBox");
1835*cdf0e10cSrcweir 		sRet = pIdentifierBox->GetText();
1836*cdf0e10cSrcweir 	}
1837*cdf0e10cSrcweir 	else
1838*cdf0e10cSrcweir 	{
1839*cdf0e10cSrcweir 		for(sal_uInt16 nIndex = 0; nIndex < AUTH_FIELD_END; nIndex++)
1840*cdf0e10cSrcweir 		{
1841*cdf0e10cSrcweir 			const TextInfo aCurInfo = aTextInfoArr[nIndex];
1842*cdf0e10cSrcweir 			if(aCurInfo.nToxField == eField)
1843*cdf0e10cSrcweir 			{
1844*cdf0e10cSrcweir 				sRet = pEdits[nIndex]->GetText();
1845*cdf0e10cSrcweir 				break;
1846*cdf0e10cSrcweir 			}
1847*cdf0e10cSrcweir 		}
1848*cdf0e10cSrcweir 	}
1849*cdf0e10cSrcweir 	return sRet;
1850*cdf0e10cSrcweir }
1851*cdf0e10cSrcweir /* -----------------21.09.99 13:54-------------------
1852*cdf0e10cSrcweir 
1853*cdf0e10cSrcweir  --------------------------------------------------*/
1854*cdf0e10cSrcweir IMPL_LINK(SwCreateAuthEntryDlg_Impl, IdentifierHdl, ComboBox*, pBox)
1855*cdf0e10cSrcweir {
1856*cdf0e10cSrcweir 	const SwAuthorityFieldType* pFType = (const SwAuthorityFieldType*)
1857*cdf0e10cSrcweir 								rWrtSh.GetFldType(RES_AUTHORITY, aEmptyStr);
1858*cdf0e10cSrcweir 	if(pFType)
1859*cdf0e10cSrcweir 	{
1860*cdf0e10cSrcweir 		const SwAuthEntry* pEntry = pFType->GetEntryByIdentifier(
1861*cdf0e10cSrcweir 														pBox->GetText());
1862*cdf0e10cSrcweir 		if(pEntry)
1863*cdf0e10cSrcweir 		{
1864*cdf0e10cSrcweir 			for(sal_uInt16 i = 0; i < AUTH_FIELD_END; i++)
1865*cdf0e10cSrcweir 			{
1866*cdf0e10cSrcweir 				if(AUTH_FIELD_IDENTIFIER == i)
1867*cdf0e10cSrcweir 					continue;
1868*cdf0e10cSrcweir 				if(AUTH_FIELD_AUTHORITY_TYPE == i)
1869*cdf0e10cSrcweir 					pTypeListBox->SelectEntry(
1870*cdf0e10cSrcweir 								pEntry->GetAuthorField((ToxAuthorityField)i));
1871*cdf0e10cSrcweir 				else
1872*cdf0e10cSrcweir 					pEdits[i]->SetText(
1873*cdf0e10cSrcweir 								pEntry->GetAuthorField((ToxAuthorityField)i));
1874*cdf0e10cSrcweir 			}
1875*cdf0e10cSrcweir 		}
1876*cdf0e10cSrcweir 	}
1877*cdf0e10cSrcweir 	return 0;
1878*cdf0e10cSrcweir }
1879*cdf0e10cSrcweir /* -----------------------------20.12.99 15:07--------------------------------
1880*cdf0e10cSrcweir 
1881*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
1882*cdf0e10cSrcweir 
1883*cdf0e10cSrcweir IMPL_LINK(SwCreateAuthEntryDlg_Impl, ShortNameHdl, Edit*, pEdit)
1884*cdf0e10cSrcweir {
1885*cdf0e10cSrcweir 	if(aShortNameCheckLink.IsSet())
1886*cdf0e10cSrcweir 	{
1887*cdf0e10cSrcweir 		sal_Bool bEnable = 0 != aShortNameCheckLink.Call(pEdit);
1888*cdf0e10cSrcweir 		m_bNameAllowed |= bEnable;
1889*cdf0e10cSrcweir 		aOKBT.Enable(pTypeListBox->GetSelectEntryCount() && bEnable);
1890*cdf0e10cSrcweir 	}
1891*cdf0e10cSrcweir 	return 0;
1892*cdf0e10cSrcweir }
1893*cdf0e10cSrcweir /* -----------------------------20.12.99 15:54--------------------------------
1894*cdf0e10cSrcweir 
1895*cdf0e10cSrcweir  ---------------------------------------------------------------------------*/
1896*cdf0e10cSrcweir IMPL_LINK(SwCreateAuthEntryDlg_Impl, EnableHdl, ListBox*, pBox)
1897*cdf0e10cSrcweir {
1898*cdf0e10cSrcweir 	aOKBT.Enable(m_bNameAllowed && pBox->GetSelectEntryCount());
1899*cdf0e10cSrcweir 	return 0;
1900*cdf0e10cSrcweir };
1901*cdf0e10cSrcweir /* -----------------06.10.99 10:00-------------------
1902*cdf0e10cSrcweir 
1903*cdf0e10cSrcweir  --------------------------------------------------*/
1904*cdf0e10cSrcweir SwAuthMarkFloatDlg::SwAuthMarkFloatDlg(SfxBindings* _pBindings,
1905*cdf0e10cSrcweir 				   				SfxChildWindow* pChild,
1906*cdf0e10cSrcweir 				   				Window *pParent,
1907*cdf0e10cSrcweir 								SfxChildWinInfo* pInfo,
1908*cdf0e10cSrcweir 				   				sal_Bool bNew) :
1909*cdf0e10cSrcweir     SfxModelessDialog(_pBindings, pChild, pParent, SW_RES(DLG_INSAUTHMARK)),
1910*cdf0e10cSrcweir     aDlg(this, SW_RES(WIN_DLG), bNew)
1911*cdf0e10cSrcweir {
1912*cdf0e10cSrcweir 	FreeResource();
1913*cdf0e10cSrcweir 	Initialize(pInfo);
1914*cdf0e10cSrcweir 	SwWrtShell* pWrtShell = ::GetActiveWrtShell();
1915*cdf0e10cSrcweir 	DBG_ASSERT(pWrtShell, "No shell?");
1916*cdf0e10cSrcweir 	aDlg.ReInitDlg(*pWrtShell);
1917*cdf0e10cSrcweir }
1918*cdf0e10cSrcweir /* -----------------06.10.99 10:27-------------------
1919*cdf0e10cSrcweir 
1920*cdf0e10cSrcweir  --------------------------------------------------*/
1921*cdf0e10cSrcweir void	SwAuthMarkFloatDlg::Activate()
1922*cdf0e10cSrcweir {
1923*cdf0e10cSrcweir 	SfxModelessDialog::Activate();
1924*cdf0e10cSrcweir 	aDlg.Activate();
1925*cdf0e10cSrcweir }
1926*cdf0e10cSrcweir 
1927*cdf0e10cSrcweir void SwAuthMarkFloatDlg::ReInitDlg(SwWrtShell& rWrtShell)
1928*cdf0e10cSrcweir {
1929*cdf0e10cSrcweir 	aDlg.ReInitDlg( rWrtShell );
1930*cdf0e10cSrcweir }
1931*cdf0e10cSrcweir 
1932*cdf0e10cSrcweir /* -----------------06.10.99 10:35-------------------
1933*cdf0e10cSrcweir 
1934*cdf0e10cSrcweir  --------------------------------------------------*/
1935*cdf0e10cSrcweir SwAuthMarkModalDlg::SwAuthMarkModalDlg(Window *pParent, SwWrtShell& rSh) :
1936*cdf0e10cSrcweir 	SvxStandardDialog(pParent, SW_RES(DLG_EDIT_AUTHMARK)),
1937*cdf0e10cSrcweir 	aDlg(this, SW_RES(WIN_DLG), sal_False)
1938*cdf0e10cSrcweir {
1939*cdf0e10cSrcweir 	FreeResource();
1940*cdf0e10cSrcweir 	aDlg.ReInitDlg(rSh);
1941*cdf0e10cSrcweir }
1942*cdf0e10cSrcweir /* -----------------06.10.99 10:46-------------------
1943*cdf0e10cSrcweir 
1944*cdf0e10cSrcweir  --------------------------------------------------*/
1945*cdf0e10cSrcweir void	SwAuthMarkModalDlg::Apply()
1946*cdf0e10cSrcweir {
1947*cdf0e10cSrcweir 	aDlg.InsertHdl(0);
1948*cdf0e10cSrcweir }
1949*cdf0e10cSrcweir 
1950