1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_sw.hxx" 30 31 32 #include <tools/stream.hxx> 33 #ifndef _RESID_HXX //autogen 34 #include <tools/resid.hxx> 35 #endif 36 #include <com/sun/star/uno/Any.hxx> 37 #include <com/sun/star/uno/Sequence.hxx> 38 #include <unotools/useroptions.hxx> 39 #include <tools/shl.hxx> 40 #include <swmodule.hxx> 41 #include "labimg.hxx" 42 #include "cmdid.h" 43 #include "swtypes.hxx" 44 #include <unomid.h> 45 46 using namespace utl; 47 using namespace rtl; 48 using namespace ::com::sun::star::uno; 49 50 51 // ---------------------------------------------------------------------------- 52 SwLabItem::SwLabItem() : 53 54 SfxPoolItem(FN_LABEL), 55 lLeft (0), 56 lUpper(0), 57 nCols (1), 58 nRows (1), 59 nCol (1), 60 nRow (1) 61 { 62 bAddr = bCont = bSynchron = sal_False; 63 bPage = sal_True; 64 lHDist = 65 lVDist = 66 lWidth = 67 lHeight = 5669; // 10 cm 68 } 69 70 // ---------------------------------------------------------------------------- 71 SwLabItem::SwLabItem(const SwLabItem& rItem) : 72 SfxPoolItem(FN_LABEL) 73 { 74 *this = rItem; 75 } 76 // ---------------------------------------------------------------------------- 77 SwLabItem& SwLabItem::operator =(const SwLabItem& rItem) 78 { 79 bAddr = rItem.bAddr; 80 aWriting = rItem.aWriting; 81 bCont = rItem.bCont; 82 sDBName = rItem.sDBName; 83 aLstMake = rItem.aLstMake; 84 aLstType = rItem.aLstType; 85 aMake = rItem.aMake; 86 aType = rItem.aType; 87 bPage = rItem.bPage; 88 bSynchron = rItem.bSynchron; 89 aBin = rItem.aBin; 90 nCol = rItem.nCol; 91 nRow = rItem.nRow; 92 lHDist = rItem.lHDist; 93 lVDist = rItem.lVDist; 94 lWidth = rItem.lWidth; 95 lHeight = rItem.lHeight; 96 lLeft = rItem.lLeft; 97 lUpper = rItem.lUpper; 98 nCols = rItem.nCols; 99 nRows = rItem.nRows; 100 aPrivFirstName = rItem.aPrivFirstName; 101 aPrivName = rItem.aPrivName; 102 aPrivShortCut = rItem.aPrivShortCut; 103 aPrivFirstName2 = rItem.aPrivFirstName2; 104 aPrivName2 = rItem.aPrivName2; 105 aPrivShortCut2 = rItem.aPrivShortCut2; 106 aPrivStreet = rItem.aPrivStreet; 107 aPrivZip = rItem.aPrivZip; 108 aPrivCity = rItem.aPrivCity; 109 aPrivCountry = rItem.aPrivCountry; 110 aPrivState = rItem.aPrivState; 111 aPrivTitle = rItem.aPrivTitle; 112 aPrivProfession = rItem.aPrivProfession; 113 aPrivPhone = rItem.aPrivPhone; 114 aPrivMobile = rItem.aPrivMobile; 115 aPrivFax = rItem.aPrivFax; 116 aPrivWWW = rItem.aPrivWWW; 117 aPrivMail = rItem.aPrivMail; 118 aCompCompany = rItem.aCompCompany; 119 aCompCompanyExt = rItem.aCompCompanyExt; 120 aCompSlogan = rItem.aCompSlogan; 121 aCompStreet = rItem.aCompStreet; 122 aCompZip = rItem.aCompZip; 123 aCompCity = rItem.aCompCity; 124 aCompCountry = rItem.aCompCountry; 125 aCompState = rItem.aCompState; 126 aCompPosition = rItem.aCompPosition; 127 aCompPhone = rItem.aCompPhone; 128 aCompMobile = rItem.aCompMobile; 129 aCompFax = rItem.aCompFax; 130 aCompWWW = rItem.aCompWWW; 131 aCompMail = rItem.aCompMail; 132 sGlossaryGroup = rItem.sGlossaryGroup; 133 sGlossaryBlockName = rItem.sGlossaryBlockName; 134 return *this; 135 } 136 137 // -------------------------------------------------------------------------- 138 139 140 141 int SwLabItem::operator ==(const SfxPoolItem& rItem) const 142 { 143 const SwLabItem& rLab = (const SwLabItem&) rItem; 144 145 return bAddr == rLab.bAddr && 146 bCont == rLab.bCont && 147 bPage == rLab.bPage && 148 bSynchron == rLab.bSynchron && 149 aBin == rLab.aBin && 150 nCol == rLab.nCol && 151 nRow == rLab.nRow && 152 lHDist == rLab.lHDist && 153 lVDist == rLab.lVDist && 154 lWidth == rLab.lWidth && 155 lHeight == rLab.lHeight && 156 lLeft == rLab.lLeft && 157 lUpper == rLab.lUpper && 158 nCols == rLab.nCols && 159 nRows == rLab.nRows && 160 aWriting == rLab.aWriting&& 161 aMake == rLab.aMake && 162 aType == rLab.aType && 163 aLstMake == rLab.aLstMake&& 164 aLstType == rLab.aLstType&& 165 sDBName == rLab.sDBName && 166 aPrivFirstName == rLab.aPrivFirstName&& 167 aPrivName == rLab.aPrivName&& 168 aPrivShortCut == rLab.aPrivShortCut&& 169 aPrivFirstName2 == rLab.aPrivFirstName2&& 170 aPrivName2 == rLab.aPrivName2&& 171 aPrivShortCut2 == rLab.aPrivShortCut2&& 172 aPrivStreet == rLab.aPrivStreet&& 173 aPrivZip == rLab.aPrivZip&& 174 aPrivCity == rLab.aPrivCity&& 175 aPrivCountry == rLab.aPrivCountry&& 176 aPrivState == rLab.aPrivState&& 177 aPrivTitle == rLab.aPrivTitle&& 178 aPrivProfession == rLab.aPrivProfession&& 179 aPrivPhone == rLab.aPrivPhone&& 180 aPrivMobile == rLab.aPrivMobile&& 181 aPrivFax == rLab.aPrivFax&& 182 aPrivWWW == rLab.aPrivWWW&& 183 aPrivMail == rLab.aPrivMail&& 184 aCompCompany == rLab.aCompCompany&& 185 aCompCompanyExt == rLab.aCompCompanyExt&& 186 aCompSlogan == rLab.aCompSlogan&& 187 aCompStreet == rLab.aCompStreet&& 188 aCompZip == rLab.aCompZip&& 189 aCompCity == rLab.aCompCity&& 190 aCompCountry == rLab.aCompCountry&& 191 aCompState == rLab.aCompState&& 192 aCompPosition == rLab.aCompPosition&& 193 aCompPhone == rLab.aCompPhone&& 194 aCompMobile == rLab.aCompMobile&& 195 aCompFax == rLab.aCompFax&& 196 aCompWWW == rLab.aCompWWW&& 197 aCompMail == rLab.aCompMail && 198 sGlossaryGroup == rLab.sGlossaryGroup && 199 sGlossaryBlockName == rLab.sGlossaryBlockName; 200 } 201 202 // -------------------------------------------------------------------------- 203 SfxPoolItem* SwLabItem::Clone(SfxItemPool*) const 204 { 205 return new SwLabItem(*this); 206 } 207 208 /* -----------------------------25.09.00 16:25-------------------------------- 209 210 ---------------------------------------------------------------------------*/ 211 Sequence<rtl::OUString> SwLabCfgItem::GetPropertyNames() 212 { 213 static const char* aLabelPropNames[] = 214 { 215 "Medium/Continous", // 0 216 "Medium/Brand", // 1 217 "Medium/Type", // 2 218 "Format/Column", // 3 219 "Format/Row", // 4 220 "Format/HorizontalDistance",// 5 221 "Format/VerticalDistance", // 6 222 "Format/Width", // 7 223 "Format/Height", // 8 224 "Format/LeftMargin", // 9 225 "Format/TopMargin", //10 226 "Option/Synchronize", //11 227 "Option/Page", //12 228 "Option/Column", //13 229 "Option/Row", //14 230 "Inscription/UseAddress", //15 231 "Inscription/Address", //16 232 "Inscription/Database" //17 233 }; 234 static const char* aBusinessPropNames[] = 235 { 236 "PrivateAddress/FirstName", // 0 237 "PrivateAddress/Name", // 1 238 "PrivateAddress/ShortCut", // 2 239 "PrivateAddress/SecondFirstName", // 3 240 "PrivateAddress/SecondName", // 4 241 "PrivateAddress/SecondShortCut", // 5 242 "PrivateAddress/Street", // 6 243 "PrivateAddress/Zip", // 7 244 "PrivateAddress/City", // 8 245 "PrivateAddress/Country", // 9 246 "PrivateAddress/State", // 10 247 "PrivateAddress/Title", // 11 248 "PrivateAddress/Profession", // 12 249 "PrivateAddress/Phone", // 13 250 "PrivateAddress/Mobile", // 14 251 "PrivateAddress/Fax", // 15 252 "PrivateAddress/WebAddress", // 16 253 "PrivateAddress/Email", // 17 254 "BusinessAddress/Company", // 18 255 "BusinessAddress/CompanyExt", // 19 256 "BusinessAddress/Slogan", // 20 257 "BusinessAddress/Street", // 21 258 "BusinessAddress/Zip", // 22 259 "BusinessAddress/City", // 23 260 "BusinessAddress/Country", // 24 261 "BusinessAddress/State", // 25 262 "BusinessAddress/Position", // 26 263 "BusinessAddress/Phone", // 27 264 "BusinessAddress/Mobile", // 28 265 "BusinessAddress/Fax", // 29 266 "BusinessAddress/WebAddress", // 30 267 "BusinessAddress/Email", // 31 268 "AutoText/Group", // 32 269 "AutoText/Block" // 33 270 }; 271 const int nBusinessCount = bIsLabel ? 0 : 34; 272 const int nLabelCount = bIsLabel ? 18 : 15; 273 Sequence<OUString> aNames(nBusinessCount + nLabelCount); 274 OUString* pNames = aNames.getArray(); 275 int nIndex = 0; 276 for(int nLabel = 0; nLabel < nLabelCount; nLabel++) 277 pNames[nIndex++] = OUString::createFromAscii(aLabelPropNames[nLabel]); 278 for(int nBusiness = 0; nBusiness < nBusinessCount; nBusiness++) 279 pNames[nIndex++] = OUString::createFromAscii(aBusinessPropNames[nBusiness]); 280 return aNames; 281 } 282 /* ---------------------------------------------------------------------------- 283 284 ---------------------------------------------------------------------------*/ 285 SwLabCfgItem::SwLabCfgItem(sal_Bool bLabel) : 286 ConfigItem(bLabel ? C2U("Office.Writer/Label") : C2U("Office.Writer/BusinessCard")), 287 bIsLabel(bLabel) 288 { 289 Sequence<OUString> aNames = GetPropertyNames(); 290 Sequence<Any> aValues = GetProperties(aNames); 291 EnableNotification(aNames); 292 const Any* pValues = aValues.getConstArray(); 293 DBG_ASSERT(aValues.getLength() == aNames.getLength(), "GetProperties failed"); 294 sal_Bool bNoConfigValues = sal_True; 295 if(aValues.getLength() == aNames.getLength()) 296 { 297 for(int nProp = 0, nProperty = 0; nProp < aNames.getLength(); nProp++, nProperty++) 298 { 299 300 if(pValues[nProp].hasValue()) 301 { 302 //to have a contiuous switch an offset is added 303 if(nProp == 15 && !bIsLabel) 304 nProperty += 3; 305 if(nProperty >= 18) 306 bNoConfigValues = sal_False; 307 switch(nProperty) 308 { 309 case 0: aItem.bCont = *(sal_Bool*)pValues[nProp].getValue(); break;// "Medium/Continous", 310 case 1: pValues[nProp] >>= aItem.aMake; break;// "Medium/Brand", 311 case 2: pValues[nProp] >>= aItem.aType; break;// "Medium/Type", 312 case 3: pValues[nProp] >>= aItem.nCols; break;// "Format/Column", 313 case 4: pValues[nProp] >>= aItem.nRows; break;// "Format/Row", 314 case 5: 315 pValues[nProp] >>= aItem.lHDist; 316 aItem.lHDist = MM100_TO_TWIP(aItem.lHDist); 317 break;// "Format/HorizontalDistance", 318 case 6: 319 pValues[nProp] >>= aItem.lVDist; 320 aItem.lVDist = MM100_TO_TWIP(aItem.lVDist); 321 break;// "Format/VerticalDistance", 322 case 7: 323 pValues[nProp] >>= aItem.lWidth; 324 aItem.lWidth = MM100_TO_TWIP(aItem.lWidth); 325 break;// "Format/Width", 326 case 8: 327 pValues[nProp] >>= aItem.lHeight; 328 aItem.lHeight = MM100_TO_TWIP(aItem.lHeight); 329 break;// "Format/Height", 330 case 9: 331 pValues[nProp] >>= aItem.lLeft; 332 aItem.lLeft = MM100_TO_TWIP(aItem.lLeft); 333 break;// "Format/LeftMargin", 334 case 10: 335 pValues[nProp] >>= aItem.lUpper; 336 aItem.lUpper = MM100_TO_TWIP(aItem.lUpper); 337 break;// "Format/TopMargin", 338 case 11: aItem.bSynchron = *(sal_Bool*)pValues[nProp].getValue(); break;// "Option/Synchronize", 339 case 12: aItem.bPage = *(sal_Bool*)pValues[nProp].getValue(); break;// "Option/Page", 340 case 13: pValues[nProp] >>= aItem.nCol; break;// "Option/Column", 341 case 14: pValues[nProp] >>= aItem.nRow; break;// "Option/Row" 342 case 15: aItem.bAddr = *(sal_Bool*)pValues[nProp].getValue(); break;// "Inscription/UseAddress", 343 case 16: pValues[nProp] >>= aItem.aWriting; break;// "Inscription/Address", 344 case 17: pValues[nProp] >>= aItem.sDBName; break;// "Inscription/Database" 345 case 18: pValues[nProp] >>= aItem.aPrivFirstName; break;// "PrivateAddress/FirstName", 346 case 19: pValues[nProp] >>= aItem.aPrivName; break;// "PrivateAddress/Name", 347 case 20: pValues[nProp] >>= aItem.aPrivShortCut; break;// "PrivateAddress/ShortCut", 348 case 21: pValues[nProp] >>= aItem.aPrivFirstName2; break;// "PrivateAddress/SecondFirstName", 349 case 22: pValues[nProp] >>= aItem.aPrivName2; break;// "PrivateAddress/SecondName", 350 case 23: pValues[nProp] >>= aItem.aPrivShortCut2; break;// "PrivateAddress/SecondShortCut", 351 case 24: pValues[nProp] >>= aItem.aPrivStreet; break;// "PrivateAddress/Street", 352 case 25: pValues[nProp] >>= aItem.aPrivZip; break;// "PrivateAddress/Zip", 353 case 26: pValues[nProp] >>= aItem.aPrivCity; break;// "PrivateAddress/City", 354 case 27: pValues[nProp] >>= aItem.aPrivCountry; break;// "PrivateAddress/Country", 355 case 28: pValues[nProp] >>= aItem.aPrivState; break;// "PrivateAddress/State", 356 case 29: pValues[nProp] >>= aItem.aPrivTitle; break;// "PrivateAddress/Title", 357 case 30: pValues[nProp] >>= aItem.aPrivProfession; break;// "PrivateAddress/Profession", 358 case 31: pValues[nProp] >>= aItem.aPrivPhone; break;// "PrivateAddress/Phone", 359 case 32: pValues[nProp] >>= aItem.aPrivMobile; break;// "PrivateAddress/Mobile", 360 case 33: pValues[nProp] >>= aItem.aPrivFax; break;// "PrivateAddress/Fax", 361 case 34: pValues[nProp] >>= aItem.aPrivWWW; break;// "PrivateAddress/WebAddress", 362 case 35: pValues[nProp] >>= aItem.aPrivMail; break;// "PrivateAddress/Email", 363 case 36: pValues[nProp] >>= aItem.aCompCompany; break;// "BusinessAddress/Company", 364 case 37: pValues[nProp] >>= aItem.aCompCompanyExt; break;// "BusinessAddress/CompanyExt", 365 case 38: pValues[nProp] >>= aItem.aCompSlogan; break;// "BusinessAddress/Slogan", 366 case 39: pValues[nProp] >>= aItem.aCompStreet; break;// "BusinessAddress/Street", 367 case 40: pValues[nProp] >>= aItem.aCompZip; break;// "BusinessAddress/Zip", 368 case 41: pValues[nProp] >>= aItem.aCompCity; break;// "BusinessAddress/City", 369 case 42: pValues[nProp] >>= aItem.aCompCountry; break;// "BusinessAddress/Country", 370 case 43: pValues[nProp] >>= aItem.aCompState; break;// "BusinessAddress/State", 371 case 44: pValues[nProp] >>= aItem.aCompPosition; break;// "BusinessAddress/Position", 372 case 45: pValues[nProp] >>= aItem.aCompPhone; break;// "BusinessAddress/Phone", 373 case 46: pValues[nProp] >>= aItem.aCompMobile; break;// "BusinessAddress/Mobile", 374 case 47: pValues[nProp] >>= aItem.aCompFax; break;// "BusinessAddress/Fax", 375 case 48: pValues[nProp] >>= aItem.aCompWWW; break;// "BusinessAddress/WebAddress", 376 case 49: pValues[nProp] >>= aItem.aCompMail; break;// "BusinessAddress/Email", 377 case 50: pValues[nProp] >>= aItem.sGlossaryGroup; break;// "AutoText/Group" 378 case 51: pValues[nProp] >>= aItem.sGlossaryBlockName; break;// "AutoText/Block" 379 } 380 } 381 } 382 } 383 if(!bIsLabel && bNoConfigValues) 384 { 385 386 SvtUserOptions& rUserOpt = SW_MOD()->GetUserOptions(); 387 aItem.aPrivFirstName = rUserOpt.GetFirstName(); 388 aItem.aPrivName = rUserOpt.GetLastName(); 389 aItem.aPrivShortCut = rUserOpt.GetID(); 390 aItem.aCompCompany = rUserOpt.GetCompany(); 391 aItem.aCompStreet = aItem.aPrivStreet = rUserOpt.GetStreet(); 392 393 aItem.aCompCountry = aItem.aPrivCountry = rUserOpt.GetCountry(); 394 aItem.aCompZip = aItem.aPrivZip= rUserOpt.GetZip(); 395 aItem.aCompCity = aItem.aPrivCity = rUserOpt.GetCity(); 396 aItem.aPrivTitle = rUserOpt.GetTitle(); 397 aItem.aCompPosition = rUserOpt.GetPosition(); 398 aItem.aPrivPhone = rUserOpt.GetTelephoneHome(); 399 aItem.aCompPhone = rUserOpt.GetTelephoneWork(); 400 aItem.aCompFax = aItem.aPrivFax = rUserOpt.GetFax(); 401 aItem.aCompMail = aItem.aPrivMail = rUserOpt.GetEmail(); 402 aItem.aCompState = aItem.aPrivState = rUserOpt.GetState(); 403 aItem.bSynchron = sal_True; 404 SetModified(); 405 } 406 } 407 /* -----------------------------25.09.00 16:26-------------------------------- 408 409 ---------------------------------------------------------------------------*/ 410 void SwLabCfgItem::Notify( const ::com::sun::star::uno::Sequence< rtl::OUString >& ) {} 411 412 void SwLabCfgItem::Commit() 413 { 414 Sequence<OUString> aNames = GetPropertyNames(); 415 Sequence<Any> aValues(aNames.getLength()); 416 Any* pValues = aValues.getArray(); 417 418 const Type& rType = ::getBooleanCppuType(); 419 for(int nProp = 0, nProperty = 0; nProp < aNames.getLength(); nProp++, nProperty++) 420 { 421 //to have a contiuous switch an offset is added 422 if(nProp == 15 && !bIsLabel) 423 nProperty += 3; 424 switch(nProperty) 425 { 426 case 0: pValues[nProp].setValue(&aItem.bCont, rType); break;// "Medium/Continous", 427 case 1: pValues[nProp] <<= aItem.aMake; break;// "Medium/Brand", 428 case 2: pValues[nProp] <<= aItem.aType; break;// "Medium/Type", 429 case 3: pValues[nProp] <<= aItem.nCols; break;// "Format/Column", 430 case 4: pValues[nProp] <<= aItem.nRows; break;// "Format/Row", 431 case 5: pValues[nProp] <<= static_cast<sal_Int32>(TWIP_TO_MM100(aItem.lHDist));break;// "Format/HorizontalDistance", 432 case 6: pValues[nProp] <<= static_cast<sal_Int32>(TWIP_TO_MM100(aItem.lVDist));break;// "Format/VerticalDistance", 433 case 7: pValues[nProp] <<= static_cast<sal_Int32>(TWIP_TO_MM100(aItem.lWidth)); break;// "Format/Width", 434 case 8: pValues[nProp] <<= static_cast<sal_Int32>(TWIP_TO_MM100(aItem.lHeight)); break;// "Format/Height", 435 case 9: pValues[nProp] <<= static_cast<sal_Int32>(TWIP_TO_MM100(aItem.lLeft)); break;// "Format/LeftMargin", 436 case 10: pValues[nProp] <<= static_cast<sal_Int32>(TWIP_TO_MM100(aItem.lUpper)); break;// "Format/TopMargin", 437 case 11: pValues[nProp].setValue(&aItem.bSynchron, rType); break;// "Option/Synchronize", 438 case 12: pValues[nProp].setValue(&aItem.bPage, rType); break;// "Option/Page", 439 case 13: pValues[nProp] <<= aItem.nCol; break;// "Option/Column", 440 case 14: pValues[nProp] <<= aItem.nRow; break;// "Option/Row" 441 case 15: pValues[nProp].setValue(&aItem.bAddr, rType); break;// "Inscription/UseAddress", 442 case 16: pValues[nProp] <<= aItem.aWriting; break;// "Inscription/Address", 443 case 17: pValues[nProp] <<= aItem.sDBName; break;// "Inscription/Database" 444 case 18: pValues[nProp] <<= aItem.aPrivFirstName; break;// "PrivateAddress/FirstName", 445 case 19: pValues[nProp] <<= aItem.aPrivName; break;// "PrivateAddress/Name", 446 case 20: pValues[nProp] <<= aItem.aPrivShortCut; break;// "PrivateAddress/ShortCut", 447 case 21: pValues[nProp] <<= aItem.aPrivFirstName2; break;// "PrivateAddress/SecondFirstName", 448 case 22: pValues[nProp] <<= aItem.aPrivName2; break;// "PrivateAddress/SecondName", 449 case 23: pValues[nProp] <<= aItem.aPrivShortCut2; break;// "PrivateAddress/SecondShortCut", 450 case 24: pValues[nProp] <<= aItem.aPrivStreet; break;// "PrivateAddress/Street", 451 case 25: pValues[nProp] <<= aItem.aPrivZip; break;// "PrivateAddress/Zip", 452 case 26: pValues[nProp] <<= aItem.aPrivCity; break;// "PrivateAddress/City", 453 case 27: pValues[nProp] <<= aItem.aPrivCountry; break;// "PrivateAddress/Country", 454 case 28: pValues[nProp] <<= aItem.aPrivState; break;// "PrivateAddress/State", 455 case 29: pValues[nProp] <<= aItem.aPrivTitle; break;// "PrivateAddress/Title", 456 case 30: pValues[nProp] <<= aItem.aPrivProfession; break;// "PrivateAddress/Profession", 457 case 31: pValues[nProp] <<= aItem.aPrivPhone; break;// "PrivateAddress/Phone", 458 case 32: pValues[nProp] <<= aItem.aPrivMobile; break;// "PrivateAddress/Mobile", 459 case 33: pValues[nProp] <<= aItem.aPrivFax; break;// "PrivateAddress/Fax", 460 case 34: pValues[nProp] <<= aItem.aPrivWWW; break;// "PrivateAddress/WebAddress", 461 case 35: pValues[nProp] <<= aItem.aPrivMail; break;// "PrivateAddress/Email", 462 case 36: pValues[nProp] <<= aItem.aCompCompany; break;// "BusinessAddress/Company", 463 case 37: pValues[nProp] <<= aItem.aCompCompanyExt; break;// "BusinessAddress/CompanyExt", 464 case 38: pValues[nProp] <<= aItem.aCompSlogan; break;// "BusinessAddress/Slogan", 465 case 39: pValues[nProp] <<= aItem.aCompStreet; break;// "BusinessAddress/Street", 466 case 40: pValues[nProp] <<= aItem.aCompZip; break;// "BusinessAddress/Zip", 467 case 41: pValues[nProp] <<= aItem.aCompCity; break;// "BusinessAddress/City", 468 case 42: pValues[nProp] <<= aItem.aCompCountry; break;// "BusinessAddress/Country", 469 case 43: pValues[nProp] <<= aItem.aCompState; break;// "BusinessAddress/State", 470 case 44: pValues[nProp] <<= aItem.aCompPosition; break;// "BusinessAddress/Position", 471 case 45: pValues[nProp] <<= aItem.aCompPhone; break;// "BusinessAddress/Phone", 472 case 46: pValues[nProp] <<= aItem.aCompMobile; break;// "BusinessAddress/Mobile", 473 case 47: pValues[nProp] <<= aItem.aCompFax; break;// "BusinessAddress/Fax", 474 case 48: pValues[nProp] <<= aItem.aCompWWW; break;// "BusinessAddress/WebAddress", 475 case 49: pValues[nProp] <<= aItem.aCompMail; break;// "BusinessAddress/Email", 476 case 50: pValues[nProp] <<= aItem.sGlossaryGroup; break;// "AutoText/Group" 477 case 51: pValues[nProp] <<= aItem.sGlossaryBlockName; break;// "AutoText/Block" 478 } 479 } 480 PutProperties(aNames, aValues); 481 } 482 483