1*efeef26fSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*efeef26fSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*efeef26fSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*efeef26fSAndrew Rist  * distributed with this work for additional information
6*efeef26fSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*efeef26fSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*efeef26fSAndrew Rist  * "License"); you may not use this file except in compliance
9*efeef26fSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*efeef26fSAndrew Rist  *
11*efeef26fSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*efeef26fSAndrew Rist  *
13*efeef26fSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*efeef26fSAndrew Rist  * software distributed under the License is distributed on an
15*efeef26fSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*efeef26fSAndrew Rist  * KIND, either express or implied.  See the License for the
17*efeef26fSAndrew Rist  * specific language governing permissions and limitations
18*efeef26fSAndrew Rist  * under the License.
19*efeef26fSAndrew Rist  *
20*efeef26fSAndrew Rist  *************************************************************/
21*efeef26fSAndrew Rist 
22*efeef26fSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sw.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include <SwStyleNameMapper.hxx>
29cdf0e10cSrcweir #define _SVSTDARR_STRINGSDTOR
30cdf0e10cSrcweir #include <svl/svstdarr.hxx>
31cdf0e10cSrcweir #include <tools/resmgr.hxx>
32cdf0e10cSrcweir #include <poolfmt.hxx>
33cdf0e10cSrcweir #ifndef _RDIC_HRC
34cdf0e10cSrcweir #include <rcid.hrc>
35cdf0e10cSrcweir #endif
36cdf0e10cSrcweir #include <tools/debug.hxx>
37cdf0e10cSrcweir extern ResMgr* pSwResMgr;
38cdf0e10cSrcweir // Initialise UI names to 0
39cdf0e10cSrcweir SvStringsDtor	*SwStyleNameMapper::pTextUINameArray = 0,
40cdf0e10cSrcweir 				*SwStyleNameMapper::pListsUINameArray = 0,
41cdf0e10cSrcweir 				*SwStyleNameMapper::pExtraUINameArray = 0,
42cdf0e10cSrcweir 				*SwStyleNameMapper::pRegisterUINameArray = 0,
43cdf0e10cSrcweir 				*SwStyleNameMapper::pDocUINameArray = 0,
44cdf0e10cSrcweir 				*SwStyleNameMapper::pHTMLUINameArray = 0,
45cdf0e10cSrcweir 				*SwStyleNameMapper::pFrmFmtUINameArray = 0,
46cdf0e10cSrcweir 				*SwStyleNameMapper::pChrFmtUINameArray = 0,
47cdf0e10cSrcweir 				*SwStyleNameMapper::pHTMLChrFmtUINameArray = 0,
48cdf0e10cSrcweir 				*SwStyleNameMapper::pPageDescUINameArray = 0,
49cdf0e10cSrcweir 				*SwStyleNameMapper::pNumRuleUINameArray = 0,
50cdf0e10cSrcweir 
51cdf0e10cSrcweir // Initialise programmatic names to 0
52cdf0e10cSrcweir 				*SwStyleNameMapper::pTextProgNameArray = 0,
53cdf0e10cSrcweir 				*SwStyleNameMapper::pListsProgNameArray = 0,
54cdf0e10cSrcweir 				*SwStyleNameMapper::pExtraProgNameArray = 0,
55cdf0e10cSrcweir 				*SwStyleNameMapper::pRegisterProgNameArray = 0,
56cdf0e10cSrcweir 				*SwStyleNameMapper::pDocProgNameArray = 0,
57cdf0e10cSrcweir 				*SwStyleNameMapper::pHTMLProgNameArray = 0,
58cdf0e10cSrcweir 				*SwStyleNameMapper::pFrmFmtProgNameArray = 0,
59cdf0e10cSrcweir 				*SwStyleNameMapper::pChrFmtProgNameArray = 0,
60cdf0e10cSrcweir 				*SwStyleNameMapper::pHTMLChrFmtProgNameArray = 0,
61cdf0e10cSrcweir 				*SwStyleNameMapper::pPageDescProgNameArray = 0,
62cdf0e10cSrcweir 				*SwStyleNameMapper::pNumRuleProgNameArray = 0;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir NameToIdHash	*SwStyleNameMapper::pParaUIMap = 0,
65cdf0e10cSrcweir 				*SwStyleNameMapper::pCharUIMap = 0,
66cdf0e10cSrcweir 				*SwStyleNameMapper::pPageUIMap = 0,
67cdf0e10cSrcweir 				*SwStyleNameMapper::pFrameUIMap = 0,
68cdf0e10cSrcweir 				*SwStyleNameMapper::pNumRuleUIMap = 0,
69cdf0e10cSrcweir 
70cdf0e10cSrcweir 				*SwStyleNameMapper::pParaProgMap = 0,
71cdf0e10cSrcweir 				*SwStyleNameMapper::pCharProgMap = 0,
72cdf0e10cSrcweir 				*SwStyleNameMapper::pPageProgMap = 0,
73cdf0e10cSrcweir 				*SwStyleNameMapper::pFrameProgMap = 0,
74cdf0e10cSrcweir 				*SwStyleNameMapper::pNumRuleProgMap = 0;
75cdf0e10cSrcweir 
76cdf0e10cSrcweir // SwTableEntry so we can pass the length to the String CTOR
77cdf0e10cSrcweir struct SwTableEntry
78cdf0e10cSrcweir {
79cdf0e10cSrcweir 	sal_uInt8 nLength;
80cdf0e10cSrcweir 	const sal_Char *pChar;
81cdf0e10cSrcweir };
82cdf0e10cSrcweir 
83cdf0e10cSrcweir #define ENTRY( s ) { sizeof (s)-1, s }
84cdf0e10cSrcweir 
85cdf0e10cSrcweir // Hard coded Programmatic Name tables
86cdf0e10cSrcweir const struct SwTableEntry TextProgNameTable [] =
87cdf0e10cSrcweir {
88cdf0e10cSrcweir 	ENTRY( "Standard" ), // RES_POOLCOLL_STANDARD
89cdf0e10cSrcweir 	ENTRY( "Text body" ),
90cdf0e10cSrcweir 	ENTRY( "First line indent" ),
91cdf0e10cSrcweir 	ENTRY( "Hanging indent" ),
92cdf0e10cSrcweir 	ENTRY( "Text body indent" ),
93cdf0e10cSrcweir 	ENTRY( "Salutation" ),
94cdf0e10cSrcweir 	ENTRY( "Signature" ),
95cdf0e10cSrcweir 	ENTRY( "List Indent" ), // RES_POOLCOLL_CONFRONTATION
96cdf0e10cSrcweir 	ENTRY( "Marginalia" ),
97cdf0e10cSrcweir 	ENTRY( "Heading" ),
98cdf0e10cSrcweir 	ENTRY( "Heading 1" ),
99cdf0e10cSrcweir 	ENTRY( "Heading 2" ),
100cdf0e10cSrcweir 	ENTRY( "Heading 3" ),
101cdf0e10cSrcweir 	ENTRY( "Heading 4" ),
102cdf0e10cSrcweir 	ENTRY( "Heading 5" ),
103cdf0e10cSrcweir 	ENTRY( "Heading 6" ),
104cdf0e10cSrcweir 	ENTRY( "Heading 7" ),
105cdf0e10cSrcweir 	ENTRY( "Heading 8" ),
106cdf0e10cSrcweir 	ENTRY( "Heading 9" ),
107cdf0e10cSrcweir 	ENTRY( "Heading 10" ), // RES_POOLCOLL_TEXT_END
108cdf0e10cSrcweir 	{ 0, NULL }
109cdf0e10cSrcweir };
110cdf0e10cSrcweir 
111cdf0e10cSrcweir const struct SwTableEntry ListsProgNameTable [] =
112cdf0e10cSrcweir {
113cdf0e10cSrcweir 	ENTRY( "List" ), // STR_POCO_PRGM_NUMBUL_BASE
114cdf0e10cSrcweir 	ENTRY( "Numbering 1 Start" ), // STR_POCO_PRGM_NUM_LEVEL1S
115cdf0e10cSrcweir 	ENTRY( "Numbering 1" ),
116cdf0e10cSrcweir 	ENTRY( "Numbering 1 End" ),
117cdf0e10cSrcweir 	ENTRY( "Numbering 1 Cont." ),
118cdf0e10cSrcweir 	ENTRY( "Numbering 2 Start" ),
119cdf0e10cSrcweir 	ENTRY( "Numbering 2" ),
120cdf0e10cSrcweir 	ENTRY( "Numbering 2 End" ),
121cdf0e10cSrcweir 	ENTRY( "Numbering 2 Cont." ),
122cdf0e10cSrcweir 	ENTRY( "Numbering 3 Start" ),
123cdf0e10cSrcweir 	ENTRY( "Numbering 3" ),
124cdf0e10cSrcweir 	ENTRY( "Numbering 3 End" ),
125cdf0e10cSrcweir 	ENTRY( "Numbering 3 Cont." ),
126cdf0e10cSrcweir 	ENTRY( "Numbering 4 Start" ),
127cdf0e10cSrcweir 	ENTRY( "Numbering 4" ),
128cdf0e10cSrcweir 	ENTRY( "Numbering 4 End" ),
129cdf0e10cSrcweir 	ENTRY( "Numbering 4 Cont." ),
130cdf0e10cSrcweir 	ENTRY( "Numbering 5 Start" ),
131cdf0e10cSrcweir 	ENTRY( "Numbering 5" ),
132cdf0e10cSrcweir 	ENTRY( "Numbering 5 End" ),
133cdf0e10cSrcweir 	ENTRY( "Numbering 5 Cont." ),
134cdf0e10cSrcweir 	ENTRY( "List 1 Start" ),
135cdf0e10cSrcweir 	ENTRY( "List 1" ),
136cdf0e10cSrcweir 	ENTRY( "List 1 End" ),
137cdf0e10cSrcweir 	ENTRY( "List 1 Cont." ),
138cdf0e10cSrcweir 	ENTRY( "List 2 Start" ),
139cdf0e10cSrcweir 	ENTRY( "List 2" ),
140cdf0e10cSrcweir 	ENTRY( "List 2 End" ),
141cdf0e10cSrcweir 	ENTRY( "List 2 Cont." ),
142cdf0e10cSrcweir 	ENTRY( "List 3 Start" ),
143cdf0e10cSrcweir 	ENTRY( "List 3" ),
144cdf0e10cSrcweir 	ENTRY( "List 3 End" ),
145cdf0e10cSrcweir 	ENTRY( "List 3 Cont." ),
146cdf0e10cSrcweir 	ENTRY( "List 4 Start" ),
147cdf0e10cSrcweir 	ENTRY( "List 4" ),
148cdf0e10cSrcweir 	ENTRY( "List 4 End" ),
149cdf0e10cSrcweir 	ENTRY( "List 4 Cont." ),
150cdf0e10cSrcweir 	ENTRY( "List 5 Start" ),
151cdf0e10cSrcweir 	ENTRY( "List 5" ),
152cdf0e10cSrcweir 	ENTRY( "List 5 End" ),
153cdf0e10cSrcweir 	ENTRY( "List 5 Cont." ), // STR_POCO_PRGM_BUL_NONUM5
154cdf0e10cSrcweir 	{ 0, NULL }
155cdf0e10cSrcweir };
156cdf0e10cSrcweir 
157cdf0e10cSrcweir const struct SwTableEntry ExtraProgNameTable [] =
158cdf0e10cSrcweir {
159cdf0e10cSrcweir 	ENTRY( "Header" ), // RES_POOLCOLL_EXTRA_BEGIN
160cdf0e10cSrcweir 	ENTRY( "Header left" ),
161cdf0e10cSrcweir 	ENTRY( "Header right" ),
162cdf0e10cSrcweir 	ENTRY( "Footer" ),
163cdf0e10cSrcweir 	ENTRY( "Footer left" ),
164cdf0e10cSrcweir 	ENTRY( "Footer right" ),
165cdf0e10cSrcweir 	ENTRY( "Table Contents" ),
166cdf0e10cSrcweir 	ENTRY( "Table Heading" ),
167cdf0e10cSrcweir 	ENTRY( "Caption" ),
168cdf0e10cSrcweir 	ENTRY( "Illustration" ),
169cdf0e10cSrcweir 	ENTRY( "Table" ),
170cdf0e10cSrcweir 	ENTRY( "Text" ),
171cdf0e10cSrcweir 	ENTRY( "Frame contents" ),
172cdf0e10cSrcweir 	ENTRY( "Footnote" ),
173cdf0e10cSrcweir 	ENTRY( "Addressee" ),
174cdf0e10cSrcweir 	ENTRY( "Sender" ),
175cdf0e10cSrcweir 	ENTRY( "Endnote" ),
176cdf0e10cSrcweir 	ENTRY( "Drawing" ), // RES_POOLCOLL_LABEL_DRAWING
177cdf0e10cSrcweir 	{ 0, NULL }
178cdf0e10cSrcweir };
179cdf0e10cSrcweir 
180cdf0e10cSrcweir const struct SwTableEntry RegisterProgNameTable [] =
181cdf0e10cSrcweir {
182cdf0e10cSrcweir 	ENTRY( "Index" ), // STR_POCO_PRGM_REGISTER_BASE
183cdf0e10cSrcweir 	ENTRY( "Index Heading" ), // STR_POCO_PRGM_TOX_IDXH
184cdf0e10cSrcweir 	ENTRY( "Index 1" ),
185cdf0e10cSrcweir 	ENTRY( "Index 2" ),
186cdf0e10cSrcweir 	ENTRY( "Index 3" ),
187cdf0e10cSrcweir 	ENTRY( "Index Separator" ),
188cdf0e10cSrcweir 	ENTRY( "Contents Heading" ),
189cdf0e10cSrcweir 	ENTRY( "Contents 1" ),
190cdf0e10cSrcweir 	ENTRY( "Contents 2" ),
191cdf0e10cSrcweir 	ENTRY( "Contents 3" ),
192cdf0e10cSrcweir 	ENTRY( "Contents 4" ),
193cdf0e10cSrcweir 	ENTRY( "Contents 5" ),
194cdf0e10cSrcweir 	ENTRY( "User Index Heading" ),
195cdf0e10cSrcweir 	ENTRY( "User Index 1" ),
196cdf0e10cSrcweir 	ENTRY( "User Index 2" ),
197cdf0e10cSrcweir 	ENTRY( "User Index 3" ),
198cdf0e10cSrcweir 	ENTRY( "User Index 4" ),
199cdf0e10cSrcweir 	ENTRY( "User Index 5" ),
200cdf0e10cSrcweir 	ENTRY( "Contents 6" ),
201cdf0e10cSrcweir 	ENTRY( "Contents 7" ),
202cdf0e10cSrcweir 	ENTRY( "Contents 8" ),
203cdf0e10cSrcweir 	ENTRY( "Contents 9" ),
204cdf0e10cSrcweir 	ENTRY( "Contents 10" ),
205cdf0e10cSrcweir 	ENTRY( "Illustration Index Heading" ),
206cdf0e10cSrcweir 	ENTRY( "Illustration Index 1" ),
207cdf0e10cSrcweir 	ENTRY( "Object index heading" ),
208cdf0e10cSrcweir 	ENTRY( "Object index 1" ),
209cdf0e10cSrcweir 	ENTRY( "Table index heading" ),
210cdf0e10cSrcweir 	ENTRY( "Table index 1" ),
211cdf0e10cSrcweir 	ENTRY( "Bibliography Heading" ),
212cdf0e10cSrcweir 	ENTRY( "Bibliography 1" ),
213cdf0e10cSrcweir 	ENTRY( "User Index 6" ),
214cdf0e10cSrcweir 	ENTRY( "User Index 7" ),
215cdf0e10cSrcweir 	ENTRY( "User Index 8" ),
216cdf0e10cSrcweir 	ENTRY( "User Index 9" ),
217cdf0e10cSrcweir 	ENTRY( "User Index 10" ), // STR_POCO_PRGM_TOX_USER10
218cdf0e10cSrcweir 	{ 0, NULL }
219cdf0e10cSrcweir };
220cdf0e10cSrcweir 
221cdf0e10cSrcweir const struct SwTableEntry DocProgNameTable [] =
222cdf0e10cSrcweir {
223cdf0e10cSrcweir 	ENTRY( "Title" ), // STR_POCO_PRGM_DOC_TITEL
224cdf0e10cSrcweir 	ENTRY( "Subtitle" ),
225cdf0e10cSrcweir 	{ 0, NULL }
226cdf0e10cSrcweir };
227cdf0e10cSrcweir 
228cdf0e10cSrcweir const struct SwTableEntry HTMLProgNameTable [] =
229cdf0e10cSrcweir {
230cdf0e10cSrcweir 	ENTRY( "Quotations" ),
231cdf0e10cSrcweir 	ENTRY( "Preformatted Text" ),
232cdf0e10cSrcweir 	ENTRY( "Horizontal Line" ),
233cdf0e10cSrcweir 	ENTRY( "List Contents" ),
234cdf0e10cSrcweir 	ENTRY( "List Heading" ), // STR_POCO_PRGM_HTML_DT
235cdf0e10cSrcweir 	{ 0, NULL }
236cdf0e10cSrcweir };
237cdf0e10cSrcweir 
238cdf0e10cSrcweir const struct SwTableEntry FrmFmtProgNameTable [] =
239cdf0e10cSrcweir {
240cdf0e10cSrcweir 	ENTRY( "Frame" ), // RES_POOLFRM_FRAME
241cdf0e10cSrcweir 	ENTRY( "Graphics" ),
242cdf0e10cSrcweir 	ENTRY( "OLE" ),
243cdf0e10cSrcweir 	ENTRY( "Formula" ),
244cdf0e10cSrcweir 	ENTRY( "Marginalia" ),
245cdf0e10cSrcweir 	ENTRY( "Watermark" ),
246cdf0e10cSrcweir 	ENTRY( "Labels" ), // RES_POOLFRM_LABEL
247cdf0e10cSrcweir 	{ 0, NULL }
248cdf0e10cSrcweir };
249cdf0e10cSrcweir 
250cdf0e10cSrcweir const struct SwTableEntry ChrFmtProgNameTable [] =
251cdf0e10cSrcweir {
252cdf0e10cSrcweir 	ENTRY( "Footnote Symbol" ), // RES_POOLCHR_FOOTNOTE
253cdf0e10cSrcweir 	ENTRY( "Page Number" ),
254cdf0e10cSrcweir 	ENTRY( "Caption characters" ),
255cdf0e10cSrcweir 	ENTRY( "Drop Caps" ),
256cdf0e10cSrcweir 	ENTRY( "Numbering Symbols" ),
257cdf0e10cSrcweir 	ENTRY( "Bullet Symbols" ),
258cdf0e10cSrcweir 	ENTRY( "Internet link" ),
259cdf0e10cSrcweir 	ENTRY( "Visited Internet Link" ),
260cdf0e10cSrcweir 	ENTRY( "Placeholder" ),
261cdf0e10cSrcweir 	ENTRY( "Index Link" ),
262cdf0e10cSrcweir 	ENTRY( "Endnote Symbol" ),
263cdf0e10cSrcweir 	ENTRY( "Line numbering" ),
264cdf0e10cSrcweir 	ENTRY( "Main index entry" ),
265cdf0e10cSrcweir 	ENTRY( "Footnote anchor" ),
266cdf0e10cSrcweir 	ENTRY( "Endnote anchor" ),
267cdf0e10cSrcweir 	ENTRY( "Rubies" ), // RES_POOLCHR_RUBYTEXT
268cdf0e10cSrcweir     ENTRY( "Vertical Numbering Symbols" ), // RES_POOLCHR_VERT_NUMBER
269cdf0e10cSrcweir     { 0, NULL }
270cdf0e10cSrcweir };
271cdf0e10cSrcweir 
272cdf0e10cSrcweir const struct SwTableEntry HTMLChrFmtProgNameTable [] =
273cdf0e10cSrcweir {
274cdf0e10cSrcweir 	ENTRY( "Emphasis" ), // RES_POOLCHR_HTML_EMPHASIS
275cdf0e10cSrcweir 	ENTRY( "Citation" ),
276cdf0e10cSrcweir 	ENTRY( "Strong Emphasis" ),
277cdf0e10cSrcweir 	ENTRY( "Source Text" ),
278cdf0e10cSrcweir 	ENTRY( "Example" ),
279cdf0e10cSrcweir 	ENTRY( "User Entry" ),
280cdf0e10cSrcweir 	ENTRY( "Variable" ),
281cdf0e10cSrcweir 	ENTRY( "Definition" ),
282cdf0e10cSrcweir 	ENTRY( "Teletype" ), // RES_POOLCHR_HTML_TELETYPE
283cdf0e10cSrcweir 	{ 0, NULL }
284cdf0e10cSrcweir };
285cdf0e10cSrcweir 
286cdf0e10cSrcweir const struct SwTableEntry PageDescProgNameTable [] =
287cdf0e10cSrcweir {
288cdf0e10cSrcweir 	ENTRY( "Standard" ), // STR_POOLPAGE_PRGM_STANDARD
289cdf0e10cSrcweir 	ENTRY( "First Page" ),
290cdf0e10cSrcweir 	ENTRY( "Left Page" ),
291cdf0e10cSrcweir 	ENTRY( "Right Page" ),
292cdf0e10cSrcweir 	ENTRY( "Envelope" ),
293cdf0e10cSrcweir 	ENTRY( "Index" ),
294cdf0e10cSrcweir 	ENTRY( "HTML" ),
295cdf0e10cSrcweir 	ENTRY( "Footnote" ),
296cdf0e10cSrcweir 	ENTRY( "Endnote" ), // STR_POOLPAGE_PRGM_ENDNOTE
297cdf0e10cSrcweir     ENTRY( "Landscape" ),
298cdf0e10cSrcweir     { 0, NULL }
299cdf0e10cSrcweir };
300cdf0e10cSrcweir 
301cdf0e10cSrcweir const struct SwTableEntry NumRuleProgNameTable [] =
302cdf0e10cSrcweir {
303cdf0e10cSrcweir 	ENTRY( "Numbering 1" ), // STR_POOLNUMRULE_PRGM_NUM1
304cdf0e10cSrcweir 	ENTRY( "Numbering 2" ),
305cdf0e10cSrcweir 	ENTRY( "Numbering 3" ),
306cdf0e10cSrcweir 	ENTRY( "Numbering 4" ),
307cdf0e10cSrcweir 	ENTRY( "Numbering 5" ),
308cdf0e10cSrcweir 	ENTRY( "List 1" ),
309cdf0e10cSrcweir 	ENTRY( "List 2" ),
310cdf0e10cSrcweir 	ENTRY( "List 3" ),
311cdf0e10cSrcweir 	ENTRY( "List 4" ),
312cdf0e10cSrcweir 	ENTRY( "List 5" ), // STR_POOLNUMRULE_PRGM_BUL5
313cdf0e10cSrcweir 	{ 0, NULL }
314cdf0e10cSrcweir };
315cdf0e10cSrcweir #undef ENTRY
316cdf0e10cSrcweir 
SuffixIsUser(const String & rString)317cdf0e10cSrcweir sal_Bool SwStyleNameMapper::SuffixIsUser ( const String & rString )
318cdf0e10cSrcweir {
319cdf0e10cSrcweir 	const sal_Unicode *pChar = rString.GetBuffer();
320cdf0e10cSrcweir 	sal_Int32 nLen = rString.Len();
321cdf0e10cSrcweir     sal_Bool bRet = sal_False;
322cdf0e10cSrcweir 	if( nLen > 8 &&
323cdf0e10cSrcweir         pChar[nLen-7] == ' ' &&
324cdf0e10cSrcweir         pChar[nLen-6] == '(' &&
325cdf0e10cSrcweir         pChar[nLen-5] == 'u' &&
326cdf0e10cSrcweir         pChar[nLen-4] == 's' &&
327cdf0e10cSrcweir         pChar[nLen-3] == 'e' &&
328cdf0e10cSrcweir         pChar[nLen-2] == 'r' &&
329cdf0e10cSrcweir         pChar[nLen-1] == ')' )
330cdf0e10cSrcweir         bRet = sal_True;
331cdf0e10cSrcweir     return bRet;
332cdf0e10cSrcweir }
CheckSuffixAndDelete(String & rString)333cdf0e10cSrcweir void SwStyleNameMapper::CheckSuffixAndDelete ( String & rString )
334cdf0e10cSrcweir {
335cdf0e10cSrcweir 	const sal_Unicode *pChar = rString.GetBuffer();
336cdf0e10cSrcweir 	xub_StrLen nLen = rString.Len();
337cdf0e10cSrcweir 	if (nLen > 8 &&
338cdf0e10cSrcweir 		pChar[nLen-7] == ' ' &&
339cdf0e10cSrcweir 		pChar[nLen-6] == '(' &&
340cdf0e10cSrcweir 		pChar[nLen-5] == 'u' &&
341cdf0e10cSrcweir 		pChar[nLen-4] == 's' &&
342cdf0e10cSrcweir 		pChar[nLen-3] == 'e' &&
343cdf0e10cSrcweir 		pChar[nLen-2] == 'r' &&
344cdf0e10cSrcweir 		pChar[nLen-1] == ')')
345cdf0e10cSrcweir 	{
346cdf0e10cSrcweir 		rString.Erase ( nLen - 7, 7 );
347cdf0e10cSrcweir 	}
348cdf0e10cSrcweir }
getHashTable(SwGetPoolIdFromName eFlags,sal_Bool bProgName)349cdf0e10cSrcweir const NameToIdHash & SwStyleNameMapper::getHashTable ( SwGetPoolIdFromName eFlags, sal_Bool bProgName )
350cdf0e10cSrcweir {
351cdf0e10cSrcweir     NameToIdHash *pHash = 0;
352cdf0e10cSrcweir 	const SvStringsDtor *pStrings;
353cdf0e10cSrcweir 
354cdf0e10cSrcweir 	switch ( eFlags )
355cdf0e10cSrcweir 	{
356cdf0e10cSrcweir 		case nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL:
357cdf0e10cSrcweir 		{
358cdf0e10cSrcweir 			sal_uInt16 nIndex;
359cdf0e10cSrcweir 			sal_uInt16 nId;
360cdf0e10cSrcweir 
361cdf0e10cSrcweir 			pHash = bProgName ? pParaProgMap : pParaUIMap;
362cdf0e10cSrcweir 			if ( !pHash )
363cdf0e10cSrcweir 			{
364cdf0e10cSrcweir 				pHash = new NameToIdHash ( RES_POOLCOLL_TEXT_END - RES_POOLCOLL_TEXT_BEGIN +
365cdf0e10cSrcweir 										   RES_POOLCOLL_LISTS_END - RES_POOLCOLL_LISTS_BEGIN +
366cdf0e10cSrcweir 										   RES_POOLCOLL_EXTRA_END - RES_POOLCOLL_EXTRA_BEGIN +
367cdf0e10cSrcweir 										   RES_POOLCOLL_REGISTER_END - RES_POOLCOLL_REGISTER_BEGIN +
368cdf0e10cSrcweir 										   RES_POOLCOLL_DOC_END - RES_POOLCOLL_DOC_BEGIN +
369cdf0e10cSrcweir 										   RES_POOLCOLL_HTML_END - RES_POOLCOLL_HTML_BEGIN );
370cdf0e10cSrcweir 				pStrings = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
371cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCOLL_TEXT_BEGIN ; nId < RES_POOLCOLL_TEXT_END ; nId++,nIndex++ )
372cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
373cdf0e10cSrcweir 				pStrings = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
374cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCOLL_LISTS_BEGIN ; nId < RES_POOLCOLL_LISTS_END ; nId++,nIndex++ )
375cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
376cdf0e10cSrcweir 				pStrings = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
377cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCOLL_EXTRA_BEGIN ; nId < RES_POOLCOLL_EXTRA_END ; nId++,nIndex++ )
378cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
379cdf0e10cSrcweir 				pStrings = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
380cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCOLL_REGISTER_BEGIN ; nId < RES_POOLCOLL_REGISTER_END ; nId++,nIndex++ )
381cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
382cdf0e10cSrcweir 				pStrings = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
383cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCOLL_DOC_BEGIN ; nId < RES_POOLCOLL_DOC_END ; nId++,nIndex++ )
384cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
385cdf0e10cSrcweir 				pStrings = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
386cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCOLL_HTML_BEGIN ; nId < RES_POOLCOLL_HTML_END ; nId++,nIndex++ )
387cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
388cdf0e10cSrcweir 
389cdf0e10cSrcweir 				if ( bProgName )
390cdf0e10cSrcweir 					pParaProgMap = pHash;
391cdf0e10cSrcweir 				else
392cdf0e10cSrcweir 					pParaUIMap = pHash;
393cdf0e10cSrcweir 			}
394cdf0e10cSrcweir 		}
395cdf0e10cSrcweir 		break;
396cdf0e10cSrcweir 		case nsSwGetPoolIdFromName::GET_POOLID_CHRFMT:
397cdf0e10cSrcweir 		{
398cdf0e10cSrcweir 			pHash = bProgName ? pCharProgMap : pCharUIMap;
399cdf0e10cSrcweir 			if ( !pHash )
400cdf0e10cSrcweir 			{
401cdf0e10cSrcweir 				sal_uInt16 nIndex;
402cdf0e10cSrcweir 				sal_uInt16 nId;
403cdf0e10cSrcweir 
404cdf0e10cSrcweir 				pHash = new NameToIdHash ( RES_POOLCHR_NORMAL_END - RES_POOLCHR_NORMAL_BEGIN +
405cdf0e10cSrcweir 										   RES_POOLCHR_HTML_END - RES_POOLCHR_HTML_BEGIN );
406cdf0e10cSrcweir 				pStrings = bProgName ? &GetChrFmtProgNameArray() : &GetChrFmtUINameArray();
407cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCHR_NORMAL_BEGIN ; nId < RES_POOLCHR_NORMAL_END ; nId++,nIndex++ )
408cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
409cdf0e10cSrcweir 				pStrings = bProgName ? &GetHTMLChrFmtProgNameArray() : &GetHTMLChrFmtUINameArray();
410cdf0e10cSrcweir 				for ( nIndex = 0, nId = RES_POOLCHR_HTML_BEGIN ; nId < RES_POOLCHR_HTML_END ; nId++,nIndex++ )
411cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
412cdf0e10cSrcweir 				if (bProgName )
413cdf0e10cSrcweir 					pCharProgMap = pHash;
414cdf0e10cSrcweir 				else
415cdf0e10cSrcweir 					pCharUIMap = pHash;
416cdf0e10cSrcweir 			}
417cdf0e10cSrcweir 		}
418cdf0e10cSrcweir 		break;
419cdf0e10cSrcweir 		case nsSwGetPoolIdFromName::GET_POOLID_FRMFMT:
420cdf0e10cSrcweir 		{
421cdf0e10cSrcweir 			pHash = bProgName ? pFrameProgMap : pFrameUIMap;
422cdf0e10cSrcweir 			if ( !pHash )
423cdf0e10cSrcweir 			{
424cdf0e10cSrcweir 				pHash = new NameToIdHash ( RES_POOLFRM_END - RES_POOLFRM_BEGIN );
425cdf0e10cSrcweir 				pStrings = bProgName ? &GetFrmFmtProgNameArray() : &GetFrmFmtUINameArray();
426cdf0e10cSrcweir 				for ( sal_uInt16 nIndex=0,nId = RES_POOLFRM_BEGIN ; nId < RES_POOLFRM_END ; nId++,nIndex++ )
427cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
428cdf0e10cSrcweir 				if ( bProgName )
429cdf0e10cSrcweir 					pFrameProgMap = pHash;
430cdf0e10cSrcweir 				else
431cdf0e10cSrcweir 					pFrameUIMap = pHash;
432cdf0e10cSrcweir 			}
433cdf0e10cSrcweir 		}
434cdf0e10cSrcweir 		break;
435cdf0e10cSrcweir 		case nsSwGetPoolIdFromName::GET_POOLID_PAGEDESC:
436cdf0e10cSrcweir 		{
437cdf0e10cSrcweir 			pHash = bProgName ? pPageProgMap : pPageUIMap;
438cdf0e10cSrcweir 			if ( !pHash )
439cdf0e10cSrcweir 			{
440cdf0e10cSrcweir 				pHash = new NameToIdHash ( RES_POOLPAGE_END - RES_POOLPAGE_BEGIN );
441cdf0e10cSrcweir 				pStrings = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
442cdf0e10cSrcweir 				for ( sal_uInt16 nIndex=0,nId = RES_POOLPAGE_BEGIN ; nId < RES_POOLPAGE_END ; nId++,nIndex++ )
443cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
444cdf0e10cSrcweir 				if ( bProgName )
445cdf0e10cSrcweir 					pPageProgMap = pHash;
446cdf0e10cSrcweir 				else
447cdf0e10cSrcweir 					pPageUIMap = pHash;
448cdf0e10cSrcweir 			}
449cdf0e10cSrcweir 		}
450cdf0e10cSrcweir 		break;
451cdf0e10cSrcweir 		case nsSwGetPoolIdFromName::GET_POOLID_NUMRULE:
452cdf0e10cSrcweir 		{
453cdf0e10cSrcweir 			pHash = bProgName ? pNumRuleProgMap : pNumRuleUIMap;
454cdf0e10cSrcweir 			if ( !pHash )
455cdf0e10cSrcweir 			{
456cdf0e10cSrcweir 				pHash = new NameToIdHash ( RES_POOLNUMRULE_END - RES_POOLNUMRULE_BEGIN );
457cdf0e10cSrcweir 				pStrings = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
458cdf0e10cSrcweir 				for ( sal_uInt16 nIndex=0,nId = RES_POOLNUMRULE_BEGIN ; nId < RES_POOLNUMRULE_END ; nId++,nIndex++ )
459cdf0e10cSrcweir 					(*pHash)[(*pStrings)[nIndex]] = nId;
460cdf0e10cSrcweir 				if ( bProgName )
461cdf0e10cSrcweir 					pNumRuleProgMap = pHash;
462cdf0e10cSrcweir 				else
463cdf0e10cSrcweir 					pNumRuleUIMap = pHash;
464cdf0e10cSrcweir 			}
465cdf0e10cSrcweir 		}
466cdf0e10cSrcweir 		break;
467cdf0e10cSrcweir 	}
468cdf0e10cSrcweir #ifdef _NEED_TO_DEBUG_MAPPING
469cdf0e10cSrcweir 	static sal_Bool bTested = sal_False;
470cdf0e10cSrcweir 	if ( !bTested )
471cdf0e10cSrcweir 	{
472cdf0e10cSrcweir 		bTested = sal_True;
473cdf0e10cSrcweir 		{
474cdf0e10cSrcweir 			for ( sal_uInt16 nIndex = 0, nId = RES_POOLCOLL_TEXT_BEGIN ; nId < RES_POOLCOLL_TEXT_END ; nId++,nIndex++ )
475cdf0e10cSrcweir 			{
476cdf0e10cSrcweir 				String aString, bString;
477cdf0e10cSrcweir 				FillUIName ( nId, aString );
478cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
479cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
480cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
481cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
482cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
483cdf0e10cSrcweir 				if ( nNewId != nId )
484cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
485cdf0e10cSrcweir 			}
486cdf0e10cSrcweir 			for ( nIndex = 0, nId = RES_POOLCOLL_LISTS_BEGIN ; nId < RES_POOLCOLL_LISTS_END ; nId++,nIndex++ )
487cdf0e10cSrcweir 			{
488cdf0e10cSrcweir 				String aString, bString;
489cdf0e10cSrcweir 				FillUIName ( nId, aString );
490cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
491cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
492cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
493cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
494cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
495cdf0e10cSrcweir 				if ( nNewId != nId )
496cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
497cdf0e10cSrcweir 			}
498cdf0e10cSrcweir 			for ( nIndex = 0, nId = RES_POOLCOLL_EXTRA_BEGIN ; nId < RES_POOLCOLL_EXTRA_END ; nId++,nIndex++ )
499cdf0e10cSrcweir 			{
500cdf0e10cSrcweir 				String aString, bString;
501cdf0e10cSrcweir 				FillUIName ( nId, aString );
502cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
503cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
504cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
505cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
506cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
507cdf0e10cSrcweir 				if ( nNewId != nId )
508cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
509cdf0e10cSrcweir 			}
510cdf0e10cSrcweir 			for ( nIndex = 0, nId = RES_POOLCOLL_REGISTER_BEGIN ; nId < RES_POOLCOLL_REGISTER_END ; nId++,nIndex++ )
511cdf0e10cSrcweir 			{
512cdf0e10cSrcweir 				String aString, bString;
513cdf0e10cSrcweir 				FillUIName ( nId, aString );
514cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
515cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
516cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
517cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
518cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
519cdf0e10cSrcweir 				if ( nNewId != nId )
520cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
521cdf0e10cSrcweir 			}
522cdf0e10cSrcweir 			for ( nIndex = 0, nId = RES_POOLCOLL_DOC_BEGIN ; nId < RES_POOLCOLL_DOC_END ; nId++,nIndex++ )
523cdf0e10cSrcweir 			{
524cdf0e10cSrcweir 				String aString, bString;
525cdf0e10cSrcweir 				FillUIName ( nId, aString );
526cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
527cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
528cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
529cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
530cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
531cdf0e10cSrcweir 				if ( nNewId != nId )
532cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
533cdf0e10cSrcweir 			}
534cdf0e10cSrcweir 			for ( nIndex = 0, nId = RES_POOLCOLL_HTML_BEGIN ; nId < RES_POOLCOLL_HTML_END ; nId++,nIndex++ )
535cdf0e10cSrcweir 			{
536cdf0e10cSrcweir 				String aString, bString;
537cdf0e10cSrcweir 				FillUIName ( nId, aString );
538cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
539cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
540cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
541cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
542cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
543cdf0e10cSrcweir 				if ( nNewId != nId )
544cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
545cdf0e10cSrcweir 			}
546cdf0e10cSrcweir 		}
547cdf0e10cSrcweir 		{
548cdf0e10cSrcweir 			for ( sal_uInt16 nIndex = 0, nId = RES_POOLCHR_NORMAL_BEGIN ; nId < RES_POOLCHR_NORMAL_END ; nId++,nIndex++ )
549cdf0e10cSrcweir 			{
550cdf0e10cSrcweir 				String aString, bString;
551cdf0e10cSrcweir 				FillUIName ( nId, aString );
552cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
553cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
554cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
555cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
556cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
557cdf0e10cSrcweir 				if ( nNewId != nId )
558cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
559cdf0e10cSrcweir 			}
560cdf0e10cSrcweir 			for ( nIndex = 0, nId = RES_POOLCHR_HTML_BEGIN ; nId < RES_POOLCHR_HTML_END ; nId++,nIndex++ )
561cdf0e10cSrcweir 			{
562cdf0e10cSrcweir 				String aString, bString;
563cdf0e10cSrcweir 				FillUIName ( nId, aString );
564cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
565cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
566cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
567cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
568cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
569cdf0e10cSrcweir 				if ( nNewId != nId )
570cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
571cdf0e10cSrcweir 			}
572cdf0e10cSrcweir 		}
573cdf0e10cSrcweir 		{
574cdf0e10cSrcweir 			for ( sal_uInt16 nIndex=0,nId = RES_POOLFRM_BEGIN ; nId < RES_POOLFRM_END ; nId++,nIndex++ )
575cdf0e10cSrcweir 			{
576cdf0e10cSrcweir 				String aString, bString;
577cdf0e10cSrcweir 				FillUIName ( nId, aString );
578cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
579cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
580cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
581cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
582cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
583cdf0e10cSrcweir 				if ( nNewId != nId )
584cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
585cdf0e10cSrcweir 			}
586cdf0e10cSrcweir 		}
587cdf0e10cSrcweir 		{
588cdf0e10cSrcweir 			for ( sal_uInt16 nIndex=0,nId = RES_POOLPAGE_BEGIN ; nId < RES_POOLPAGE_END ; nId++,nIndex++ )
589cdf0e10cSrcweir 			{
590cdf0e10cSrcweir 				String aString, bString;
591cdf0e10cSrcweir 				FillUIName ( nId, aString );
592cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
593cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
594cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
595cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
596cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
597cdf0e10cSrcweir 				if ( nNewId != nId )
598cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
599cdf0e10cSrcweir 			}
600cdf0e10cSrcweir 		}
601cdf0e10cSrcweir 		{
602cdf0e10cSrcweir 			for ( sal_uInt16 nIndex=0,nId = RES_POOLNUMRULE_BEGIN ; nId < RES_POOLNUMRULE_END ; nId++,nIndex++ )
603cdf0e10cSrcweir 			{
604cdf0e10cSrcweir 				String aString, bString;
605cdf0e10cSrcweir 				FillUIName ( nId, aString );
606cdf0e10cSrcweir 				bString = GetProgName ( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, aString );
607cdf0e10cSrcweir 				sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
608cdf0e10cSrcweir 				FillProgName ( nNewId, aString );
609cdf0e10cSrcweir 				bString = GetUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
610cdf0e10cSrcweir 				nNewId = GetPoolIdFromUIName ( aString, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL );
611cdf0e10cSrcweir 				if ( nNewId != nId )
612cdf0e10cSrcweir 					*((sal_Int32*)0) = 42;
613cdf0e10cSrcweir 			}
614cdf0e10cSrcweir 		}
615cdf0e10cSrcweir 	}
616cdf0e10cSrcweir #endif
617cdf0e10cSrcweir 	return *pHash;
618cdf0e10cSrcweir }
619cdf0e10cSrcweir // This gets the UI Name from the programmatic name
GetUIName(const String & rName,SwGetPoolIdFromName eFlags)620cdf0e10cSrcweir const String& SwStyleNameMapper::GetUIName ( const String& rName, SwGetPoolIdFromName eFlags )
621cdf0e10cSrcweir {
622cdf0e10cSrcweir 	sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
623cdf0e10cSrcweir 	return nId != USHRT_MAX ? GetUIName( nId, rName ) : rName;
624cdf0e10cSrcweir }
625cdf0e10cSrcweir 
626cdf0e10cSrcweir 
627cdf0e10cSrcweir // Get the programmatic Name from the UI name
GetProgName(const String & rName,SwGetPoolIdFromName eFlags)628cdf0e10cSrcweir const String& SwStyleNameMapper::GetProgName( const String& rName, SwGetPoolIdFromName eFlags )
629cdf0e10cSrcweir {
630cdf0e10cSrcweir 	sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
631cdf0e10cSrcweir 	return nId != USHRT_MAX ? GetProgName( nId, rName ) : rName;
632cdf0e10cSrcweir }
633cdf0e10cSrcweir 
634cdf0e10cSrcweir // Get the programmatic name from the UI name in rName and put it into rFillName
FillProgName(const String & rName,String & rFillName,SwGetPoolIdFromName eFlags,sal_Bool bDisambiguate)635cdf0e10cSrcweir void SwStyleNameMapper::FillProgName ( const String& rName, String& rFillName, SwGetPoolIdFromName eFlags, sal_Bool bDisambiguate )
636cdf0e10cSrcweir {
637cdf0e10cSrcweir 	sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
638cdf0e10cSrcweir 	if ( bDisambiguate && nId == USHRT_MAX )
639cdf0e10cSrcweir 	{
640cdf0e10cSrcweir 		// rName isn't in our UI name table...check if it's in the programmatic one
641cdf0e10cSrcweir 		nId = GetPoolIdFromProgName ( rName, eFlags );
642cdf0e10cSrcweir 
643cdf0e10cSrcweir 		rFillName = rName;
644cdf0e10cSrcweir 		if (nId == USHRT_MAX )
645cdf0e10cSrcweir 		{
646cdf0e10cSrcweir 			// It isn't ...make sure the suffix isn't already " (user)"...if it is,
647cdf0e10cSrcweir 			// we need to add another one
648cdf0e10cSrcweir 			if ( SuffixIsUser ( rFillName ) )
649cdf0e10cSrcweir 				rFillName.AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " (user)" ) );
650cdf0e10cSrcweir 		}
651cdf0e10cSrcweir 		else
652cdf0e10cSrcweir 		{
653cdf0e10cSrcweir 			// It's in the programmatic name table...append suffix
654cdf0e10cSrcweir 			rFillName.AppendAscii ( RTL_CONSTASCII_STRINGPARAM ( " (user)" ) );
655cdf0e10cSrcweir 		}
656cdf0e10cSrcweir 	}
657cdf0e10cSrcweir 	else
658cdf0e10cSrcweir 	{
659cdf0e10cSrcweir 		// If we aren't trying to disambiguate, then just do a normal fill
660cdf0e10cSrcweir 		fillNameFromId ( nId, rFillName, sal_True);
661cdf0e10cSrcweir 	}
662cdf0e10cSrcweir }
663cdf0e10cSrcweir // Get the UI name from the programmatic name in rName and put it into rFillName
FillUIName(const String & rName,String & rFillName,SwGetPoolIdFromName eFlags,sal_Bool bDisambiguate)664cdf0e10cSrcweir void SwStyleNameMapper::FillUIName ( const String& rName, String& rFillName, SwGetPoolIdFromName eFlags, sal_Bool bDisambiguate )
665cdf0e10cSrcweir {
666cdf0e10cSrcweir 	sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
667cdf0e10cSrcweir 	if ( bDisambiguate && nId == USHRT_MAX )
668cdf0e10cSrcweir 	{
669cdf0e10cSrcweir 		rFillName = rName;
670cdf0e10cSrcweir 		// rName isn't in our Prog name table...check if it has a " (user)" suffix, if so remove it
671cdf0e10cSrcweir 		CheckSuffixAndDelete ( rFillName );
672cdf0e10cSrcweir 	}
673cdf0e10cSrcweir 	else
674cdf0e10cSrcweir 	{
675cdf0e10cSrcweir 		// If we aren't trying to disambiguate, then just do a normal fill
676cdf0e10cSrcweir 		fillNameFromId ( nId, rFillName, sal_False);
677cdf0e10cSrcweir 	}
678cdf0e10cSrcweir }
679cdf0e10cSrcweir 
getNameFromId(sal_uInt16 nId,const String & rFillName,sal_Bool bProgName)680cdf0e10cSrcweir const String& SwStyleNameMapper::getNameFromId( sal_uInt16 nId, const String& rFillName, sal_Bool bProgName )
681cdf0e10cSrcweir {
682cdf0e10cSrcweir 	sal_uInt16 nStt = 0;
683cdf0e10cSrcweir 	const SvStringsDtor* pStrArr = 0;
684cdf0e10cSrcweir 
685cdf0e10cSrcweir 	switch( (USER_FMT | COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID) & nId )
686cdf0e10cSrcweir 	{
687cdf0e10cSrcweir 	case COLL_TEXT_BITS:
688cdf0e10cSrcweir 		if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
689cdf0e10cSrcweir 		{
690cdf0e10cSrcweir 			pStrArr = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
691cdf0e10cSrcweir 			nStt = RES_POOLCOLL_TEXT_BEGIN;
692cdf0e10cSrcweir 		}
693cdf0e10cSrcweir 		break;
694cdf0e10cSrcweir 	case COLL_LISTS_BITS:
695cdf0e10cSrcweir 		if( RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END )
696cdf0e10cSrcweir 		{
697cdf0e10cSrcweir 			pStrArr = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
698cdf0e10cSrcweir 			nStt = RES_POOLCOLL_LISTS_BEGIN;
699cdf0e10cSrcweir 		}
700cdf0e10cSrcweir 		break;
701cdf0e10cSrcweir 	case COLL_EXTRA_BITS:
702cdf0e10cSrcweir 		if( RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END )
703cdf0e10cSrcweir 		{
704cdf0e10cSrcweir 			pStrArr = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
705cdf0e10cSrcweir 			nStt = RES_POOLCOLL_EXTRA_BEGIN;
706cdf0e10cSrcweir 		}
707cdf0e10cSrcweir 		break;
708cdf0e10cSrcweir 	case COLL_REGISTER_BITS:
709cdf0e10cSrcweir 		if( RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END )
710cdf0e10cSrcweir 		{
711cdf0e10cSrcweir 			pStrArr = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
712cdf0e10cSrcweir 			nStt = RES_POOLCOLL_REGISTER_BEGIN;
713cdf0e10cSrcweir 		}
714cdf0e10cSrcweir 		break;
715cdf0e10cSrcweir 	case COLL_DOC_BITS:
716cdf0e10cSrcweir 		if( RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END )
717cdf0e10cSrcweir 		{
718cdf0e10cSrcweir 			pStrArr = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
719cdf0e10cSrcweir 			nStt = RES_POOLCOLL_DOC_BEGIN;
720cdf0e10cSrcweir 		}
721cdf0e10cSrcweir 		break;
722cdf0e10cSrcweir 	case COLL_HTML_BITS:
723cdf0e10cSrcweir 		if( RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END )
724cdf0e10cSrcweir 		{
725cdf0e10cSrcweir 			pStrArr = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
726cdf0e10cSrcweir 			nStt = RES_POOLCOLL_HTML_BEGIN;
727cdf0e10cSrcweir 		}
728cdf0e10cSrcweir 		break;
729cdf0e10cSrcweir 	case POOLGRP_CHARFMT:
730cdf0e10cSrcweir 		if( RES_POOLCHR_NORMAL_BEGIN <= nId && nId < RES_POOLCHR_NORMAL_END )
731cdf0e10cSrcweir 		{
732cdf0e10cSrcweir 			pStrArr = bProgName ? &GetChrFmtProgNameArray() : &GetChrFmtUINameArray();
733cdf0e10cSrcweir 			nStt = RES_POOLCHR_NORMAL_BEGIN;
734cdf0e10cSrcweir 		}
735cdf0e10cSrcweir 		else if( RES_POOLCHR_HTML_BEGIN <= nId && nId < RES_POOLCHR_HTML_END )
736cdf0e10cSrcweir 		{
737cdf0e10cSrcweir 			pStrArr = bProgName ? &GetHTMLChrFmtProgNameArray() : &GetHTMLChrFmtUINameArray();
738cdf0e10cSrcweir 			nStt = RES_POOLCHR_HTML_BEGIN;
739cdf0e10cSrcweir 		}
740cdf0e10cSrcweir 		break;
741cdf0e10cSrcweir 	case POOLGRP_FRAMEFMT:
742cdf0e10cSrcweir 		if( RES_POOLFRM_BEGIN <= nId && nId < RES_POOLFRM_END )
743cdf0e10cSrcweir 		{
744cdf0e10cSrcweir 			pStrArr = bProgName ? &GetFrmFmtProgNameArray() : &GetFrmFmtUINameArray();
745cdf0e10cSrcweir 			nStt = RES_POOLFRM_BEGIN;
746cdf0e10cSrcweir 		}
747cdf0e10cSrcweir 		break;
748cdf0e10cSrcweir 	case POOLGRP_PAGEDESC:
749cdf0e10cSrcweir 		if( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END )
750cdf0e10cSrcweir 		{
751cdf0e10cSrcweir 			pStrArr = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
752cdf0e10cSrcweir 			nStt = RES_POOLPAGE_BEGIN;
753cdf0e10cSrcweir 		}
754cdf0e10cSrcweir 		break;
755cdf0e10cSrcweir 	case POOLGRP_NUMRULE:
756cdf0e10cSrcweir 		if( RES_POOLNUMRULE_BEGIN <= nId && nId < RES_POOLNUMRULE_END )
757cdf0e10cSrcweir 		{
758cdf0e10cSrcweir 			pStrArr = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
759cdf0e10cSrcweir 			nStt = RES_POOLNUMRULE_BEGIN;
760cdf0e10cSrcweir 		}
761cdf0e10cSrcweir 		break;
762cdf0e10cSrcweir 	}
763cdf0e10cSrcweir 	return pStrArr ? *(pStrArr->operator[] ( nId - nStt ) ) : rFillName;
764cdf0e10cSrcweir }
fillNameFromId(sal_uInt16 nId,String & rFillName,sal_Bool bProgName)765cdf0e10cSrcweir void SwStyleNameMapper::fillNameFromId( sal_uInt16 nId, String& rFillName, sal_Bool bProgName )
766cdf0e10cSrcweir {
767cdf0e10cSrcweir 	sal_uInt16 nStt = 0;
768cdf0e10cSrcweir 	const SvStringsDtor* pStrArr = 0;
769cdf0e10cSrcweir 
770cdf0e10cSrcweir 	switch( (USER_FMT | COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID) & nId )
771cdf0e10cSrcweir 	{
772cdf0e10cSrcweir 	case COLL_TEXT_BITS:
773cdf0e10cSrcweir 		if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
774cdf0e10cSrcweir 		{
775cdf0e10cSrcweir 			pStrArr = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
776cdf0e10cSrcweir 			nStt = RES_POOLCOLL_TEXT_BEGIN;
777cdf0e10cSrcweir 		}
778cdf0e10cSrcweir 		break;
779cdf0e10cSrcweir 	case COLL_LISTS_BITS:
780cdf0e10cSrcweir 		if( RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END )
781cdf0e10cSrcweir 		{
782cdf0e10cSrcweir 			pStrArr = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
783cdf0e10cSrcweir 			nStt = RES_POOLCOLL_LISTS_BEGIN;
784cdf0e10cSrcweir 		}
785cdf0e10cSrcweir 		break;
786cdf0e10cSrcweir 	case COLL_EXTRA_BITS:
787cdf0e10cSrcweir 		if( RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END )
788cdf0e10cSrcweir 		{
789cdf0e10cSrcweir 			pStrArr = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
790cdf0e10cSrcweir 			nStt = RES_POOLCOLL_EXTRA_BEGIN;
791cdf0e10cSrcweir 		}
792cdf0e10cSrcweir 		break;
793cdf0e10cSrcweir 	case COLL_REGISTER_BITS:
794cdf0e10cSrcweir 		if( RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END )
795cdf0e10cSrcweir 		{
796cdf0e10cSrcweir 			pStrArr = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
797cdf0e10cSrcweir 			nStt = RES_POOLCOLL_REGISTER_BEGIN;
798cdf0e10cSrcweir 		}
799cdf0e10cSrcweir 		break;
800cdf0e10cSrcweir 	case COLL_DOC_BITS:
801cdf0e10cSrcweir 		if( RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END )
802cdf0e10cSrcweir 		{
803cdf0e10cSrcweir 			pStrArr = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
804cdf0e10cSrcweir 			nStt = RES_POOLCOLL_DOC_BEGIN;
805cdf0e10cSrcweir 		}
806cdf0e10cSrcweir 		break;
807cdf0e10cSrcweir 	case COLL_HTML_BITS:
808cdf0e10cSrcweir 		if( RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END )
809cdf0e10cSrcweir 		{
810cdf0e10cSrcweir 			pStrArr = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
811cdf0e10cSrcweir 			nStt = RES_POOLCOLL_HTML_BEGIN;
812cdf0e10cSrcweir 		}
813cdf0e10cSrcweir 		break;
814cdf0e10cSrcweir 	case POOLGRP_CHARFMT:
815cdf0e10cSrcweir 		if( RES_POOLCHR_NORMAL_BEGIN <= nId && nId < RES_POOLCHR_NORMAL_END )
816cdf0e10cSrcweir 		{
817cdf0e10cSrcweir 			pStrArr = bProgName ? &GetChrFmtProgNameArray() : &GetChrFmtUINameArray();
818cdf0e10cSrcweir 			nStt = RES_POOLCHR_NORMAL_BEGIN;
819cdf0e10cSrcweir 		}
820cdf0e10cSrcweir 		else if( RES_POOLCHR_HTML_BEGIN <= nId && nId < RES_POOLCHR_HTML_END )
821cdf0e10cSrcweir 		{
822cdf0e10cSrcweir 			pStrArr = bProgName ? &GetHTMLChrFmtProgNameArray() : &GetHTMLChrFmtUINameArray();
823cdf0e10cSrcweir 			nStt = RES_POOLCHR_HTML_BEGIN;
824cdf0e10cSrcweir 		}
825cdf0e10cSrcweir 		break;
826cdf0e10cSrcweir 	case POOLGRP_FRAMEFMT:
827cdf0e10cSrcweir 		if( RES_POOLFRM_BEGIN <= nId && nId < RES_POOLFRM_END )
828cdf0e10cSrcweir 		{
829cdf0e10cSrcweir 			pStrArr = bProgName ? &GetFrmFmtProgNameArray() : &GetFrmFmtUINameArray();
830cdf0e10cSrcweir 			nStt = RES_POOLFRM_BEGIN;
831cdf0e10cSrcweir 		}
832cdf0e10cSrcweir 		break;
833cdf0e10cSrcweir 	case POOLGRP_PAGEDESC:
834cdf0e10cSrcweir 		if( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END )
835cdf0e10cSrcweir 		{
836cdf0e10cSrcweir 			pStrArr = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
837cdf0e10cSrcweir 			nStt = RES_POOLPAGE_BEGIN;
838cdf0e10cSrcweir 		}
839cdf0e10cSrcweir 		break;
840cdf0e10cSrcweir 	case POOLGRP_NUMRULE:
841cdf0e10cSrcweir 		if( RES_POOLNUMRULE_BEGIN <= nId && nId < RES_POOLNUMRULE_END )
842cdf0e10cSrcweir 		{
843cdf0e10cSrcweir 			pStrArr = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
844cdf0e10cSrcweir 			nStt = RES_POOLNUMRULE_BEGIN;
845cdf0e10cSrcweir 		}
846cdf0e10cSrcweir 		break;
847cdf0e10cSrcweir 	}
848cdf0e10cSrcweir 	if (pStrArr)
849cdf0e10cSrcweir 		rFillName = *(pStrArr->operator[] ( nId - nStt ) );
850cdf0e10cSrcweir }
851cdf0e10cSrcweir // Get the UI Name from the pool ID
FillUIName(sal_uInt16 nId,String & rFillName)852cdf0e10cSrcweir void SwStyleNameMapper::FillUIName ( sal_uInt16 nId, String& rFillName )
853cdf0e10cSrcweir {
854cdf0e10cSrcweir 	fillNameFromId ( nId, rFillName, sal_False );
855cdf0e10cSrcweir }
856cdf0e10cSrcweir // Get the UI Name from the pool ID
GetUIName(sal_uInt16 nId,const String & rName)857cdf0e10cSrcweir const String& SwStyleNameMapper::GetUIName ( sal_uInt16 nId, const String& rName )
858cdf0e10cSrcweir {
859cdf0e10cSrcweir 	return getNameFromId ( nId, rName, sal_False );
860cdf0e10cSrcweir }
861cdf0e10cSrcweir 
862cdf0e10cSrcweir // Get the programmatic Name from the pool ID
FillProgName(sal_uInt16 nId,String & rFillName)863cdf0e10cSrcweir void SwStyleNameMapper::FillProgName ( sal_uInt16 nId, String& rFillName )
864cdf0e10cSrcweir {
865cdf0e10cSrcweir 	fillNameFromId ( nId, rFillName, sal_True );
866cdf0e10cSrcweir }
867cdf0e10cSrcweir // Get the programmatic Name from the pool ID
GetProgName(sal_uInt16 nId,const String & rName)868cdf0e10cSrcweir const String& SwStyleNameMapper::GetProgName ( sal_uInt16 nId, const String& rName )
869cdf0e10cSrcweir {
870cdf0e10cSrcweir 	return getNameFromId ( nId, rName, sal_True );
871cdf0e10cSrcweir }
872cdf0e10cSrcweir // This gets the PoolId from the UI Name
GetPoolIdFromUIName(const String & rName,SwGetPoolIdFromName eFlags)873cdf0e10cSrcweir sal_uInt16 SwStyleNameMapper::GetPoolIdFromUIName( const String& rName, SwGetPoolIdFromName eFlags )
874cdf0e10cSrcweir {
875cdf0e10cSrcweir 	const NameToIdHash & rHashMap = getHashTable ( eFlags, sal_False );
876cdf0e10cSrcweir 	NameToIdHash::const_iterator aIter = rHashMap.find ( &rName );
877cdf0e10cSrcweir 	return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
878cdf0e10cSrcweir }
879cdf0e10cSrcweir // Get the Pool ID from the programmatic name
GetPoolIdFromProgName(const String & rName,SwGetPoolIdFromName eFlags)880cdf0e10cSrcweir sal_uInt16 SwStyleNameMapper::GetPoolIdFromProgName( const String& rName, SwGetPoolIdFromName eFlags )
881cdf0e10cSrcweir {
882cdf0e10cSrcweir 	const NameToIdHash & rHashMap = getHashTable ( eFlags, sal_True );
883cdf0e10cSrcweir 	NameToIdHash::const_iterator aIter = rHashMap.find ( &rName );
884cdf0e10cSrcweir 	return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
885cdf0e10cSrcweir }
886cdf0e10cSrcweir 
NewUINameArray(SvStringsDtor * & pNameArray,sal_uInt16 nStt,sal_uInt16 nEnd)887cdf0e10cSrcweir SvStringsDtor* SwStyleNameMapper::NewUINameArray( SvStringsDtor*& pNameArray, sal_uInt16 nStt, sal_uInt16 nEnd )
888cdf0e10cSrcweir {
889cdf0e10cSrcweir 	if( !pNameArray )
890cdf0e10cSrcweir 	{
891cdf0e10cSrcweir 		pNameArray = new SvStringsDtor( static_cast < sal_Int8 > (nEnd - nStt), 1 );
892cdf0e10cSrcweir 		while( nStt < nEnd )
893cdf0e10cSrcweir 		{
894cdf0e10cSrcweir 			const ResId rRId( nStt, *pSwResMgr );
895cdf0e10cSrcweir 			String* pStr = new String( rRId );
896cdf0e10cSrcweir 			pNameArray->Insert( pStr, pNameArray->Count() );
897cdf0e10cSrcweir 			++nStt;
898cdf0e10cSrcweir 		}
899cdf0e10cSrcweir 	}
900cdf0e10cSrcweir 	return pNameArray;
901cdf0e10cSrcweir }
902cdf0e10cSrcweir 
GetTextUINameArray()903cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetTextUINameArray()
904cdf0e10cSrcweir {
905cdf0e10cSrcweir 	return pTextUINameArray ? *pTextUINameArray :
906cdf0e10cSrcweir 		   *NewUINameArray( pTextUINameArray, RC_POOLCOLL_TEXT_BEGIN,
907cdf0e10cSrcweir 			( RC_POOLCOLL_TEXT_BEGIN +
908cdf0e10cSrcweir 					(RES_POOLCOLL_TEXT_END - RES_POOLCOLL_TEXT_BEGIN )) );
909cdf0e10cSrcweir }
910cdf0e10cSrcweir 
GetListsUINameArray()911cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetListsUINameArray()
912cdf0e10cSrcweir {
913cdf0e10cSrcweir 	return pListsUINameArray ? *pListsUINameArray :
914cdf0e10cSrcweir 		   *NewUINameArray( pListsUINameArray, RC_POOLCOLL_LISTS_BEGIN,
915cdf0e10cSrcweir 			( RC_POOLCOLL_LISTS_BEGIN +
916cdf0e10cSrcweir 					(RES_POOLCOLL_LISTS_END - RES_POOLCOLL_LISTS_BEGIN )) );
917cdf0e10cSrcweir }
918cdf0e10cSrcweir 
GetExtraUINameArray()919cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetExtraUINameArray()
920cdf0e10cSrcweir {
921cdf0e10cSrcweir 	return pExtraUINameArray ? *pExtraUINameArray :
922cdf0e10cSrcweir 		   *NewUINameArray( pExtraUINameArray, RC_POOLCOLL_EXTRA_BEGIN,
923cdf0e10cSrcweir 				( RC_POOLCOLL_EXTRA_BEGIN +
924cdf0e10cSrcweir 					(RES_POOLCOLL_EXTRA_END - RES_POOLCOLL_EXTRA_BEGIN )) );
925cdf0e10cSrcweir }
926cdf0e10cSrcweir 
GetRegisterUINameArray()927cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetRegisterUINameArray()
928cdf0e10cSrcweir {
929cdf0e10cSrcweir 	return pRegisterUINameArray ? *pRegisterUINameArray :
930cdf0e10cSrcweir 		   *NewUINameArray( pRegisterUINameArray, RC_POOLCOLL_REGISTER_BEGIN,
931cdf0e10cSrcweir 			( RC_POOLCOLL_REGISTER_BEGIN +
932cdf0e10cSrcweir 				(RES_POOLCOLL_REGISTER_END - RES_POOLCOLL_REGISTER_BEGIN )) );
933cdf0e10cSrcweir }
934cdf0e10cSrcweir 
GetDocUINameArray()935cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetDocUINameArray()
936cdf0e10cSrcweir {
937cdf0e10cSrcweir 	return pDocUINameArray ? *pDocUINameArray :
938cdf0e10cSrcweir 		   *NewUINameArray( pDocUINameArray, RC_POOLCOLL_DOC_BEGIN,
939cdf0e10cSrcweir 					( RC_POOLCOLL_DOC_BEGIN +
940cdf0e10cSrcweir 						(RES_POOLCOLL_DOC_END - RES_POOLCOLL_DOC_BEGIN )) );
941cdf0e10cSrcweir }
942cdf0e10cSrcweir 
GetHTMLUINameArray()943cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetHTMLUINameArray()
944cdf0e10cSrcweir {
945cdf0e10cSrcweir 	return pHTMLUINameArray ? *pHTMLUINameArray :
946cdf0e10cSrcweir 		   *NewUINameArray( pHTMLUINameArray, RC_POOLCOLL_HTML_BEGIN,
947cdf0e10cSrcweir 					( RC_POOLCOLL_HTML_BEGIN +
948cdf0e10cSrcweir 						(RES_POOLCOLL_HTML_END - RES_POOLCOLL_HTML_BEGIN )) );
949cdf0e10cSrcweir }
950cdf0e10cSrcweir 
GetFrmFmtUINameArray()951cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetFrmFmtUINameArray()
952cdf0e10cSrcweir {
953cdf0e10cSrcweir 	return pFrmFmtUINameArray ? *pFrmFmtUINameArray :
954cdf0e10cSrcweir 		   *NewUINameArray( pFrmFmtUINameArray, RC_POOLFRMFMT_BEGIN,
955cdf0e10cSrcweir 					( RC_POOLFRMFMT_BEGIN +
956cdf0e10cSrcweir 						(RES_POOLFRM_END - RES_POOLFRM_BEGIN )) );
957cdf0e10cSrcweir }
958cdf0e10cSrcweir 
GetChrFmtUINameArray()959cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetChrFmtUINameArray()
960cdf0e10cSrcweir {
961cdf0e10cSrcweir 	return pChrFmtUINameArray ? *pChrFmtUINameArray :
962cdf0e10cSrcweir 		   *NewUINameArray( pChrFmtUINameArray, RC_POOLCHRFMT_BEGIN,
963cdf0e10cSrcweir 			( RC_POOLCHRFMT_BEGIN +
964cdf0e10cSrcweir 					(RES_POOLCHR_NORMAL_END - RES_POOLCHR_NORMAL_BEGIN )) );
965cdf0e10cSrcweir }
966cdf0e10cSrcweir 
GetHTMLChrFmtUINameArray()967cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetHTMLChrFmtUINameArray()
968cdf0e10cSrcweir {
969cdf0e10cSrcweir 	return pHTMLChrFmtUINameArray ? *pHTMLChrFmtUINameArray :
970cdf0e10cSrcweir 		   *NewUINameArray( pHTMLChrFmtUINameArray, RC_POOLCHRFMT_HTML_BEGIN,
971cdf0e10cSrcweir 			( RC_POOLCHRFMT_HTML_BEGIN +
972cdf0e10cSrcweir 					(RES_POOLCHR_HTML_END - RES_POOLCHR_HTML_BEGIN )) );
973cdf0e10cSrcweir }
974cdf0e10cSrcweir 
GetPageDescUINameArray()975cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetPageDescUINameArray()
976cdf0e10cSrcweir {
977cdf0e10cSrcweir 	return pPageDescUINameArray ? *pPageDescUINameArray :
978cdf0e10cSrcweir 		   *NewUINameArray( pPageDescUINameArray, RC_POOLPAGEDESC_BEGIN,
979cdf0e10cSrcweir 			( RC_POOLPAGEDESC_BEGIN +
980cdf0e10cSrcweir 					(RES_POOLPAGE_END - RES_POOLPAGE_BEGIN )) );
981cdf0e10cSrcweir }
982cdf0e10cSrcweir 
GetNumRuleUINameArray()983cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetNumRuleUINameArray()
984cdf0e10cSrcweir {
985cdf0e10cSrcweir 	return pNumRuleUINameArray ? *pNumRuleUINameArray :
986cdf0e10cSrcweir 	       *NewUINameArray( pNumRuleUINameArray, RC_POOLNUMRULE_BEGIN,
987cdf0e10cSrcweir 			( RC_POOLNUMRULE_BEGIN +
988cdf0e10cSrcweir 					(RES_POOLNUMRULE_END - RES_POOLNUMRULE_BEGIN )) );
989cdf0e10cSrcweir }
990cdf0e10cSrcweir 
NewProgNameArray(SvStringsDtor * & pProgNameArray,const SwTableEntry * pTable,sal_uInt8 nCount)991cdf0e10cSrcweir SvStringsDtor* SwStyleNameMapper::NewProgNameArray( SvStringsDtor*& pProgNameArray, const SwTableEntry *pTable, sal_uInt8 nCount )
992cdf0e10cSrcweir {
993cdf0e10cSrcweir 	if( !pProgNameArray )
994cdf0e10cSrcweir 	{
995cdf0e10cSrcweir 		pProgNameArray = new SvStringsDtor( nCount, 1 );
996cdf0e10cSrcweir 		while (pTable->nLength)
997cdf0e10cSrcweir 		{
998cdf0e10cSrcweir 			String* pStr = new String( pTable->pChar, pTable->nLength, RTL_TEXTENCODING_ASCII_US );
999cdf0e10cSrcweir 			pProgNameArray->Insert( pStr, pProgNameArray->Count() );
1000cdf0e10cSrcweir 			pTable++;
1001cdf0e10cSrcweir 		}
1002cdf0e10cSrcweir 	}
1003cdf0e10cSrcweir 	return pProgNameArray;
1004cdf0e10cSrcweir }
1005cdf0e10cSrcweir 
GetTextProgNameArray()1006cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetTextProgNameArray()
1007cdf0e10cSrcweir {
1008cdf0e10cSrcweir 	return pTextProgNameArray ? *pTextProgNameArray :
1009cdf0e10cSrcweir 		   *NewProgNameArray( pTextProgNameArray, TextProgNameTable,
1010cdf0e10cSrcweir 			sizeof ( TextProgNameTable ) / sizeof ( SwTableEntry ) );
1011cdf0e10cSrcweir }
1012cdf0e10cSrcweir 
GetListsProgNameArray()1013cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetListsProgNameArray()
1014cdf0e10cSrcweir {
1015cdf0e10cSrcweir 	return pListsProgNameArray ? *pListsProgNameArray :
1016cdf0e10cSrcweir 		   *NewProgNameArray( pListsProgNameArray, ListsProgNameTable,
1017cdf0e10cSrcweir 			sizeof ( ListsProgNameTable ) / sizeof ( SwTableEntry ) );
1018cdf0e10cSrcweir }
1019cdf0e10cSrcweir 
GetExtraProgNameArray()1020cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetExtraProgNameArray()
1021cdf0e10cSrcweir {
1022cdf0e10cSrcweir 	return pExtraProgNameArray ? *pExtraProgNameArray :
1023cdf0e10cSrcweir 		   *NewProgNameArray( pExtraProgNameArray, ExtraProgNameTable,
1024cdf0e10cSrcweir 			sizeof ( ExtraProgNameTable ) / sizeof ( SwTableEntry ) );
1025cdf0e10cSrcweir }
1026cdf0e10cSrcweir 
GetRegisterProgNameArray()1027cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetRegisterProgNameArray()
1028cdf0e10cSrcweir {
1029cdf0e10cSrcweir 	return pRegisterProgNameArray ? *pRegisterProgNameArray :
1030cdf0e10cSrcweir 		   *NewProgNameArray( pRegisterProgNameArray, RegisterProgNameTable,
1031cdf0e10cSrcweir 			sizeof ( RegisterProgNameTable ) / sizeof ( SwTableEntry ) );
1032cdf0e10cSrcweir }
1033cdf0e10cSrcweir 
GetDocProgNameArray()1034cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetDocProgNameArray()
1035cdf0e10cSrcweir {
1036cdf0e10cSrcweir 	return pDocProgNameArray ? *pDocProgNameArray :
1037cdf0e10cSrcweir 		   *NewProgNameArray( pDocProgNameArray, DocProgNameTable,
1038cdf0e10cSrcweir 			sizeof ( DocProgNameTable ) / sizeof ( SwTableEntry ) );
1039cdf0e10cSrcweir }
1040cdf0e10cSrcweir 
GetHTMLProgNameArray()1041cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetHTMLProgNameArray()
1042cdf0e10cSrcweir {
1043cdf0e10cSrcweir 	return pHTMLProgNameArray ? *pHTMLProgNameArray :
1044cdf0e10cSrcweir 		   *NewProgNameArray( pHTMLProgNameArray, HTMLProgNameTable,
1045cdf0e10cSrcweir 			sizeof ( HTMLProgNameTable ) / sizeof ( SwTableEntry ) );
1046cdf0e10cSrcweir }
1047cdf0e10cSrcweir 
GetFrmFmtProgNameArray()1048cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetFrmFmtProgNameArray()
1049cdf0e10cSrcweir {
1050cdf0e10cSrcweir 	return pFrmFmtProgNameArray ? *pFrmFmtProgNameArray :
1051cdf0e10cSrcweir 		   *NewProgNameArray( pFrmFmtProgNameArray, FrmFmtProgNameTable,
1052cdf0e10cSrcweir 			sizeof ( FrmFmtProgNameTable ) / sizeof ( SwTableEntry ) );
1053cdf0e10cSrcweir }
1054cdf0e10cSrcweir 
GetChrFmtProgNameArray()1055cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetChrFmtProgNameArray()
1056cdf0e10cSrcweir {
1057cdf0e10cSrcweir 	return pChrFmtProgNameArray ? *pChrFmtProgNameArray :
1058cdf0e10cSrcweir 		   *NewProgNameArray( pChrFmtProgNameArray, ChrFmtProgNameTable,
1059cdf0e10cSrcweir 			sizeof ( ChrFmtProgNameTable ) / sizeof ( SwTableEntry ) );
1060cdf0e10cSrcweir }
1061cdf0e10cSrcweir 
GetHTMLChrFmtProgNameArray()1062cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetHTMLChrFmtProgNameArray()
1063cdf0e10cSrcweir {
1064cdf0e10cSrcweir 	return pHTMLChrFmtProgNameArray ? *pHTMLChrFmtProgNameArray :
1065cdf0e10cSrcweir 		   *NewProgNameArray( pHTMLChrFmtProgNameArray, HTMLChrFmtProgNameTable,
1066cdf0e10cSrcweir 			sizeof ( HTMLChrFmtProgNameTable ) / sizeof ( SwTableEntry ) );
1067cdf0e10cSrcweir }
1068cdf0e10cSrcweir 
GetPageDescProgNameArray()1069cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetPageDescProgNameArray()
1070cdf0e10cSrcweir {
1071cdf0e10cSrcweir 	return pPageDescProgNameArray ? *pPageDescProgNameArray :
1072cdf0e10cSrcweir 		   *NewProgNameArray( pPageDescProgNameArray, PageDescProgNameTable,
1073cdf0e10cSrcweir 			sizeof ( PageDescProgNameTable ) / sizeof ( SwTableEntry ) );
1074cdf0e10cSrcweir }
1075cdf0e10cSrcweir 
GetNumRuleProgNameArray()1076cdf0e10cSrcweir const SvStringsDtor& SwStyleNameMapper::GetNumRuleProgNameArray()
1077cdf0e10cSrcweir {
1078cdf0e10cSrcweir 	return pNumRuleProgNameArray ? *pNumRuleProgNameArray :
1079cdf0e10cSrcweir 		   *NewProgNameArray( pNumRuleProgNameArray, NumRuleProgNameTable,
1080cdf0e10cSrcweir 			sizeof ( NumRuleProgNameTable ) / sizeof ( SwTableEntry ) );
1081cdf0e10cSrcweir }
1082cdf0e10cSrcweir 
1083cdf0e10cSrcweir 
GetSpecialExtraProgName(const String & rExtraUIName)1084cdf0e10cSrcweir const String SwStyleNameMapper::GetSpecialExtraProgName( const String& rExtraUIName )
1085cdf0e10cSrcweir {
1086cdf0e10cSrcweir     String aRes = rExtraUIName;
1087cdf0e10cSrcweir     sal_Bool bChgName = sal_False;
1088cdf0e10cSrcweir     const SvStringsDtor& rExtraArr = GetExtraUINameArray();
1089cdf0e10cSrcweir     static sal_uInt16 nIds[] =
1090cdf0e10cSrcweir     {
1091cdf0e10cSrcweir         RES_POOLCOLL_LABEL_DRAWING - RES_POOLCOLL_EXTRA_BEGIN,
1092cdf0e10cSrcweir         RES_POOLCOLL_LABEL_ABB - RES_POOLCOLL_EXTRA_BEGIN,
1093cdf0e10cSrcweir         RES_POOLCOLL_LABEL_TABLE - RES_POOLCOLL_EXTRA_BEGIN,
1094cdf0e10cSrcweir         RES_POOLCOLL_LABEL_FRAME- RES_POOLCOLL_EXTRA_BEGIN,
1095cdf0e10cSrcweir         0
1096cdf0e10cSrcweir     };
1097cdf0e10cSrcweir     const sal_uInt16 * pIds;
1098cdf0e10cSrcweir     for ( pIds = nIds; *pIds; ++pIds)
1099cdf0e10cSrcweir     {
1100cdf0e10cSrcweir         if (aRes == *rExtraArr[ *pIds ])
1101cdf0e10cSrcweir         {
1102cdf0e10cSrcweir             bChgName = sal_True;
1103cdf0e10cSrcweir             break;
1104cdf0e10cSrcweir         }
1105cdf0e10cSrcweir     }
1106cdf0e10cSrcweir     if (bChgName)
1107cdf0e10cSrcweir         aRes = *GetExtraProgNameArray()[*pIds];
1108cdf0e10cSrcweir     return aRes;
1109cdf0e10cSrcweir }
1110cdf0e10cSrcweir 
GetSpecialExtraUIName(const String & rExtraProgName)1111cdf0e10cSrcweir const String SwStyleNameMapper::GetSpecialExtraUIName( const String& rExtraProgName )
1112cdf0e10cSrcweir {
1113cdf0e10cSrcweir     String aRes = rExtraProgName;
1114cdf0e10cSrcweir     sal_Bool bChgName = sal_False;
1115cdf0e10cSrcweir     const SvStringsDtor& rExtraArr = GetExtraProgNameArray();
1116cdf0e10cSrcweir     static sal_uInt16 nIds[] =
1117cdf0e10cSrcweir     {
1118cdf0e10cSrcweir         RES_POOLCOLL_LABEL_DRAWING - RES_POOLCOLL_EXTRA_BEGIN,
1119cdf0e10cSrcweir         RES_POOLCOLL_LABEL_ABB - RES_POOLCOLL_EXTRA_BEGIN,
1120cdf0e10cSrcweir         RES_POOLCOLL_LABEL_TABLE - RES_POOLCOLL_EXTRA_BEGIN,
1121cdf0e10cSrcweir         RES_POOLCOLL_LABEL_FRAME- RES_POOLCOLL_EXTRA_BEGIN,
1122cdf0e10cSrcweir         0
1123cdf0e10cSrcweir     };
1124cdf0e10cSrcweir     const sal_uInt16 * pIds;
1125cdf0e10cSrcweir 
1126cdf0e10cSrcweir     for ( pIds = nIds; *pIds; ++pIds)
1127cdf0e10cSrcweir     {
1128cdf0e10cSrcweir         if (aRes == *rExtraArr[ *pIds ])
1129cdf0e10cSrcweir         {
1130cdf0e10cSrcweir             bChgName = sal_True;
1131cdf0e10cSrcweir             break;
1132cdf0e10cSrcweir         }
1133cdf0e10cSrcweir     }
1134cdf0e10cSrcweir     if (bChgName)
1135cdf0e10cSrcweir         aRes = *GetExtraUINameArray()[*pIds];
1136cdf0e10cSrcweir     return aRes;
1137cdf0e10cSrcweir }
1138cdf0e10cSrcweir 
1139