xref: /aoo4110/main/editeng/source/misc/acorrcfg.cxx (revision b1cdbd2c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_editeng.hxx"
26 
27 #include <editeng/acorrcfg.hxx>
28 #include <tools/debug.hxx>
29 #include <tools/urlobj.hxx>
30 #include <unotools/pathoptions.hxx>
31 #include <svl/urihelper.hxx>
32 
33 #include <editeng/svxacorr.hxx>
34 #include <com/sun/star/uno/Any.hxx>
35 #include <com/sun/star/uno/Sequence.hxx>
36 
37 using namespace utl;
38 using namespace rtl;
39 using namespace com::sun::star::uno;
40 
41 #define C2U(cChar) OUString::createFromAscii(cChar)
42 
43 static SvxAutoCorrCfg* pAutoCorrCfg = 0;
44 
45 /*--------------------------------------------------------------------
46 	Beschreibung:	Ctor Dtor
47  --------------------------------------------------------------------*/
48 
SvxAutoCorrCfg()49 SvxAutoCorrCfg::SvxAutoCorrCfg() :
50 	aBaseConfig(*this),
51 	aSwConfig(*this),
52 	bFileRel(sal_True),
53 	bNetRel(sal_True),
54 	bAutoTextTip(sal_True),
55 	bAutoTextPreview(sal_False),
56     bAutoFmtByInput(sal_True),
57     bSearchInAllCategories(sal_False)
58 {
59 	SvtPathOptions aPathOpt;
60 	String sSharePath, sUserPath, sAutoPath( aPathOpt.GetAutoCorrectPath() );
61 
62 	String* pS = &sSharePath;
63 	for( sal_uInt16 n = 0; n < 2; ++n, pS = &sUserPath )
64 	{
65     	*pS = sAutoPath.GetToken( n, ';' );
66         INetURLObject aPath( *pS );
67     	aPath.insertName( String::CreateFromAscii("acor") );
68 		*pS = aPath.GetMainURL(INetURLObject::DECODE_TO_IURI);
69 	}
70     pAutoCorrect = new SvxAutoCorrect( sSharePath, sUserPath );
71 
72 	aBaseConfig.Load(sal_True);
73 	aSwConfig.Load(sal_True);
74 }
75 
~SvxAutoCorrCfg()76 SvxAutoCorrCfg::~SvxAutoCorrCfg()
77 {
78 	delete pAutoCorrect;
79 }
80 
SetAutoCorrect(SvxAutoCorrect * pNew)81 void SvxAutoCorrCfg::SetAutoCorrect( SvxAutoCorrect* pNew )
82 {
83 	if( pNew && pNew != pAutoCorrect )
84 	{
85 		if( pAutoCorrect->GetFlags() != pNew->GetFlags() )
86 		{
87 			aBaseConfig.SetModified();
88 			aSwConfig.SetModified();
89 		}
90 		delete pAutoCorrect;
91 		pAutoCorrect = pNew;
92 	}
93 }
94 /*-- 12.10.00 11:44:17---------------------------------------------------
95 
96   -----------------------------------------------------------------------*/
GetPropertyNames()97 Sequence<OUString> 	SvxBaseAutoCorrCfg::GetPropertyNames()
98 {
99 	static const char* aPropNames[] =
100 	{
101 		"Exceptions/TwoCapitalsAtStart",		//  0
102 		"Exceptions/CapitalAtStartSentence",	//  1
103 		"UseReplacementTable",					//  2
104 		"TwoCapitalsAtStart",					//  3
105 		"CapitalAtStartSentence",				//  4
106 		"ChangeUnderlineWeight",				//  5
107 		"SetInetAttribute",						//  6
108 		"ChangeOrdinalNumber",					//  7
109         "AddNonBreakingSpace",                  //  8
110 		"ChangeDash",							//  9
111 		"RemoveDoubleSpaces",					// 10
112 		"ReplaceSingleQuote",					// 11
113 		"SingleQuoteAtStart",					// 12
114 		"SingleQuoteAtEnd",						// 13
115 		"ReplaceDoubleQuote",					// 14
116 		"DoubleQuoteAtStart",					// 15
117 		"DoubleQuoteAtEnd"						// 16
118 	};
119 	const int nCount = 17;
120 	Sequence<OUString> aNames(nCount);
121 	OUString* pNames = aNames.getArray();
122 	for(int i = 0; i < nCount; i++)
123 		pNames[i] = OUString::createFromAscii(aPropNames[i]);
124 	return aNames;
125 }
126 /*-- 12.10.00 11:44:18---------------------------------------------------
127 
128   -----------------------------------------------------------------------*/
Load(sal_Bool bInit)129 void SvxBaseAutoCorrCfg::Load(sal_Bool bInit)
130 {
131 	Sequence<OUString> aNames = GetPropertyNames();
132 	Sequence<Any> aValues = GetProperties(aNames);
133 	if(bInit)
134 		EnableNotification(aNames);
135 	const Any* pValues = aValues.getConstArray();
136 	DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed");
137 	if(aValues.getLength() == aNames.getLength())
138 	{
139 		long nFlags = 0;		// default alles aus
140 		sal_Int32 nTemp = 0;
141 		for(int nProp = 0; nProp < aNames.getLength(); nProp++)
142 		{
143 			if(pValues[nProp].hasValue())
144 			{
145 				switch(nProp)
146 				{
147 					case  0:
148 						if(*(sal_Bool*)pValues[nProp].getValue())
149 							nFlags |= SaveWordCplSttLst;
150 					break;//"Exceptions/TwoCapitalsAtStart",
151 					case  1:
152 						if(*(sal_Bool*)pValues[nProp].getValue())
153 							nFlags |= SaveWordWrdSttLst;
154 					break;//"Exceptions/CapitalAtStartSentence",
155 					case  2:
156 						if(*(sal_Bool*)pValues[nProp].getValue())
157 							nFlags |= Autocorrect;
158 					break;//"UseReplacementTable",
159 					case  3:
160 						if(*(sal_Bool*)pValues[nProp].getValue())
161 							nFlags |= CptlSttWrd;
162 					break;//"TwoCapitalsAtStart",
163 					case  4:
164 						if(*(sal_Bool*)pValues[nProp].getValue())
165 							nFlags |= CptlSttSntnc;
166 					break;//"CapitalAtStartSentence",
167 					case  5:
168 						if(*(sal_Bool*)pValues[nProp].getValue())
169 							nFlags |= ChgWeightUnderl;
170 					break;//"ChangeUnderlineWeight",
171 					case  6:
172 						if(*(sal_Bool*)pValues[nProp].getValue())
173 							nFlags |= SetINetAttr;
174 					break;//"SetInetAttribute",
175 					case  7:
176 						if(*(sal_Bool*)pValues[nProp].getValue())
177 							nFlags |= ChgOrdinalNumber;
178 					break;//"ChangeOrdinalNumber",
179                     case 8:
180                         if(*(sal_Bool*)pValues[nProp].getValue())
181                              nFlags |= AddNonBrkSpace;
182                     break;//"AddNonBreakingSpace"
183 					case  9:
184 						if(*(sal_Bool*)pValues[nProp].getValue())
185 							nFlags |= ChgToEnEmDash;
186 					break;//"ChangeDash",
187 					case 10:
188 						if(*(sal_Bool*)pValues[nProp].getValue())
189 							nFlags |= IgnoreDoubleSpace;
190 					break;//"RemoveDoubleSpaces",
191 					case 11:
192 						if(*(sal_Bool*)pValues[nProp].getValue())
193 							nFlags |= ChgSglQuotes;
194 					break;//"ReplaceSingleQuote",
195 					case 12:
196 						pValues[nProp] >>= nTemp;
197 						rParent.pAutoCorrect->SetStartSingleQuote(
198                             sal::static_int_cast< sal_Unicode >( nTemp ) );
199 					break;//"SingleQuoteAtStart",
200 					case 13:
201 						pValues[nProp] >>= nTemp;
202 						rParent.pAutoCorrect->SetEndSingleQuote(
203                             sal::static_int_cast< sal_Unicode >( nTemp ) );
204 					break;//"SingleQuoteAtEnd",
205 					case 14:
206 						if(*(sal_Bool*)pValues[nProp].getValue())
207 							nFlags |= ChgQuotes;
208 					break;//"ReplaceDoubleQuote",
209 					case 15:
210 						pValues[nProp] >>= nTemp;
211 						rParent.pAutoCorrect->SetStartDoubleQuote(
212                             sal::static_int_cast< sal_Unicode >( nTemp ) );
213 					break;//"DoubleQuoteAtStart",
214 					case 16:
215 						pValues[nProp] >>= nTemp;
216 						rParent.pAutoCorrect->SetEndDoubleQuote(
217                             sal::static_int_cast< sal_Unicode >( nTemp ) );
218 					break;//"DoubleQuoteAtEnd"
219 				}
220 			}
221 		}
222 		if( nFlags )
223 			rParent.pAutoCorrect->SetAutoCorrFlag( nFlags, sal_True );
224 		rParent.pAutoCorrect->SetAutoCorrFlag( ( 0xffff & ~nFlags ), sal_False );
225 
226 	}
227 }
228 /*-- 12.10.00 11:44:19---------------------------------------------------
229 
230   -----------------------------------------------------------------------*/
SvxBaseAutoCorrCfg(SvxAutoCorrCfg & rPar)231 SvxBaseAutoCorrCfg::SvxBaseAutoCorrCfg(SvxAutoCorrCfg& rPar) :
232 	utl::ConfigItem(C2U("Office.Common/AutoCorrect")),
233 	rParent(rPar)
234 {
235 }
236 /*-- 12.10.00 11:44:19---------------------------------------------------
237 
238   -----------------------------------------------------------------------*/
~SvxBaseAutoCorrCfg()239 SvxBaseAutoCorrCfg::~SvxBaseAutoCorrCfg()
240 {
241 }
242 /*-- 12.10.00 11:44:20---------------------------------------------------
243 
244   -----------------------------------------------------------------------*/
Commit()245 void SvxBaseAutoCorrCfg::Commit()
246 {
247 	Sequence<OUString> aNames( GetPropertyNames() );
248 
249 	Sequence<Any> aValues(aNames.getLength());
250 	Any* pValues = aValues.getArray();
251 
252 	const Type& rType = ::getBooleanCppuType();
253 	sal_Bool bVal;
254 	const long nFlags = rParent.pAutoCorrect->GetFlags();
255 	for(int nProp = 0; nProp < aNames.getLength(); nProp++)
256 	{
257 		switch(nProp)
258 		{
259 			case  0:
260                 bVal = 0 != (nFlags & SaveWordCplSttLst);
261 				pValues[nProp].setValue(&bVal, rType);
262 			break;//"Exceptions/TwoCapitalsAtStart",
263 			case  1:
264                 bVal = 0 != (nFlags & SaveWordWrdSttLst);
265 				pValues[nProp].setValue(&bVal, rType);
266 			break;//"Exceptions/CapitalAtStartSentence",
267 			case  2:
268                 bVal = 0 != (nFlags & Autocorrect);
269 				pValues[nProp].setValue(&bVal, rType);
270 			break;//"UseReplacementTable",
271 			case  3:
272                 bVal = 0 != (nFlags & CptlSttWrd);
273 				pValues[nProp].setValue(&bVal, rType);
274 			break;//"TwoCapitalsAtStart",
275 			case  4:
276                 bVal = 0 != (nFlags & CptlSttSntnc);
277 				pValues[nProp].setValue(&bVal, rType);
278 			break;//"CapitalAtStartSentence",
279 			case  5:
280                 bVal = 0 != (nFlags & ChgWeightUnderl);
281 				pValues[nProp].setValue(&bVal, rType);
282 			break;//"ChangeUnderlineWeight",
283 			case  6:
284                 bVal = 0 != (nFlags & SetINetAttr);
285 				pValues[nProp].setValue(&bVal, rType);
286 			break;//"SetInetAttribute",
287 			case  7:
288                 bVal = 0 != (nFlags & ChgOrdinalNumber);
289 				pValues[nProp].setValue(&bVal, rType);
290 			break;//"ChangeOrdinalNumber",
291 			case 8:
292                 bVal = 0 != (nFlags & AddNonBrkSpace);
293                 pValues[nProp].setValue(&bVal, rType);
294 			break;//"AddNonBreakingSpace"
295 			case  9:
296                 bVal = 0 != (nFlags & ChgToEnEmDash);
297 				pValues[nProp].setValue(&bVal, rType);
298 			break;//"ChangeDash",
299 			case 10:
300                 bVal = 0 != (nFlags & IgnoreDoubleSpace);
301 				pValues[nProp].setValue(&bVal, rType);
302 			break;//"RemoveDoubleSpaces",
303 			case 11:
304                 bVal = 0 != (nFlags & ChgSglQuotes);
305 				pValues[nProp].setValue(&bVal, rType);
306 			break;//"ReplaceSingleQuote",
307 			case 12:
308 				pValues[nProp] <<= (sal_Int32)rParent.pAutoCorrect->GetStartSingleQuote();
309 			break;//"SingleQuoteAtStart",
310 			case 13:
311 				pValues[nProp] <<= (sal_Int32) rParent.pAutoCorrect->GetEndSingleQuote();
312 			break;//"SingleQuoteAtEnd",
313 			case 14:
314                 bVal = 0 != (nFlags & ChgQuotes);
315 				pValues[nProp].setValue(&bVal, rType);
316 			break;//"ReplaceDoubleQuote",
317 			case 15:
318 				pValues[nProp] <<= (sal_Int32) rParent.pAutoCorrect->GetStartDoubleQuote();
319 			break;//"DoubleQuoteAtStart",
320 			case 16:
321 				pValues[nProp] <<= (sal_Int32) rParent.pAutoCorrect->GetEndDoubleQuote();
322 			break;//"DoubleQuoteAtEnd"
323 		}
324 	}
325 	PutProperties(aNames, aValues);
326 }
327 /*-- 12.10.00 11:44:21---------------------------------------------------
328 
329   -----------------------------------------------------------------------*/
Notify(const Sequence<OUString> &)330 void SvxBaseAutoCorrCfg::Notify( const Sequence<OUString>& /* aPropertyNames */)
331 {
332 	Load(sal_False);
333 }
334 /*-- 12.10.00 11:51:48---------------------------------------------------
335 
336   -----------------------------------------------------------------------*/
GetPropertyNames()337 Sequence<OUString> 	SvxSwAutoCorrCfg::GetPropertyNames()
338 {
339 	static const char* aPropNames[] =
340 	{
341 		"Text/FileLinks",							  // 0
342 		"Text/InternetLinks",						  // 1
343 		"Text/ShowPreview",							  // 2
344 		"Text/ShowToolTip",							  // 3
345         "Text/SearchInAllCategories",                                   // 4
346         "Format/Option/UseReplacementTable",                            // 5
347         "Format/Option/TwoCapitalsAtStart",                             // 6
348         "Format/Option/CapitalAtStartSentence",                         // 7
349         "Format/Option/ChangeUnderlineWeight",                          // 8
350         "Format/Option/SetInetAttribute",                               // 9
351         "Format/Option/ChangeOrdinalNumber",                            //10
352         "Format/Option/AddNonBreakingSpace",                            //11
353         "Format/Option/ChangeDash",                                     //12
354         "Format/Option/DelEmptyParagraphs",                             //13
355         "Format/Option/ReplaceUserStyle",                               //14
356         "Format/Option/ChangeToBullets/Enable",                         //15
357         "Format/Option/ChangeToBullets/SpecialCharacter/Char",          //16
358         "Format/Option/ChangeToBullets/SpecialCharacter/Font",          //17
359         "Format/Option/ChangeToBullets/SpecialCharacter/FontFamily",    //18
360         "Format/Option/ChangeToBullets/SpecialCharacter/FontCharset",   //19
361         "Format/Option/ChangeToBullets/SpecialCharacter/FontPitch",     //20
362         "Format/Option/CombineParagraphs",                              //21
363         "Format/Option/CombineValue",                                   //22
364         "Format/Option/DelSpacesAtStartEnd",                            //23
365         "Format/Option/DelSpacesBetween",                               //24
366         "Format/ByInput/Enable",                                        //25
367         "Format/ByInput/ChangeDash",                                    //26
368         "Format/ByInput/ApplyNumbering/Enable",                         //27
369         "Format/ByInput/ChangeToBorders",                               //28
370         "Format/ByInput/ChangeToTable",                                 //29
371         "Format/ByInput/ReplaceStyle",                                  //30
372         "Format/ByInput/DelSpacesAtStartEnd",                           //31
373         "Format/ByInput/DelSpacesBetween",                              //32
374         "Completion/Enable",                                            //33
375         "Completion/MinWordLen",                                        //34
376         "Completion/MaxListLen",                                        //35
377         "Completion/CollectWords",                                      //36
378         "Completion/EndlessList",                                       //37
379         "Completion/AppendBlank",                                       //38
380         "Completion/ShowAsTip",                                         //39
381         "Completion/AcceptKey",                                         //40
382         "Completion/KeepList",                                          //41
383         "Format/ByInput/ApplyNumbering/SpecialCharacter/Char",          //42
384         "Format/ByInput/ApplyNumbering/SpecialCharacter/Font",          //43
385         "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily",    //44
386         "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset",   //45
387         "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch"      //46
388 	};
389     const int nCount = 47;
390 	Sequence<OUString> aNames(nCount);
391 	OUString* pNames = aNames.getArray();
392 	for(int i = 0; i < nCount; i++)
393 		pNames[i] = OUString::createFromAscii(aPropNames[i]);
394 	return aNames;
395 }
396 /*-- 12.10.00 11:51:48---------------------------------------------------
397 
398   -----------------------------------------------------------------------*/
Load(sal_Bool bInit)399 void SvxSwAutoCorrCfg::Load(sal_Bool bInit)
400 {
401 	Sequence<OUString> aNames = GetPropertyNames();
402 	Sequence<Any> aValues = GetProperties(aNames);
403 	if(bInit)
404 		EnableNotification(aNames);
405 	const Any* pValues = aValues.getConstArray();
406 	DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed");
407 	if(aValues.getLength() == aNames.getLength())
408 	{
409 		SvxSwAutoFmtFlags& rSwFlags = rParent.pAutoCorrect->GetSwFlags();
410 		for(int nProp = 0; nProp < aNames.getLength(); nProp++)
411 		{
412 			if(pValues[nProp].hasValue())
413 			{
414 				switch(nProp)
415 				{
416 					case   0: rParent.bFileRel = *(sal_Bool*)pValues[nProp].getValue(); break; // "Text/FileLinks",
417 					case   1: rParent.bNetRel = *(sal_Bool*)pValues[nProp].getValue();  break; // "Text/InternetLinks",
418 					case   2: rParent.bAutoTextPreview = *(sal_Bool*)pValues[nProp].getValue(); break; // "Text/ShowPreview",
419 					case   3: rParent.bAutoTextTip = *(sal_Bool*)pValues[nProp].getValue();  break; // "Text/ShowToolTip",
420                     case   4: rParent.bSearchInAllCategories = *(sal_Bool*)pValues[nProp].getValue();  break; //"Text/SearchInAllCategories"
421                     case   5: rSwFlags.bAutoCorrect = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/UseReplacementTable",
422                     case   6: rSwFlags.bCptlSttSntnc = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/TwoCapitalsAtStart",
423                     case   7: rSwFlags.bCptlSttWrd = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/CapitalAtStartSentence",
424                     case   8: rSwFlags.bChgWeightUnderl = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeUnderlineWeight",
425                     case   9: rSwFlags.bSetINetAttr = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/SetInetAttribute",
426                     case  10: rSwFlags.bChgOrdinalNumber = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeOrdinalNumber",
427                     case  11: rSwFlags.bAddNonBrkSpace = *(sal_Bool*)pValues[nProp].getValue( ); break; // "Format/Option/AddNonBreakingSpace",
428 // it doesn't exist here - the common flags are used for that -> LM
429 //                  case  12: rSwFlags.bChgToEnEmDash = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeDash",
430                     case  13: rSwFlags.bDelEmptyNode = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelEmptyParagraphs",
431                     case  14: rSwFlags.bChgUserColl = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ReplaceUserStyle",
432                     case  15: rSwFlags.bChgEnumNum = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeToBullets/Enable",
433                     case  16:
434 					{
435 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
436 						rSwFlags.cBullet =
437                             sal::static_int_cast< sal_Unicode >(nVal);
438 					}
439 					break; // "Format/Option/ChangeToBullets/SpecialCharacter/Char",
440                     case  17:
441 					{
442 						OUString sTemp; pValues[nProp] >>= sTemp;
443 						rSwFlags.aBulletFont.SetName(sTemp);
444 					}
445 					break; // "Format/Option/ChangeToBullets/SpecialCharacter/Font",
446                     case  18:
447 					{
448 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
449 						rSwFlags.aBulletFont.SetFamily(FontFamily(nVal));
450 					}
451 					break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontFamily",
452                     case  19:
453 					{
454 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
455 						rSwFlags.aBulletFont.SetCharSet(CharSet(nVal));
456 					}
457 					break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontCharset",
458                     case  20:
459 					{
460                                             sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
461 						rSwFlags.aBulletFont.SetPitch(FontPitch(nVal));
462 					}
463 					break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontPitch",
464                     case  21: rSwFlags.bRightMargin = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/CombineParagraphs",
465                     case  22:
466 					{
467 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
468 						rSwFlags.nRightMargin =
469                             sal::static_int_cast< sal_uInt8 >(nVal);
470 					}
471 					break; // "Format/Option/CombineValue",
472                     case  23: rSwFlags.bAFmtDelSpacesAtSttEnd =  *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelSpacesAtStartEnd",
473                     case  24: rSwFlags.bAFmtDelSpacesBetweenLines = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelSpacesBetween",
474                     case  25: rParent.bAutoFmtByInput = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/Enable",
475                     case  26: rSwFlags.bChgToEnEmDash = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeDash",
476                     case  27: rSwFlags.bSetNumRule = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ApplyNumbering/Enable",
477                     case  28: rSwFlags.bSetBorder = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeToBorders",
478                     case  29: rSwFlags.bCreateTable = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeToTable",
479                     case  30: rSwFlags.bReplaceStyles =  *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ReplaceStyle",
480                     case  31: rSwFlags.bAFmtByInpDelSpacesAtSttEnd =  *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/DelSpacesAtStartEnd",
481                     case  32: rSwFlags.bAFmtByInpDelSpacesBetweenLines = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/DelSpacesBetween",
482                     case  33: rSwFlags.bAutoCompleteWords = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/Enable",
483                     case  34:
484 					{
485 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
486 						rSwFlags.nAutoCmpltWordLen =
487                             sal::static_int_cast< sal_uInt16 >(nVal);
488 					}
489 					break; // "Completion/MinWordLen",
490                     case  35:
491 					{
492 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
493 						rSwFlags.nAutoCmpltListLen =
494                             sal::static_int_cast< sal_uInt16 >(nVal);
495 					}
496 					break; // "Completion/MaxListLen",
497                     case  36: rSwFlags.bAutoCmpltCollectWords = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/CollectWords",
498                     case  37: rSwFlags.bAutoCmpltEndless = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/EndlessList",
499                     case  38: rSwFlags.bAutoCmpltAppendBlanc = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/AppendBlank",
500                     case  39: rSwFlags.bAutoCmpltShowAsTip = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/ShowAsTip",
501                     case  40:
502 					{
503 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
504 						rSwFlags.nAutoCmpltExpandKey =
505                             sal::static_int_cast< sal_uInt16 >(nVal);
506 					}
507 					break; // "Completion/AcceptKey"
508                     case 41 :rSwFlags.bAutoCmpltKeepList = *(sal_Bool*)pValues[nProp].getValue(); break;//"Completion/KeepList"
509                     case 42 :
510 					{
511 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
512 						rSwFlags.cByInputBullet =
513                             sal::static_int_cast< sal_Unicode >(nVal);
514 					}
515 					break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Char",
516                     case 43 :
517 					{
518 						OUString sTemp; pValues[nProp] >>= sTemp;
519 						rSwFlags.aByInputBulletFont.SetName(sTemp);
520 					}
521 					break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Font",
522                     case 44 :
523 					{
524 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
525 						rSwFlags.aByInputBulletFont.SetFamily(FontFamily(nVal));
526 					}
527 					break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily",
528                     case 45 :
529 					{
530 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
531 						rSwFlags.aByInputBulletFont.SetCharSet(CharSet(nVal));
532 					}
533 					break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset",
534                     case 46 :
535 					{
536 						sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
537 						rSwFlags.aByInputBulletFont.SetPitch(FontPitch(nVal));
538 					}
539 					break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch",
540 				}
541 			}
542 		}
543 	}
544 }
545 /*-- 12.10.00 11:51:48---------------------------------------------------
546 
547   -----------------------------------------------------------------------*/
SvxSwAutoCorrCfg(SvxAutoCorrCfg & rPar)548 SvxSwAutoCorrCfg::SvxSwAutoCorrCfg(SvxAutoCorrCfg& rPar) :
549 	utl::ConfigItem(C2U("Office.Writer/AutoFunction")),
550 	rParent(rPar)
551 {
552 }
553 /*-- 12.10.00 11:51:48---------------------------------------------------
554 
555   -----------------------------------------------------------------------*/
~SvxSwAutoCorrCfg()556 SvxSwAutoCorrCfg::~SvxSwAutoCorrCfg()
557 {
558 }
559 /*-- 12.10.00 11:51:48---------------------------------------------------
560 
561   -----------------------------------------------------------------------*/
Commit()562 void SvxSwAutoCorrCfg::Commit()
563 {
564 	Sequence<OUString> aNames = GetPropertyNames();
565 
566 	Sequence<Any> aValues(aNames.getLength());
567 	Any* pValues = aValues.getArray();
568 
569 	const Type& rType = ::getBooleanCppuType();
570 	sal_Bool bVal;
571 	SvxSwAutoFmtFlags& rSwFlags = rParent.pAutoCorrect->GetSwFlags();
572 	for(int nProp = 0; nProp < aNames.getLength(); nProp++)
573 	{
574 		switch(nProp)
575 		{
576 			case   0: pValues[nProp].setValue(&rParent.bFileRel, rType); break; // "Text/FileLinks",
577 			case   1: pValues[nProp].setValue(&rParent.bNetRel, rType);   break; // "Text/InternetLinks",
578 			case   2: pValues[nProp].setValue(&rParent.bAutoTextPreview, rType); break; // "Text/ShowPreview",
579 			case   3: pValues[nProp].setValue(&rParent.bAutoTextTip, rType); break; // "Text/ShowToolTip",
580             case   4: pValues[nProp].setValue(&rParent.bSearchInAllCategories, rType );break; //"Text/SearchInAllCategories"
581             case   5: bVal = rSwFlags.bAutoCorrect; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/UseReplacementTable",
582             case   6: bVal = rSwFlags.bCptlSttSntnc; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/TwoCapitalsAtStart",
583             case   7: bVal = rSwFlags.bCptlSttWrd; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/CapitalAtStartSentence",
584             case   8: bVal = rSwFlags.bChgWeightUnderl; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ChangeUnderlineWeight",
585             case   9: bVal = rSwFlags.bSetINetAttr; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/SetInetAttribute",
586             case  10: bVal = rSwFlags.bChgOrdinalNumber; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ChangeOrdinalNumber",
587             case  11: bVal = rSwFlags.bAddNonBrkSpace;  pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/AddNonBreakingSpace",
588 // it doesn't exist here - the common flags are used for that -> LM
589             case  12:
590 				bVal = sal_True;  pValues[nProp].setValue(&bVal, rType);
591 			break; // "Format/Option/ChangeDash",
592             case  13: bVal = rSwFlags.bDelEmptyNode; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/DelEmptyParagraphs",
593             case  14: bVal = rSwFlags.bChgUserColl; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ReplaceUserStyle",
594             case  15: bVal = rSwFlags.bChgEnumNum; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ChangeToBullets/Enable",
595             case  16:
596 				pValues[nProp] <<= (sal_Int32)rSwFlags.cBullet;
597 			break; // "Format/Option/ChangeToBullets/SpecialCharacter/Char",
598             case  17:
599 				pValues[nProp] <<= OUString(rSwFlags.aBulletFont.GetName());
600 			break; // "Format/Option/ChangeToBullets/SpecialCharacter/Font",
601             case  18:
602 				pValues[nProp] <<= (sal_Int32)rSwFlags.aBulletFont.GetFamily();
603 			break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontFamily",
604             case  19:
605 				pValues[nProp] <<= (sal_Int32)rSwFlags.aBulletFont.GetCharSet();
606 			break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontCharset",
607             case  20:
608 				pValues[nProp] <<= (sal_Int32)rSwFlags.aBulletFont.GetPitch();
609 			break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontPitch",
610             case  21: bVal = rSwFlags.bRightMargin; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/CombineParagraphs",
611             case  22:
612 				pValues[nProp] <<= (sal_Int32)rSwFlags.nRightMargin;
613 			break; // "Format/Option/CombineValue",
614             case  23: bVal = rSwFlags.bAFmtDelSpacesAtSttEnd; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/DelSpacesAtStartEnd",
615             case  24: bVal = rSwFlags.bAFmtDelSpacesBetweenLines; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/DelSpacesBetween",
616             case  25: bVal = rParent.bAutoFmtByInput; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/Enable",
617             case  26: bVal = rSwFlags.bChgToEnEmDash; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeDash",
618             case  27: bVal = rSwFlags.bSetNumRule; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ApplyNumbering/Enable",
619             case  28: bVal = rSwFlags.bSetBorder; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeToBorders",
620             case  29: bVal = rSwFlags.bCreateTable; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeToTable",
621             case  30: bVal = rSwFlags.bReplaceStyles; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ReplaceStyle",
622             case  31: bVal = rSwFlags.bAFmtByInpDelSpacesAtSttEnd; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/DelSpacesAtStartEnd",
623             case  32: bVal = rSwFlags.bAFmtByInpDelSpacesBetweenLines; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/DelSpacesBetween",
624             case  33: bVal = rSwFlags.bAutoCompleteWords; pValues[nProp].setValue(&bVal, rType); break; // "Completion/Enable",
625             case  34:
626 				pValues[nProp] <<= (sal_Int32)rSwFlags.nAutoCmpltWordLen;
627 			break; // "Completion/MinWordLen",
628             case  35:
629 				pValues[nProp] <<= (sal_Int32)rSwFlags.nAutoCmpltListLen;
630 			break; // "Completion/MaxListLen",
631             case  36: bVal = rSwFlags.bAutoCmpltCollectWords; pValues[nProp].setValue(&bVal, rType); break; // "Completion/CollectWords",
632             case  37: bVal = rSwFlags.bAutoCmpltEndless; pValues[nProp].setValue(&bVal, rType); break; // "Completion/EndlessList",
633             case  38: bVal = rSwFlags.bAutoCmpltAppendBlanc; pValues[nProp].setValue(&bVal, rType); break; // "Completion/AppendBlank",
634             case  39: bVal = rSwFlags.bAutoCmpltShowAsTip; pValues[nProp].setValue(&bVal, rType); break; // "Completion/ShowAsTip",
635             case  40:
636 				pValues[nProp] <<= (sal_Int32)rSwFlags.nAutoCmpltExpandKey;
637 			break; // "Completion/AcceptKey"
638             case 41 :bVal = rSwFlags.bAutoCmpltKeepList; pValues[nProp].setValue(&bVal, rType); break;// "Completion/KeepList"
639             case 42 :
640 				pValues[nProp] <<= (sal_Int32)rSwFlags.cByInputBullet;
641 			break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Char",
642             case 43 :
643 				pValues[nProp] <<= OUString(rSwFlags.aByInputBulletFont.GetName());
644 			break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Font",
645             case 44 :
646 				pValues[nProp] <<= (sal_Int32)rSwFlags.aByInputBulletFont.GetFamily();
647 			break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily",
648             case 45 :
649 				pValues[nProp] <<= (sal_Int32)rSwFlags.aByInputBulletFont.GetCharSet();
650 			break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset",
651             case 46 :
652 				pValues[nProp] <<= (sal_Int32)rSwFlags.aByInputBulletFont.GetPitch();
653 			break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch",
654 		}
655 	}
656 	PutProperties(aNames, aValues);
657 }
658 /*-- 12.10.00 11:51:49---------------------------------------------------
659 
660   -----------------------------------------------------------------------*/
Notify(const Sequence<OUString> &)661 void SvxSwAutoCorrCfg::Notify( const Sequence<OUString>& /* aPropertyNames */ )
662 {
663 	Load(sal_False);
664 }
665 
Get()666 SvxAutoCorrCfg*	SvxAutoCorrCfg::Get()
667 {
668 	if( !pAutoCorrCfg )
669 		pAutoCorrCfg = new SvxAutoCorrCfg;
670 	return pAutoCorrCfg;
671 }
672