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 #ifdef SW_DLLIMPLEMENTATION 31 #undef SW_DLLIMPLEMENTATION 32 #endif 33 34 35 #include <vcl/waitobj.hxx> 36 #include <rtl/ustring.hxx> 37 #include <com/sun/star/uno/Sequence.h> 38 #include <swtypes.hxx> 39 #include <wrtsh.hxx> 40 #include <initui.hxx> 41 #include <labimp.hxx> 42 #include <labfmt.hxx> 43 #include <labprt.hxx> 44 #include <unotools.hxx> 45 #ifndef _DBMGR_HXX 46 #include <dbmgr.hxx> 47 #endif 48 #include "uitool.hxx" 49 #ifndef _CMDID_H 50 #include <cmdid.h> 51 #endif 52 #ifndef _HELPID_H 53 #include <helpid.h> 54 #endif 55 #ifndef _GLOBALS_HRC 56 #include <globals.hrc> 57 #endif 58 #ifndef _LABEL_HRC 59 #include <label.hrc> 60 #endif 61 62 //impl in envimg.cxx 63 extern SW_DLLPUBLIC String MakeSender(); 64 65 66 SV_IMPL_PTRARR( SwLabRecs, SwLabRec* ); 67 68 void SwLabRec::SetFromItem( const SwLabItem& rItem ) 69 { 70 lHDist = rItem.lHDist; 71 lVDist = rItem.lVDist; 72 lWidth = rItem.lWidth; 73 lHeight = rItem.lHeight; 74 lLeft = rItem.lLeft; 75 lUpper = rItem.lUpper; 76 nCols = rItem.nCols; 77 nRows = rItem.nRows; 78 bCont = rItem.bCont; 79 } 80 81 void SwLabRec::FillItem( SwLabItem& rItem ) const 82 { 83 rItem.lHDist = lHDist; 84 rItem.lVDist = lVDist; 85 rItem.lWidth = lWidth; 86 rItem.lHeight = lHeight; 87 rItem.lLeft = lLeft; 88 rItem.lUpper = lUpper; 89 rItem.nCols = nCols; 90 rItem.nRows = nRows; 91 } 92 93 // -------------------------------------------------------------------------- 94 void SwLabDlg::_ReplaceGroup( const String &rMake ) 95 { 96 //Die alten Eintraege vernichten. 97 pRecs->Remove( 1, pRecs->Count() - 1 ); 98 aLabelsCfg.FillLabels(rtl::OUString(rMake), *pRecs); 99 aLstGroup = rMake; 100 } 101 102 // -------------------------------------------------------------------------- 103 104 105 106 void SwLabDlg::PageCreated(sal_uInt16 nId, SfxTabPage &rPage) 107 { 108 if (nId == TP_LAB_LAB) 109 { 110 if(m_bLabel) 111 { 112 ((SwLabPage*)&rPage)->SetNewDBMgr(pNewDBMgr); 113 ((SwLabPage*)&rPage)->InitDatabaseBox(); 114 } 115 else 116 ((SwLabPage*)&rPage)->SetToBusinessCard(); 117 } 118 else if (nId == TP_LAB_PRT) 119 pPrtPage = (SwLabPrtPage*)&rPage; 120 } 121 122 // -------------------------------------------------------------------------- 123 124 125 126 SwLabDlg::SwLabDlg(Window* pParent, const SfxItemSet& rSet, 127 SwNewDBMgr* pDBMgr, sal_Bool bLabel) : 128 SfxTabDialog( pParent, SW_RES(DLG_LAB), &rSet, sal_False ), 129 pNewDBMgr(pDBMgr), 130 pPrtPage(0), 131 132 aTypeIds( 50, 10 ), 133 aMakes ( 5, 0 ), 134 135 pRecs ( new SwLabRecs() ), 136 sBusinessCardDlg(SW_RES(ST_BUSINESSCARDDLG)), 137 sFormat(SW_RES(ST_FIRSTPAGE_LAB)), 138 sMedium(SW_RES(ST_FIRSTPAGE_BC)), 139 m_bLabel(bLabel) 140 { 141 WaitObject aWait( pParent ); 142 143 FreeResource(); 144 145 GetOKButton().SetText(String(SW_RES(STR_BTN_NEW_DOC))); 146 GetOKButton().SetHelpId(HID_LABEL_INSERT); 147 GetOKButton().SetHelpText(aEmptyStr); // Damit generierter Hilfetext verwendet wird 148 149 AddTabPage(TP_LAB_LAB, m_bLabel ? sFormat : sMedium ,SwLabPage ::Create, 0, sal_False, 0); 150 AddTabPage(TP_VISITING_CARDS, SwVisitingCardPage::Create, 0); 151 AddTabPage(TP_LAB_FMT, SwLabFmtPage::Create, 0); 152 AddTabPage(TP_LAB_PRT, SwLabPrtPage::Create, 0); 153 AddTabPage(TP_BUSINESS_DATA, SwBusinessDataPage::Create, 0 ); 154 AddTabPage(TP_PRIVATE_DATA, SwPrivateDataPage::Create, 0); 155 156 157 if(m_bLabel) 158 { 159 RemoveTabPage(TP_BUSINESS_DATA); 160 RemoveTabPage(TP_PRIVATE_DATA); 161 RemoveTabPage(TP_VISITING_CARDS); 162 } 163 else 164 { 165 SetText(sBusinessCardDlg); 166 } 167 // Benutzer-Etikette aus writer.cfg lesen 168 SwLabItem aItem((const SwLabItem&)rSet.Get( FN_LABEL )); 169 SwLabRec* pRec = new SwLabRec; 170 const String aTmp( SW_RES( STR_CUSTOM ) ); 171 pRec->aMake = pRec->aType = aTmp; 172 pRec->SetFromItem( aItem ); 173 174 sal_Bool bDouble = sal_False; 175 176 for (sal_uInt16 nRecPos = 0; nRecPos < pRecs->Count(); nRecPos++) 177 { 178 if (pRec->aMake == pRecs->GetObject(nRecPos)->aMake && 179 pRec->aType == pRecs->GetObject(nRecPos)->aType) 180 { 181 bDouble = sal_True; 182 break; 183 } 184 } 185 186 if (!bDouble) 187 pRecs->C40_INSERT( SwLabRec, pRec, 0 ); 188 189 sal_uInt16 nLstGroup = 0; 190 const UNO_NMSPC::Sequence<rtl::OUString>& rMan = aLabelsCfg.GetManufacturers(); 191 const rtl::OUString* pMan = rMan.getConstArray(); 192 for(sal_Int32 nMan = 0; nMan < rMan.getLength(); nMan++) 193 { 194 aMakes.Insert( new String(pMan[nMan]), aMakes.Count() ); 195 if ( pMan[nMan] == aItem.aLstMake ) 196 nLstGroup = (sal_uInt16) nMan; 197 } 198 199 if ( aMakes.Count() ) 200 _ReplaceGroup( *aMakes[nLstGroup] ); 201 if (pExampleSet) 202 pExampleSet->Put(aItem); 203 } 204 205 // -------------------------------------------------------------------------- 206 207 SwLabDlg::~SwLabDlg() 208 { 209 delete pRecs; 210 } 211 // -------------------------------------------------------------------------- 212 213 void SwLabDlg::GetLabItem(SwLabItem &rItem) 214 { 215 const SwLabItem& rActItem = (const SwLabItem&)GetExampleSet()->Get(FN_LABEL); 216 const SwLabItem& rOldItem = (const SwLabItem&)GetInputSetImpl()->Get(FN_LABEL); 217 218 if (rActItem != rOldItem) 219 { // Wurde schon mal mit (hoffentlich) korrektem Inhalt "geputtet" 220 rItem = rActItem; 221 } 222 else 223 { 224 rItem = rOldItem; 225 226 // Im rItem stehen (vom Namen mal abgesehen) immer nur die 227 // benutzerdefinierbaren Einstellungen. Daher richtige Werte 228 // direkt aus dem Record besorgen: 229 SwLabRec* pRec = GetRecord(rItem.aType, rItem.bCont); 230 pRec->FillItem( rItem ); 231 } 232 } 233 234 // -------------------------------------------------------------------------- 235 236 SwLabRec* SwLabDlg::GetRecord(const String &rRecName, sal_Bool bCont) 237 { 238 SwLabRec* pRec = NULL; 239 sal_Bool bFound = sal_False; 240 String sCustom(SW_RES(STR_CUSTOM)); 241 242 const sal_uInt16 nCount = Recs().Count(); 243 for (sal_uInt16 i = 0; i < nCount; i++) 244 { 245 pRec = Recs()[i]; 246 if (pRec->aType != sCustom && 247 rRecName == pRec->aType && bCont == pRec->bCont) 248 { 249 bFound = sal_True; 250 break; 251 } 252 } 253 if (!bFound) // Benutzerdefiniert 254 pRec = Recs()[0]; 255 256 return(pRec); 257 } 258 259 // -------------------------------------------------------------------------- 260 261 Printer *SwLabDlg::GetPrt() 262 { 263 if (pPrtPage) 264 return (pPrtPage->GetPrt()); 265 else 266 return (NULL); 267 } 268 269 // -------------------------------------------------------------------------- 270 SwLabPage::SwLabPage(Window* pParent, const SfxItemSet& rSet) : 271 SfxTabPage(pParent, SW_RES(TP_LAB_LAB), rSet), 272 pNewDBMgr(NULL), 273 aItem ((const SwLabItem&) rSet.Get(FN_LABEL)), 274 275 aWritingFL (this, SW_RES(FL_WRITING)), 276 aWritingText (this, SW_RES(TXT_WRITING)), 277 aAddrBox (this, SW_RES(BOX_ADDR )), 278 aWritingEdit (this, SW_RES(EDT_WRITING)), 279 aDatabaseFT (this, SW_RES(FT_DATABASE)), 280 aDatabaseLB (this, SW_RES(LB_DATABASE)), 281 aTableFT (this, SW_RES(FT_TABLE )), 282 aTableLB (this, SW_RES(LB_TABLE )), 283 aInsertBT (this, SW_RES(BTN_INSERT )), 284 aDBFieldFT (this, SW_RES(FT_DBFIELD )), 285 aDBFieldLB (this, SW_RES(LB_DBFIELD )), 286 aFormatFL (this, SW_RES(FL_FORMAT )), 287 aContButton (this, SW_RES(BTN_CONT )), 288 aSheetButton (this, SW_RES(BTN_SHEET )), 289 aMakeText (this, SW_RES(TXT_MAKE )), 290 aMakeBox (this, SW_RES(BOX_MAKE )), 291 aTypeText (this, SW_RES(TXT_TYPE )), 292 aTypeBox (this, SW_RES(BOX_TYPE )), 293 aHiddenSortTypeBox(this, WB_SORT|WB_HIDE), 294 aFormatInfo (this, SW_RES(INF_FORMAT )) 295 { 296 WaitObject aWait( pParent ); 297 298 FreeResource(); 299 SetExchangeSupport(); 300 301 302 // Handler installieren 303 aAddrBox .SetClickHdl (LINK(this, SwLabPage, AddrHdl )); 304 aDatabaseLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl )); 305 aTableLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl )); 306 aInsertBT .SetClickHdl (LINK(this, SwLabPage, FieldHdl )); 307 aContButton .SetClickHdl (LINK(this, SwLabPage, PageHdl )); 308 aSheetButton .SetClickHdl (LINK(this, SwLabPage, PageHdl )); 309 aMakeBox .SetSelectHdl(LINK(this, SwLabPage, MakeHdl )); 310 aTypeBox .SetSelectHdl(LINK(this, SwLabPage, TypeHdl )); 311 312 InitDatabaseBox(); 313 314 sal_uInt16 nLstGroup = 0; 315 316 const sal_uInt16 nCount = (sal_uInt16)GetParent()->Makes().Count(); 317 for (sal_uInt16 i = 0; i < nCount; ++i) 318 { 319 String &rStr = *GetParent()->Makes()[i]; 320 aMakeBox.InsertEntry( rStr ); 321 if ( rStr == String(aItem.aLstMake) ) 322 nLstGroup = i; 323 } 324 // Reset(rSet); 325 aMakeBox.SelectEntryPos( nLstGroup ); 326 aMakeBox.GetSelectHdl().Call( &aMakeBox ); 327 } 328 329 // -------------------------------------------------------------------------- 330 331 332 333 SwLabPage::~SwLabPage() 334 { 335 } 336 /* -----------------29.09.99 09:08------------------- 337 338 --------------------------------------------------*/ 339 void lcl_ChgYPos(Window& rWin, long nDiff) 340 { 341 Point aTempPos(rWin.GetPosPixel()); 342 aTempPos.Y() += nDiff; 343 rWin.SetPosPixel(aTempPos); 344 } 345 346 void SwLabPage::SetToBusinessCard() 347 { 348 SetHelpId(HID_BUSINESS_FMT_PAGE); 349 aContButton.SetHelpId(HID_BUSINESS_FMT_PAGE_CONT); 350 aSheetButton.SetHelpId(HID_BUSINESS_FMT_PAGE_SHEET); 351 aMakeBox.SetHelpId(HID_BUSINESS_FMT_PAGE_BRAND); 352 aTypeBox.SetHelpId(HID_BUSINESS_FMT_PAGE_TYPE); 353 m_bLabel = sal_False; 354 aWritingText.Hide(); 355 aAddrBox.Hide(); 356 aWritingEdit.Hide(); 357 aDatabaseFT.Hide(); 358 aDatabaseLB.Hide(); 359 aTableFT.Hide(); 360 aTableLB.Hide(); 361 aInsertBT.Hide(); 362 aDBFieldFT.Hide(); 363 aDBFieldLB.Hide(); 364 aWritingFL.Hide(); 365 366 //resize the form 367 Point aFLPos(aWritingFL.GetPosPixel()); 368 long nDiffPos = aFormatFL.GetPosPixel().Y() - aFLPos.Y(); 369 Size aFLSz(aFormatFL.GetSizePixel()); 370 // aFLSz.Height() += nDiffPos; 371 aFormatFL.SetPosSizePixel(aFLPos, aFLSz); 372 373 // move all controls up 374 lcl_ChgYPos(aContButton, -nDiffPos); 375 lcl_ChgYPos(aSheetButton, -nDiffPos); 376 lcl_ChgYPos(aMakeText, -nDiffPos); 377 378 lcl_ChgYPos(aTypeText, -nDiffPos); 379 lcl_ChgYPos(aFormatInfo, -nDiffPos); 380 381 Size aTmpSz(3, 3); 382 aTmpSz = LogicToPixel(aTmpSz, MAP_APPFONT); 383 384 lcl_ChgYPos(aMakeBox, - nDiffPos); 385 Point aLBPos(aMakeBox.GetPosPixel()); 386 aLBPos.Y() += aMakeBox.GetSizePixel().Height() + aTmpSz.Height(); 387 aTypeBox.SetPosPixel(aLBPos); 388 }; 389 390 // -------------------------------------------------------------------------- 391 392 393 IMPL_LINK( SwLabPage, AddrHdl, Button *, EMPTYARG ) 394 { 395 String aWriting; 396 if ( aAddrBox.IsChecked() ) 397 aWriting = MakeSender(); 398 aWritingEdit.SetText( aWriting.ConvertLineEnd() ); 399 aWritingEdit.GrabFocus(); 400 return 0; 401 } 402 403 // -------------------------------------------------------------------------- 404 405 406 407 IMPL_LINK( SwLabPage, DatabaseHdl, ListBox *, pListBox ) 408 { 409 sActDBName = aDatabaseLB.GetSelectEntry(); 410 411 WaitObject aObj( GetParent() ); 412 413 if (pListBox == &aDatabaseLB) 414 GetNewDBMgr()->GetTableNames(&aTableLB, sActDBName); 415 GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, aTableLB.GetSelectEntry()); 416 return 0; 417 } 418 419 420 421 IMPL_LINK( SwLabPage, FieldHdl, Button *, EMPTYARG ) 422 { 423 String aStr ( '<' ); 424 aStr += aDatabaseLB.GetSelectEntry(); 425 aStr += '.'; 426 aStr += aTableLB.GetSelectEntry(); 427 aStr += '.'; 428 aStr += aTableLB.GetEntryData(aTableLB.GetSelectEntryPos()) == 0 ? '0' : '1'; 429 aStr += '.'; 430 aStr += aDBFieldLB.GetSelectEntry(); 431 aStr += '>'; 432 aWritingEdit.ReplaceSelected(aStr); 433 Selection aSel = aWritingEdit.GetSelection(); 434 aWritingEdit.GrabFocus(); 435 aWritingEdit.SetSelection(aSel); 436 return 0; 437 } 438 439 // -------------------------------------------------------------------------- 440 441 442 443 IMPL_LINK_INLINE_START( SwLabPage, PageHdl, Button *, EMPTYARG ) 444 { 445 aMakeBox.GetSelectHdl().Call( &aMakeBox ); 446 return 0; 447 } 448 IMPL_LINK_INLINE_END( SwLabPage, PageHdl, Button *, EMPTYARG ) 449 450 // -------------------------------------------------------------------------- 451 452 453 454 IMPL_LINK( SwLabPage, MakeHdl, ListBox *, EMPTYARG ) 455 { 456 WaitObject aWait( GetParent() ); 457 458 aTypeBox.Clear(); 459 aHiddenSortTypeBox.Clear(); 460 GetParent()->TypeIds().Remove( 0, GetParent()->TypeIds().Count() ); 461 462 const String aMake = aMakeBox.GetSelectEntry(); 463 GetParent()->ReplaceGroup( aMake ); 464 aItem.aLstMake = aMake; 465 466 const sal_Bool bCont = aContButton.IsChecked(); 467 const sal_uInt16 nCount = GetParent()->Recs().Count(); 468 sal_uInt16 nLstType = 0; 469 470 const String sCustom(SW_RES(STR_CUSTOM)); 471 //insert the entries into the sorted list box 472 for ( sal_uInt16 i = 0; i < nCount; ++i ) 473 { 474 const String aType ( GetParent()->Recs()[i]->aType ); 475 sal_Bool bInsert = sal_False; 476 if ( GetParent()->Recs()[i]->aType == sCustom ) 477 { 478 bInsert = sal_True; 479 aTypeBox.InsertEntry(aType ); 480 } 481 else if ( GetParent()->Recs()[i]->bCont == bCont ) 482 { 483 if ( aHiddenSortTypeBox.GetEntryPos(aType) == LISTBOX_ENTRY_NOTFOUND ) 484 { 485 bInsert = sal_True; 486 aHiddenSortTypeBox.InsertEntry( aType ); 487 } 488 } 489 if(bInsert) 490 { 491 GetParent()->TypeIds().Insert(i, GetParent()->TypeIds().Count()); 492 if ( !nLstType && aType == String(aItem.aLstType) ) 493 nLstType = GetParent()->TypeIds().Count(); 494 } 495 } 496 for(sal_uInt16 nEntry = 0; nEntry < aHiddenSortTypeBox.GetEntryCount(); nEntry++) 497 { 498 aTypeBox.InsertEntry(aHiddenSortTypeBox.GetEntry(nEntry)); 499 } 500 if (nLstType) 501 aTypeBox.SelectEntry(aItem.aLstType); 502 else 503 aTypeBox.SelectEntryPos(0); 504 aTypeBox.GetSelectHdl().Call( &aTypeBox ); 505 return 0; 506 } 507 508 // -------------------------------------------------------------------------- 509 510 511 512 IMPL_LINK_INLINE_START( SwLabPage, TypeHdl, ListBox *, EMPTYARG ) 513 { 514 DisplayFormat(); 515 aItem.aType = aTypeBox.GetSelectEntry(); 516 return 0; 517 } 518 IMPL_LINK_INLINE_END( SwLabPage, TypeHdl, ListBox *, EMPTYARG ) 519 520 // -------------------------------------------------------------------------- 521 522 523 524 void SwLabPage::DisplayFormat() 525 { 526 MetricField aField(this, WinBits(0)); 527 FieldUnit aMetric = ::GetDfltMetric(sal_False); 528 SetMetric(aField, aMetric); 529 aField.SetDecimalDigits(2); 530 aField.SetMin (0); 531 aField.SetMax (LONG_MAX); 532 533 SwLabRec* pRec = GetSelectedEntryPos(); 534 aItem.aLstType = pRec->aType; 535 SETFLDVAL(aField, pRec->lWidth); 536 aField.Reformat(); 537 const String aWString = aField.GetText(); 538 539 SETFLDVAL(aField, pRec->lHeight); 540 aField.Reformat(); 541 542 String aText = pRec->aType; 543 aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": ")); 544 aText += aWString; 545 aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x ")); 546 aText += aField.GetText(); 547 aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" (")); 548 aText += String::CreateFromInt32( pRec->nCols ); 549 aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x ")); 550 aText += String::CreateFromInt32( pRec->nRows ); 551 aText += ')'; 552 aFormatInfo.SetText(aText); 553 } 554 555 // -------------------------------------------------------------------------- 556 557 SwLabRec* SwLabPage::GetSelectedEntryPos() 558 { 559 String sSelEntry(aTypeBox.GetSelectEntry()); 560 561 return GetParent()->GetRecord(sSelEntry, aContButton.IsChecked()); 562 } 563 564 // -------------------------------------------------------------------------- 565 566 567 568 void SwLabPage::InitDatabaseBox() 569 { 570 if( GetNewDBMgr() ) 571 { 572 aDatabaseLB.Clear(); 573 UNO_NMSPC::Sequence<rtl::OUString> aDataNames = SwNewDBMgr::GetExistingDatabaseNames(); 574 const rtl::OUString* pDataNames = aDataNames.getConstArray(); 575 for (long i = 0; i < aDataNames.getLength(); i++) 576 aDatabaseLB.InsertEntry(pDataNames[i]); 577 String sDBName = sActDBName.GetToken( 0, DB_DELIM ); 578 String sTableName = sActDBName.GetToken( 1, DB_DELIM ); 579 aDatabaseLB.SelectEntry(sDBName); 580 if( sDBName.Len() && GetNewDBMgr()->GetTableNames(&aTableLB, sDBName)) 581 { 582 aTableLB.SelectEntry(sTableName); 583 GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, sTableName); 584 } 585 else 586 aDBFieldLB.Clear(); 587 } 588 } 589 590 // -------------------------------------------------------------------------- 591 SfxTabPage* SwLabPage::Create(Window* pParent, const SfxItemSet& rSet) 592 { 593 return new SwLabPage(pParent, rSet); 594 } 595 596 // -------------------------------------------------------------------------- 597 void SwLabPage::ActivatePage(const SfxItemSet& rSet) 598 { 599 Reset( rSet ); 600 } 601 // -------------------------------------------------------------------------- 602 int SwLabPage::DeactivatePage(SfxItemSet* _pSet) 603 { 604 if (_pSet) 605 FillItemSet(*_pSet); 606 607 return sal_True; 608 } 609 610 // -------------------------------------------------------------------------- 611 612 613 614 void SwLabPage::FillItem(SwLabItem& rItem) 615 { 616 rItem.bAddr = aAddrBox.IsChecked(); 617 rItem.aWriting = aWritingEdit.GetText(); 618 rItem.bCont = aContButton.IsChecked(); 619 rItem.aMake = aMakeBox.GetSelectEntry(); 620 rItem.aType = aTypeBox.GetSelectEntry(); 621 rItem.sDBName = sActDBName; 622 623 SwLabRec* pRec = GetSelectedEntryPos(); 624 pRec->FillItem( rItem ); 625 626 rItem.aLstMake = aMakeBox.GetSelectEntry(); 627 rItem.aLstType = aTypeBox.GetSelectEntry(); 628 } 629 630 // -------------------------------------------------------------------------- 631 632 633 634 sal_Bool SwLabPage::FillItemSet(SfxItemSet& rSet) 635 { 636 FillItem( aItem ); 637 rSet.Put( aItem ); 638 639 return sal_True; 640 } 641 642 // -------------------------------------------------------------------------- 643 644 void SwLabPage::Reset(const SfxItemSet& rSet) 645 { 646 aItem = (const SwLabItem&) rSet.Get(FN_LABEL); 647 String sDBName = aItem.sDBName; 648 649 String aWriting( aItem.aWriting ); 650 651 aAddrBox .Check ( aItem.bAddr ); 652 aWritingEdit.SetText ( aWriting.ConvertLineEnd() ); 653 654 const sal_uInt16 nCount = (sal_uInt16)GetParent()->Makes().Count(); 655 for (sal_uInt16 i = 0; i < nCount; ++i) 656 { 657 String &rStr = *GetParent()->Makes()[i]; 658 if(aMakeBox.GetEntryPos(String(rStr)) == LISTBOX_ENTRY_NOTFOUND) 659 aMakeBox.InsertEntry( rStr ); 660 } 661 662 663 aMakeBox .SelectEntry( aItem.aMake ); 664 //save the current type 665 String sType(aItem.aType); 666 aMakeBox.GetSelectHdl().Call( &aMakeBox ); 667 aItem.aType = sType; 668 //#102806# a newly added make may not be in the type ListBox already 669 if (aTypeBox.GetEntryPos(String(aItem.aType)) == LISTBOX_ENTRY_NOTFOUND && aItem.aMake.getLength()) 670 GetParent()->UpdateGroup( aItem.aMake ); 671 if (aTypeBox.GetEntryPos(String(aItem.aType)) != LISTBOX_ENTRY_NOTFOUND) 672 { 673 aTypeBox.SelectEntry(aItem.aType); 674 aTypeBox.GetSelectHdl().Call(&aTypeBox); 675 } 676 if (aDatabaseLB.GetEntryPos(sDBName) != LISTBOX_ENTRY_NOTFOUND) 677 { 678 aDatabaseLB.SelectEntry(sDBName); 679 aDatabaseLB.GetSelectHdl().Call(&aDatabaseLB); 680 } 681 682 if (aItem.bCont) 683 aContButton .Check(); 684 else 685 aSheetButton.Check(); 686 } 687 688 /*-- 08.07.99 14:00:02--------------------------------------------------- 689 690 -----------------------------------------------------------------------*/ 691 //----------------------------------------------------------------------------- 692 void SwVisitingCardPage::ClearUserData() 693 { 694 SvLBoxEntry* pEntry = aAutoTextLB.First(); 695 while(pEntry) 696 { 697 delete (String*)pEntry->GetUserData(); 698 pEntry = aAutoTextLB.Next(pEntry); 699 } 700 } 701 702 //----------------------------------------------------------------------------- 703 704 void SwVisitingCardPage::SetUserData( sal_uInt32 nCnt, 705 const rtl::OUString* pNames, const rtl::OUString* pValues ) 706 { 707 for( sal_uInt32 i = 0; i < nCnt; ++i ) 708 { 709 SvLBoxEntry* pEntry = aAutoTextLB.InsertEntry( pNames[ i ] ); 710 pEntry->SetUserData( new String( pValues[ i ] )); 711 } 712 } 713 714 //----------------------------------------------------------------------------- 715 716 SwVisitingCardPage::SwVisitingCardPage(Window* pParent, const SfxItemSet& rSet) : 717 SfxTabPage(pParent, SW_RES(TP_VISITING_CARDS), rSet), 718 aContentFL(this, SW_RES( FL_CONTENT )), 719 aAutoTextLB(this, SW_RES( LB_AUTO_TEXT )), 720 aAutoTextGroupFT(this, SW_RES( FT_AUTO_TEXT_GROUP )), 721 aAutoTextGroupLB(this, SW_RES( LB_AUTO_TEXT_GROUP )), 722 aExampleWIN(this, SW_RES( WIN_EXAMPLE )), 723 sVisCardGroup(SW_RES(ST_VISCARD_GROUP)), 724 pExampleFrame(0) 725 { 726 FreeResource(); 727 aAutoTextLB.SetStyle( aAutoTextLB.GetStyle() | WB_HSCROLL ); 728 aAutoTextLB.SetSpaceBetweenEntries(0); 729 aAutoTextLB.SetSelectionMode( SINGLE_SELECTION ); 730 aAutoTextLB.SetHelpId(HID_BUSINESS_CARD_CONTENT); 731 732 SetExchangeSupport(); 733 aAutoTextLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl)); 734 aAutoTextGroupLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl)); 735 736 aExampleWIN.Hide(); 737 738 aAutoTextLB.Show(); 739 aAutoTextGroupFT.Show(); 740 aAutoTextGroupLB.Show(); 741 InitFrameControl(); 742 } 743 /*-- 08.07.99 14:00:03--------------------------------------------------- 744 745 -----------------------------------------------------------------------*/ 746 SwVisitingCardPage::~SwVisitingCardPage() 747 { 748 for(sal_uInt16 i = 0; i < aAutoTextGroupLB.GetEntryCount(); i++) 749 delete (String*)aAutoTextGroupLB.GetEntryData( i ); 750 _xAutoText = 0; 751 752 ClearUserData(); 753 delete pExampleFrame; 754 } 755 /*-- 08.07.99 14:00:03--------------------------------------------------- 756 757 -----------------------------------------------------------------------*/ 758 SfxTabPage* SwVisitingCardPage::Create(Window* pParent, const SfxItemSet& rSet) 759 { 760 return new SwVisitingCardPage(pParent, rSet); 761 } 762 /*-- 08.07.99 14:00:03--------------------------------------------------- 763 764 -----------------------------------------------------------------------*/ 765 void SwVisitingCardPage::ActivatePage(const SfxItemSet& rSet) 766 { 767 Reset( rSet ); 768 UpdateFields(); 769 } 770 /*-- 08.07.99 14:00:04--------------------------------------------------- 771 772 -----------------------------------------------------------------------*/ 773 int SwVisitingCardPage::DeactivatePage(SfxItemSet* _pSet) 774 { 775 if (_pSet) 776 FillItemSet(*_pSet); 777 return LEAVE_PAGE; 778 } 779 /*-- 08.07.99 14:00:04--------------------------------------------------- 780 781 -----------------------------------------------------------------------*/ 782 sal_Bool SwVisitingCardPage::FillItemSet(SfxItemSet& rSet) 783 { 784 String* pGroup = (String*)aAutoTextGroupLB.GetEntryData( 785 aAutoTextGroupLB.GetSelectEntryPos()); 786 DBG_ASSERT(pGroup, "no group selected?"); 787 if(pGroup) 788 aLabItem.sGlossaryGroup = *pGroup; 789 790 SvLBoxEntry* pSelEntry = aAutoTextLB.FirstSelected(); 791 if(pSelEntry) 792 aLabItem.sGlossaryBlockName = *(String*)pSelEntry->GetUserData(); 793 rSet.Put(aLabItem); 794 return sal_True; 795 } 796 /*-- 08.07.99 14:00:05--------------------------------------------------- 797 798 -----------------------------------------------------------------------*/ 799 void lcl_SelectBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName) 800 { 801 SvLBoxEntry* pEntry = rAutoTextLB.First(); 802 while(pEntry) 803 { 804 if(*(String*)pEntry->GetUserData() == rBlockName) 805 { 806 rAutoTextLB.Select(pEntry); 807 rAutoTextLB.MakeVisible(pEntry); 808 break; 809 } 810 pEntry = rAutoTextLB.Next(pEntry); 811 } 812 } 813 //----------------------------------------------------------------------------- 814 sal_Bool lcl_FindBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName) 815 { 816 SvLBoxEntry* pEntry = rAutoTextLB.First(); 817 while(pEntry) 818 { 819 if(*(String*)pEntry->GetUserData() == rBlockName) 820 { 821 rAutoTextLB.Select(pEntry); 822 return sal_True; 823 } 824 pEntry = rAutoTextLB.Next(pEntry); 825 } 826 return sal_False; 827 } 828 829 //----------------------------------------------------------------------------- 830 void SwVisitingCardPage::Reset(const SfxItemSet& rSet) 831 { 832 aLabItem = (const SwLabItem&) rSet.Get(FN_LABEL); 833 834 sal_Bool bFound = sal_False; 835 sal_uInt16 i; 836 for(i = 0; i < aAutoTextGroupLB.GetEntryCount() && !bFound; i++) 837 if( String(aLabItem.sGlossaryGroup) == 838 *(String*)aAutoTextGroupLB.GetEntryData( i )) 839 { 840 bFound = sal_True; 841 break; 842 } 843 844 if(!bFound) 845 { 846 // initially search for a group starting with "crd" which is the name of the 847 // business card AutoTexts 848 for(i = 0; i < aAutoTextGroupLB.GetEntryCount() && !bFound; i++) 849 if(0 == (*(String*)aAutoTextGroupLB.GetEntryData( i )).SearchAscii( "crd") ) 850 { 851 bFound = sal_True; 852 break; 853 } 854 } 855 if(bFound) 856 { 857 if(aAutoTextGroupLB.GetSelectEntryPos() != i) 858 { 859 aAutoTextGroupLB.SelectEntryPos(i); 860 AutoTextSelectHdl(&aAutoTextGroupLB); 861 } 862 if(lcl_FindBlock(aAutoTextLB, aLabItem.sGlossaryBlockName)) 863 { 864 SvLBoxEntry* pSelEntry = aAutoTextLB.FirstSelected(); 865 if( pSelEntry && 866 *(String*)pSelEntry->GetUserData() != String(aLabItem.sGlossaryBlockName)) 867 { 868 lcl_SelectBlock(aAutoTextLB, aLabItem.sGlossaryBlockName); 869 AutoTextSelectHdl(&aAutoTextLB); 870 } 871 } 872 } 873 } 874 875 /* -----------------29.09.99 08:55------------------- 876 877 --------------------------------------------------*/ 878 SwPrivateDataPage::SwPrivateDataPage(Window* pParent, const SfxItemSet& rSet) : 879 SfxTabPage(pParent, SW_RES(TP_PRIVATE_DATA), rSet), 880 aDataFL (this, SW_RES( FL_DATA )), 881 882 aNameFT (this, SW_RES( FT_NAME )), 883 aFirstNameED (this, SW_RES( ED_FIRSTNAME )), 884 aNameED (this, SW_RES( ED_NAME )), 885 aShortCutED (this, SW_RES( ED_SHORTCUT )), 886 887 aName2FT (this, SW_RES( FT_NAME_2 )), 888 aFirstName2ED (this, SW_RES( ED_FIRSTNAME_2)), 889 aName2ED (this, SW_RES( ED_NAME_2 )), 890 aShortCut2ED (this, SW_RES( ED_SHORTCUT_2 )), 891 892 aStreetFT (this, SW_RES( FT_STREET )), 893 aStreetED (this, SW_RES( ED_STREET )), 894 aZipCityFT (this, SW_RES( FT_ZIPCITY )), 895 aZipED (this, SW_RES( ED_ZIP )), 896 aCityED (this, SW_RES( ED_CITY )), 897 aCountryStateFT (this, SW_RES( FT_COUNTRYSTATE )), 898 aCountryED (this, SW_RES( ED_COUNTRY )), 899 aStateED (this, SW_RES( ED_STATE )), 900 aTitleProfessionFT (this, SW_RES( FT_TITLEPROF )), 901 aTitleED (this, SW_RES( ED_TITLE )), 902 aProfessionED (this, SW_RES( ED_PROFESSION )), 903 aPhoneFT (this, SW_RES( FT_PHONE_MOBILE )), 904 aPhoneED (this, SW_RES( ED_PHONE )), 905 aMobilePhoneED (this, SW_RES( ED_MOBILE )), 906 aFaxFT (this, SW_RES( FT_FAX )), 907 aFaxED (this, SW_RES( ED_FAX )), 908 aWWWMailFT (this, SW_RES( FT_WWWMAIL )), 909 aHomePageED (this, SW_RES( ED_WWW )), 910 aMailED (this, SW_RES( ED_MAIL )) 911 { 912 FreeResource(); 913 SetExchangeSupport(); 914 } 915 916 /*-- 29.09.99 08:55:57--------------------------------------------------- 917 918 -----------------------------------------------------------------------*/ 919 SwPrivateDataPage::~SwPrivateDataPage() 920 { 921 } 922 /*-- 29.09.99 08:55:57--------------------------------------------------- 923 924 -----------------------------------------------------------------------*/ 925 SfxTabPage* SwPrivateDataPage::Create(Window* pParent, const SfxItemSet& rSet) 926 { 927 return new SwPrivateDataPage(pParent, rSet); 928 } 929 /*-- 29.09.99 08:55:57--------------------------------------------------- 930 931 -----------------------------------------------------------------------*/ 932 void SwPrivateDataPage::ActivatePage(const SfxItemSet& rSet) 933 { 934 Reset(rSet); 935 } 936 /*-- 29.09.99 08:55:58--------------------------------------------------- 937 938 -----------------------------------------------------------------------*/ 939 int SwPrivateDataPage::DeactivatePage(SfxItemSet* _pSet) 940 { 941 if (_pSet) 942 FillItemSet(*_pSet); 943 return LEAVE_PAGE; 944 } 945 /*-- 29.09.99 08:55:58--------------------------------------------------- 946 947 -----------------------------------------------------------------------*/ 948 sal_Bool SwPrivateDataPage::FillItemSet(SfxItemSet& rSet) 949 { 950 951 SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL); 952 aItem.aPrivFirstName = aFirstNameED .GetText(); 953 aItem.aPrivName = aNameED .GetText( ); 954 aItem.aPrivShortCut = aShortCutED .GetText( ); 955 aItem.aPrivFirstName2 = aFirstName2ED .GetText(); 956 aItem.aPrivName2 = aName2ED .GetText( ); 957 aItem.aPrivShortCut2 = aShortCut2ED .GetText( ); 958 aItem.aPrivStreet = aStreetED .GetText( ); 959 aItem.aPrivZip = aZipED .GetText( ); 960 aItem.aPrivCity = aCityED .GetText( ); 961 aItem.aPrivCountry = aCountryED .GetText( ); 962 aItem.aPrivState = aStateED .GetText( ); 963 aItem.aPrivTitle = aTitleED .GetText( ); 964 aItem.aPrivProfession= aProfessionED.GetText( ); 965 aItem.aPrivPhone = aPhoneED .GetText( ); 966 aItem.aPrivMobile = aMobilePhoneED.GetText( ); 967 aItem.aPrivFax = aFaxED .GetText( ); 968 aItem.aPrivWWW = aHomePageED .GetText( ); 969 aItem.aPrivMail = aMailED .GetText( ); 970 971 rSet.Put(aItem); 972 return sal_True; 973 } 974 /*-- 29.09.99 08:55:59--------------------------------------------------- 975 976 -----------------------------------------------------------------------*/ 977 void SwPrivateDataPage::Reset(const SfxItemSet& rSet) 978 { 979 const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL); 980 aFirstNameED.SetText(aItem.aPrivFirstName); 981 aNameED .SetText(aItem.aPrivName); 982 aShortCutED .SetText(aItem.aPrivShortCut); 983 aFirstName2ED.SetText(aItem.aPrivFirstName2); 984 aName2ED .SetText(aItem.aPrivName2); 985 aShortCut2ED .SetText(aItem.aPrivShortCut2); 986 aStreetED .SetText(aItem.aPrivStreet); 987 aZipED .SetText(aItem.aPrivZip); 988 aCityED .SetText(aItem.aPrivCity); 989 aCountryED .SetText(aItem.aPrivCountry); 990 aStateED .SetText(aItem.aPrivState); 991 aTitleED .SetText(aItem.aPrivTitle); 992 aProfessionED.SetText(aItem.aPrivProfession); 993 aPhoneED .SetText(aItem.aPrivPhone); 994 aMobilePhoneED.SetText(aItem.aPrivMobile); 995 aFaxED .SetText(aItem.aPrivFax); 996 aHomePageED .SetText(aItem.aPrivWWW); 997 aMailED .SetText(aItem.aPrivMail); 998 } 999 /* -----------------29.09.99 08:56------------------- 1000 1001 --------------------------------------------------*/ 1002 SwBusinessDataPage::SwBusinessDataPage(Window* pParent, const SfxItemSet& rSet) : 1003 SfxTabPage(pParent, SW_RES(TP_BUSINESS_DATA), rSet), 1004 aDataFL (this, SW_RES( FL_DATA )), 1005 aCompanyFT (this, SW_RES( FT_COMP )), 1006 aCompanyED (this, SW_RES( ED_COMP )), 1007 aCompanyExtFT (this, SW_RES( FT_COMP_EXT )), 1008 aCompanyExtED (this, SW_RES( ED_COMP_EXT )), 1009 aSloganFT (this, SW_RES( FT_SLOGAN )), 1010 aSloganED (this, SW_RES( ED_SLOGAN )), 1011 aStreetFT (this, SW_RES( FT_STREET )), 1012 aStreetED (this, SW_RES( ED_STREET )), 1013 aZipCityFT (this, SW_RES( FT_ZIPCITY )), 1014 aZipED (this, SW_RES( ED_ZIP )), 1015 aCityED (this, SW_RES( ED_CITY )), 1016 aCountryStateFT (this, SW_RES( FT_COUNTRYSTATE )), 1017 aCountryED (this, SW_RES( ED_COUNTRY )), 1018 aStateED (this, SW_RES( ED_STATE )), 1019 aPositionFT (this, SW_RES( FT_POSITION )), 1020 aPositionED (this, SW_RES( ED_POSITION )), 1021 aPhoneFT (this, SW_RES( FT_PHONE_MOBILE )), 1022 aPhoneED (this, SW_RES( ED_PHONE )), 1023 aMobilePhoneED (this, SW_RES( ED_MOBILE )), 1024 aFaxFT (this, SW_RES( FT_FAX )), 1025 aFaxED (this, SW_RES( ED_FAX )), 1026 aWWWMailFT (this, SW_RES( FT_WWWMAIL )), 1027 aHomePageED (this, SW_RES( ED_WWW )), 1028 aMailED (this, SW_RES( ED_MAIL )) 1029 { 1030 FreeResource(); 1031 SetExchangeSupport(); 1032 } 1033 1034 /*-- 29.09.99 08:56:06--------------------------------------------------- 1035 1036 -----------------------------------------------------------------------*/ 1037 SwBusinessDataPage::~SwBusinessDataPage() 1038 { 1039 } 1040 /*-- 29.09.99 08:56:06--------------------------------------------------- 1041 1042 -----------------------------------------------------------------------*/ 1043 SfxTabPage* SwBusinessDataPage::Create(Window* pParent, const SfxItemSet& rSet) 1044 { 1045 return new SwBusinessDataPage(pParent, rSet); 1046 } 1047 /*-- 29.09.99 08:56:06--------------------------------------------------- 1048 1049 -----------------------------------------------------------------------*/ 1050 void SwBusinessDataPage::ActivatePage(const SfxItemSet& rSet) 1051 { 1052 Reset(rSet); 1053 } 1054 /*-- 29.09.99 08:56:06--------------------------------------------------- 1055 1056 -----------------------------------------------------------------------*/ 1057 int SwBusinessDataPage::DeactivatePage(SfxItemSet* _pSet) 1058 { 1059 if (_pSet) 1060 FillItemSet(*_pSet); 1061 return LEAVE_PAGE; 1062 } 1063 /*-- 29.09.99 08:56:06--------------------------------------------------- 1064 1065 -----------------------------------------------------------------------*/ 1066 sal_Bool SwBusinessDataPage::FillItemSet(SfxItemSet& rSet) 1067 { 1068 SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL); 1069 1070 aItem.aCompCompany = aCompanyED .GetText(); 1071 aItem.aCompCompanyExt= aCompanyExtED .GetText(); 1072 aItem.aCompSlogan = aSloganED .GetText(); 1073 aItem.aCompStreet = aStreetED .GetText(); 1074 aItem.aCompZip = aZipED .GetText(); 1075 aItem.aCompCity = aCityED .GetText(); 1076 aItem.aCompCountry = aCountryED .GetText(); 1077 aItem.aCompState = aStateED .GetText(); 1078 aItem.aCompPosition = aPositionED .GetText(); 1079 aItem.aCompPhone = aPhoneED .GetText(); 1080 aItem.aCompMobile = aMobilePhoneED .GetText(); 1081 aItem.aCompFax = aFaxED .GetText(); 1082 aItem.aCompWWW = aHomePageED .GetText(); 1083 aItem.aCompMail = aMailED .GetText(); 1084 1085 rSet.Put(aItem); 1086 return sal_True; 1087 } 1088 /*-- 29.09.99 08:56:07--------------------------------------------------- 1089 1090 -----------------------------------------------------------------------*/ 1091 void SwBusinessDataPage::Reset(const SfxItemSet& rSet) 1092 { 1093 const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL); 1094 aCompanyED .SetText(aItem.aCompCompany); 1095 aCompanyExtED .SetText(aItem.aCompCompanyExt); 1096 aSloganED .SetText(aItem.aCompSlogan); 1097 aStreetED .SetText(aItem.aCompStreet); 1098 aZipED .SetText(aItem.aCompZip); 1099 aCityED .SetText(aItem.aCompCity); 1100 aCountryED .SetText(aItem.aCompCountry); 1101 aStateED .SetText(aItem.aCompState); 1102 aPositionED .SetText(aItem.aCompPosition); 1103 aPhoneED .SetText(aItem.aCompPhone); 1104 aMobilePhoneED .SetText(aItem.aCompMobile); 1105 aFaxED .SetText(aItem.aCompFax); 1106 aHomePageED .SetText(aItem.aCompWWW); 1107 aMailED .SetText(aItem.aCompMail); 1108 } 1109 1110 1111 1112