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 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 76 SvxAutoCorrCfg::~SvxAutoCorrCfg() 77 { 78 delete pAutoCorrect; 79 } 80 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 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 239 SvxBaseAutoCorrCfg::~SvxBaseAutoCorrCfg() 240 { 241 } 242 /*-- 12.10.00 11:44:20--------------------------------------------------- 243 244 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 330 void SvxBaseAutoCorrCfg::Notify( const Sequence<OUString>& /* aPropertyNames */) 331 { 332 Load(sal_False); 333 } 334 /*-- 12.10.00 11:51:48--------------------------------------------------- 335 336 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 556 SvxSwAutoCorrCfg::~SvxSwAutoCorrCfg() 557 { 558 } 559 /*-- 12.10.00 11:51:48--------------------------------------------------- 560 561 -----------------------------------------------------------------------*/ 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 -----------------------------------------------------------------------*/ 661 void SvxSwAutoCorrCfg::Notify( const Sequence<OUString>& /* aPropertyNames */ ) 662 { 663 Load(sal_False); 664 } 665 666 SvxAutoCorrCfg* SvxAutoCorrCfg::Get() 667 { 668 if( !pAutoCorrCfg ) 669 pAutoCorrCfg = new SvxAutoCorrCfg; 670 return pAutoCorrCfg; 671 } 672