diff options
Diffstat (limited to 'sw/source/ui/envelp/label1.cxx')
-rw-r--r-- | sw/source/ui/envelp/label1.cxx | 1111 |
1 files changed, 1111 insertions, 0 deletions
diff --git a/sw/source/ui/envelp/label1.cxx b/sw/source/ui/envelp/label1.cxx new file mode 100644 index 000000000000..4ee1d3295ddc --- /dev/null +++ b/sw/source/ui/envelp/label1.cxx @@ -0,0 +1,1111 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sw.hxx" +#ifdef SW_DLLIMPLEMENTATION +#undef SW_DLLIMPLEMENTATION +#endif + + +#include <vcl/waitobj.hxx> +#include <rtl/ustring.hxx> +#include <com/sun/star/uno/Sequence.h> +#include <swtypes.hxx> +#include <wrtsh.hxx> +#include <initui.hxx> +#include <labimp.hxx> +#include <labfmt.hxx> +#include <labprt.hxx> +#include <unotools.hxx> +#ifndef _DBMGR_HXX +#include <dbmgr.hxx> +#endif +#include "uitool.hxx" +#ifndef _CMDID_H +#include <cmdid.h> +#endif +#ifndef _HELPID_H +#include <helpid.h> +#endif +#ifndef _GLOBALS_HRC +#include <globals.hrc> +#endif +#ifndef _LABEL_HRC +#include <label.hrc> +#endif + +//impl in envimg.cxx +extern SW_DLLPUBLIC String MakeSender(); + + +SV_IMPL_PTRARR( SwLabRecs, SwLabRec* ); + +void SwLabRec::SetFromItem( const SwLabItem& rItem ) +{ + lHDist = rItem.lHDist; + lVDist = rItem.lVDist; + lWidth = rItem.lWidth; + lHeight = rItem.lHeight; + lLeft = rItem.lLeft; + lUpper = rItem.lUpper; + nCols = rItem.nCols; + nRows = rItem.nRows; + bCont = rItem.bCont; +} + +void SwLabRec::FillItem( SwLabItem& rItem ) const +{ + rItem.lHDist = lHDist; + rItem.lVDist = lVDist; + rItem.lWidth = lWidth; + rItem.lHeight = lHeight; + rItem.lLeft = lLeft; + rItem.lUpper = lUpper; + rItem.nCols = nCols; + rItem.nRows = nRows; +} + +// -------------------------------------------------------------------------- +void SwLabDlg::_ReplaceGroup( const String &rMake ) +{ + //Die alten Eintraege vernichten. + pRecs->Remove( 1, pRecs->Count() - 1 ); + aLabelsCfg.FillLabels(rtl::OUString(rMake), *pRecs); + aLstGroup = rMake; +} + +// -------------------------------------------------------------------------- + + + +void SwLabDlg::PageCreated(sal_uInt16 nId, SfxTabPage &rPage) +{ + if (nId == TP_LAB_LAB) + { + if(m_bLabel) + { + ((SwLabPage*)&rPage)->SetNewDBMgr(pNewDBMgr); + ((SwLabPage*)&rPage)->InitDatabaseBox(); + } + else + ((SwLabPage*)&rPage)->SetToBusinessCard(); + } + else if (nId == TP_LAB_PRT) + pPrtPage = (SwLabPrtPage*)&rPage; +} + +// -------------------------------------------------------------------------- + + + +SwLabDlg::SwLabDlg(Window* pParent, const SfxItemSet& rSet, + SwNewDBMgr* pDBMgr, sal_Bool bLabel) : + SfxTabDialog( pParent, SW_RES(DLG_LAB), &rSet, sal_False ), + pNewDBMgr(pDBMgr), + pPrtPage(0), + + aTypeIds( 50, 10 ), + aMakes ( 5, 0 ), + + pRecs ( new SwLabRecs() ), + sBusinessCardDlg(SW_RES(ST_BUSINESSCARDDLG)), + sFormat(SW_RES(ST_FIRSTPAGE_LAB)), + sMedium(SW_RES(ST_FIRSTPAGE_BC)), + m_bLabel(bLabel) +{ + WaitObject aWait( pParent ); + + FreeResource(); + + GetOKButton().SetText(String(SW_RES(STR_BTN_NEW_DOC))); + GetOKButton().SetHelpId(HID_LABEL_INSERT); + GetOKButton().SetHelpText(aEmptyStr); // Damit generierter Hilfetext verwendet wird + + AddTabPage(TP_LAB_LAB, m_bLabel ? sFormat : sMedium ,SwLabPage ::Create, 0, sal_False, 0); + AddTabPage(TP_VISITING_CARDS, SwVisitingCardPage::Create, 0); + AddTabPage(TP_LAB_FMT, SwLabFmtPage::Create, 0); + AddTabPage(TP_LAB_PRT, SwLabPrtPage::Create, 0); + AddTabPage(TP_BUSINESS_DATA, SwBusinessDataPage::Create, 0 ); + AddTabPage(TP_PRIVATE_DATA, SwPrivateDataPage::Create, 0); + + + if(m_bLabel) + { + RemoveTabPage(TP_BUSINESS_DATA); + RemoveTabPage(TP_PRIVATE_DATA); + RemoveTabPage(TP_VISITING_CARDS); + } + else + { + SetText(sBusinessCardDlg); + } + // Benutzer-Etikette aus writer.cfg lesen + SwLabItem aItem((const SwLabItem&)rSet.Get( FN_LABEL )); + SwLabRec* pRec = new SwLabRec; + const String aTmp( SW_RES( STR_CUSTOM ) ); + pRec->aMake = pRec->aType = aTmp; + pRec->SetFromItem( aItem ); + + sal_Bool bDouble = sal_False; + + for (sal_uInt16 nRecPos = 0; nRecPos < pRecs->Count(); nRecPos++) + { + if (pRec->aMake == pRecs->GetObject(nRecPos)->aMake && + pRec->aType == pRecs->GetObject(nRecPos)->aType) + { + bDouble = sal_True; + break; + } + } + + if (!bDouble) + pRecs->C40_INSERT( SwLabRec, pRec, 0 ); + + sal_uInt16 nLstGroup = 0; + const UNO_NMSPC::Sequence<rtl::OUString>& rMan = aLabelsCfg.GetManufacturers(); + const rtl::OUString* pMan = rMan.getConstArray(); + for(sal_Int32 nMan = 0; nMan < rMan.getLength(); nMan++) + { + aMakes.Insert( new String(pMan[nMan]), aMakes.Count() ); + if ( pMan[nMan] == aItem.aLstMake ) + nLstGroup = (sal_uInt16) nMan; + } + + if ( aMakes.Count() ) + _ReplaceGroup( *aMakes[nLstGroup] ); + if (pExampleSet) + pExampleSet->Put(aItem); +} + +// -------------------------------------------------------------------------- + +SwLabDlg::~SwLabDlg() +{ + delete pRecs; +} +// -------------------------------------------------------------------------- + +void SwLabDlg::GetLabItem(SwLabItem &rItem) +{ + const SwLabItem& rActItem = (const SwLabItem&)GetExampleSet()->Get(FN_LABEL); + const SwLabItem& rOldItem = (const SwLabItem&)GetInputSetImpl()->Get(FN_LABEL); + + if (rActItem != rOldItem) + { // Wurde schon mal mit (hoffentlich) korrektem Inhalt "geputtet" + rItem = rActItem; + } + else + { + rItem = rOldItem; + + // Im rItem stehen (vom Namen mal abgesehen) immer nur die + // benutzerdefinierbaren Einstellungen. Daher richtige Werte + // direkt aus dem Record besorgen: + SwLabRec* pRec = GetRecord(rItem.aType, rItem.bCont); + pRec->FillItem( rItem ); + } +} + +// -------------------------------------------------------------------------- + +SwLabRec* SwLabDlg::GetRecord(const String &rRecName, sal_Bool bCont) +{ + SwLabRec* pRec = NULL; + sal_Bool bFound = sal_False; + String sCustom(SW_RES(STR_CUSTOM)); + + const sal_uInt16 nCount = Recs().Count(); + for (sal_uInt16 i = 0; i < nCount; i++) + { + pRec = Recs()[i]; + if (pRec->aType != sCustom && + rRecName == pRec->aType && bCont == pRec->bCont) + { + bFound = sal_True; + break; + } + } + if (!bFound) // Benutzerdefiniert + pRec = Recs()[0]; + + return(pRec); +} + +// -------------------------------------------------------------------------- + +Printer *SwLabDlg::GetPrt() +{ + if (pPrtPage) + return (pPrtPage->GetPrt()); + else + return (NULL); +} + +// -------------------------------------------------------------------------- +SwLabPage::SwLabPage(Window* pParent, const SfxItemSet& rSet) : + SfxTabPage(pParent, SW_RES(TP_LAB_LAB), rSet), + pNewDBMgr(NULL), + aItem ((const SwLabItem&) rSet.Get(FN_LABEL)), + + aWritingFL (this, SW_RES(FL_WRITING)), + aWritingText (this, SW_RES(TXT_WRITING)), + aAddrBox (this, SW_RES(BOX_ADDR )), + aWritingEdit (this, SW_RES(EDT_WRITING)), + aDatabaseFT (this, SW_RES(FT_DATABASE)), + aDatabaseLB (this, SW_RES(LB_DATABASE)), + aTableFT (this, SW_RES(FT_TABLE )), + aTableLB (this, SW_RES(LB_TABLE )), + aInsertBT (this, SW_RES(BTN_INSERT )), + aDBFieldFT (this, SW_RES(FT_DBFIELD )), + aDBFieldLB (this, SW_RES(LB_DBFIELD )), + aFormatFL (this, SW_RES(FL_FORMAT )), + aContButton (this, SW_RES(BTN_CONT )), + aSheetButton (this, SW_RES(BTN_SHEET )), + aMakeText (this, SW_RES(TXT_MAKE )), + aMakeBox (this, SW_RES(BOX_MAKE )), + aTypeText (this, SW_RES(TXT_TYPE )), + aTypeBox (this, SW_RES(BOX_TYPE )), + aHiddenSortTypeBox(this, WB_SORT|WB_HIDE), + aFormatInfo (this, SW_RES(INF_FORMAT )) + { + WaitObject aWait( pParent ); + + FreeResource(); + SetExchangeSupport(); + + + // Handler installieren + aAddrBox .SetClickHdl (LINK(this, SwLabPage, AddrHdl )); + aDatabaseLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl )); + aTableLB .SetSelectHdl(LINK(this, SwLabPage, DatabaseHdl )); + aInsertBT .SetClickHdl (LINK(this, SwLabPage, FieldHdl )); + aContButton .SetClickHdl (LINK(this, SwLabPage, PageHdl )); + aSheetButton .SetClickHdl (LINK(this, SwLabPage, PageHdl )); + aMakeBox .SetSelectHdl(LINK(this, SwLabPage, MakeHdl )); + aTypeBox .SetSelectHdl(LINK(this, SwLabPage, TypeHdl )); + + InitDatabaseBox(); + + sal_uInt16 nLstGroup = 0; + + const sal_uInt16 nCount = (sal_uInt16)GetParent()->Makes().Count(); + for (sal_uInt16 i = 0; i < nCount; ++i) + { + String &rStr = *GetParent()->Makes()[i]; + aMakeBox.InsertEntry( rStr ); + if ( rStr == String(aItem.aLstMake) ) + nLstGroup = i; + } +// Reset(rSet); + aMakeBox.SelectEntryPos( nLstGroup ); + aMakeBox.GetSelectHdl().Call( &aMakeBox ); +} + +// -------------------------------------------------------------------------- + + + +SwLabPage::~SwLabPage() +{ +} +/* -----------------29.09.99 09:08------------------- + + --------------------------------------------------*/ +void lcl_ChgYPos(Window& rWin, long nDiff) +{ + Point aTempPos(rWin.GetPosPixel()); + aTempPos.Y() += nDiff; + rWin.SetPosPixel(aTempPos); +} + +void SwLabPage::SetToBusinessCard() +{ + SetHelpId(HID_BUSINESS_FMT_PAGE); + aContButton.SetHelpId(HID_BUSINESS_FMT_PAGE_CONT); + aSheetButton.SetHelpId(HID_BUSINESS_FMT_PAGE_SHEET); + aMakeBox.SetHelpId(HID_BUSINESS_FMT_PAGE_BRAND); + aTypeBox.SetHelpId(HID_BUSINESS_FMT_PAGE_TYPE); + m_bLabel = sal_False; + aWritingText.Hide(); + aAddrBox.Hide(); + aWritingEdit.Hide(); + aDatabaseFT.Hide(); + aDatabaseLB.Hide(); + aTableFT.Hide(); + aTableLB.Hide(); + aInsertBT.Hide(); + aDBFieldFT.Hide(); + aDBFieldLB.Hide(); + aWritingFL.Hide(); + + //resize the form + Point aFLPos(aWritingFL.GetPosPixel()); + long nDiffPos = aFormatFL.GetPosPixel().Y() - aFLPos.Y(); + Size aFLSz(aFormatFL.GetSizePixel()); +// aFLSz.Height() += nDiffPos; + aFormatFL.SetPosSizePixel(aFLPos, aFLSz); + + // move all controls up + lcl_ChgYPos(aContButton, -nDiffPos); + lcl_ChgYPos(aSheetButton, -nDiffPos); + lcl_ChgYPos(aMakeText, -nDiffPos); + + lcl_ChgYPos(aTypeText, -nDiffPos); + lcl_ChgYPos(aFormatInfo, -nDiffPos); + + Size aTmpSz(3, 3); + aTmpSz = LogicToPixel(aTmpSz, MAP_APPFONT); + + lcl_ChgYPos(aMakeBox, - nDiffPos); + Point aLBPos(aMakeBox.GetPosPixel()); + aLBPos.Y() += aMakeBox.GetSizePixel().Height() + aTmpSz.Height(); + aTypeBox.SetPosPixel(aLBPos); +}; + +// -------------------------------------------------------------------------- + + +IMPL_LINK( SwLabPage, AddrHdl, Button *, EMPTYARG ) +{ + String aWriting; + if ( aAddrBox.IsChecked() ) + aWriting = MakeSender(); + aWritingEdit.SetText( aWriting.ConvertLineEnd() ); + aWritingEdit.GrabFocus(); + return 0; +} + +// -------------------------------------------------------------------------- + + + +IMPL_LINK( SwLabPage, DatabaseHdl, ListBox *, pListBox ) +{ + sActDBName = aDatabaseLB.GetSelectEntry(); + + WaitObject aObj( GetParent() ); + + if (pListBox == &aDatabaseLB) + GetNewDBMgr()->GetTableNames(&aTableLB, sActDBName); + GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, aTableLB.GetSelectEntry()); + return 0; +} + + + +IMPL_LINK( SwLabPage, FieldHdl, Button *, EMPTYARG ) +{ + String aStr ( '<' ); + aStr += aDatabaseLB.GetSelectEntry(); + aStr += '.'; + aStr += aTableLB.GetSelectEntry(); + aStr += '.'; + aStr += aTableLB.GetEntryData(aTableLB.GetSelectEntryPos()) == 0 ? '0' : '1'; + aStr += '.'; + aStr += aDBFieldLB.GetSelectEntry(); + aStr += '>'; + aWritingEdit.ReplaceSelected(aStr); + Selection aSel = aWritingEdit.GetSelection(); + aWritingEdit.GrabFocus(); + aWritingEdit.SetSelection(aSel); + return 0; +} + +// -------------------------------------------------------------------------- + + + +IMPL_LINK_INLINE_START( SwLabPage, PageHdl, Button *, EMPTYARG ) +{ + aMakeBox.GetSelectHdl().Call( &aMakeBox ); + return 0; +} +IMPL_LINK_INLINE_END( SwLabPage, PageHdl, Button *, EMPTYARG ) + +// -------------------------------------------------------------------------- + + + +IMPL_LINK( SwLabPage, MakeHdl, ListBox *, EMPTYARG ) +{ + WaitObject aWait( GetParent() ); + + aTypeBox.Clear(); + aHiddenSortTypeBox.Clear(); + GetParent()->TypeIds().Remove( 0, GetParent()->TypeIds().Count() ); + + const String aMake = aMakeBox.GetSelectEntry(); + GetParent()->ReplaceGroup( aMake ); + aItem.aLstMake = aMake; + + const sal_Bool bCont = aContButton.IsChecked(); + const sal_uInt16 nCount = GetParent()->Recs().Count(); + sal_uInt16 nLstType = 0; + + const String sCustom(SW_RES(STR_CUSTOM)); + //insert the entries into the sorted list box + for ( sal_uInt16 i = 0; i < nCount; ++i ) + { + const String aType ( GetParent()->Recs()[i]->aType ); + sal_Bool bInsert = sal_False; + if ( GetParent()->Recs()[i]->aType == sCustom ) + { + bInsert = sal_True; + aTypeBox.InsertEntry(aType ); + } + else if ( GetParent()->Recs()[i]->bCont == bCont ) + { + if ( aHiddenSortTypeBox.GetEntryPos(aType) == LISTBOX_ENTRY_NOTFOUND ) + { + bInsert = sal_True; + aHiddenSortTypeBox.InsertEntry( aType ); + } + } + if(bInsert) + { + GetParent()->TypeIds().Insert(i, GetParent()->TypeIds().Count()); + if ( !nLstType && aType == String(aItem.aLstType) ) + nLstType = GetParent()->TypeIds().Count(); + } + } + for(sal_uInt16 nEntry = 0; nEntry < aHiddenSortTypeBox.GetEntryCount(); nEntry++) + { + aTypeBox.InsertEntry(aHiddenSortTypeBox.GetEntry(nEntry)); + } + if (nLstType) + aTypeBox.SelectEntry(aItem.aLstType); + else + aTypeBox.SelectEntryPos(0); + aTypeBox.GetSelectHdl().Call( &aTypeBox ); + return 0; +} + +// -------------------------------------------------------------------------- + + + +IMPL_LINK_INLINE_START( SwLabPage, TypeHdl, ListBox *, EMPTYARG ) +{ + DisplayFormat(); + aItem.aType = aTypeBox.GetSelectEntry(); + return 0; +} +IMPL_LINK_INLINE_END( SwLabPage, TypeHdl, ListBox *, EMPTYARG ) + +// -------------------------------------------------------------------------- + + + +void SwLabPage::DisplayFormat() +{ + MetricField aField(this, WinBits(0)); + FieldUnit aMetric = ::GetDfltMetric(sal_False); + SetMetric(aField, aMetric); + aField.SetDecimalDigits(2); + aField.SetMin (0); + aField.SetMax (LONG_MAX); + + SwLabRec* pRec = GetSelectedEntryPos(); + aItem.aLstType = pRec->aType; + SETFLDVAL(aField, pRec->lWidth); + aField.Reformat(); + const String aWString = aField.GetText(); + + SETFLDVAL(aField, pRec->lHeight); + aField.Reformat(); + + String aText = pRec->aType; + aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ": ")); + aText += aWString; + aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x ")); + aText += aField.GetText(); + aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" (")); + aText += String::CreateFromInt32( pRec->nCols ); + aText.AppendAscii( RTL_CONSTASCII_STRINGPARAM(" x ")); + aText += String::CreateFromInt32( pRec->nRows ); + aText += ')'; + aFormatInfo.SetText(aText); +} + +// -------------------------------------------------------------------------- + +SwLabRec* SwLabPage::GetSelectedEntryPos() +{ + String sSelEntry(aTypeBox.GetSelectEntry()); + + return GetParent()->GetRecord(sSelEntry, aContButton.IsChecked()); +} + +// -------------------------------------------------------------------------- + + + +void SwLabPage::InitDatabaseBox() +{ + if( GetNewDBMgr() ) + { + aDatabaseLB.Clear(); + UNO_NMSPC::Sequence<rtl::OUString> aDataNames = SwNewDBMgr::GetExistingDatabaseNames(); + const rtl::OUString* pDataNames = aDataNames.getConstArray(); + for (long i = 0; i < aDataNames.getLength(); i++) + aDatabaseLB.InsertEntry(pDataNames[i]); + String sDBName = sActDBName.GetToken( 0, DB_DELIM ); + String sTableName = sActDBName.GetToken( 1, DB_DELIM ); + aDatabaseLB.SelectEntry(sDBName); + if( sDBName.Len() && GetNewDBMgr()->GetTableNames(&aTableLB, sDBName)) + { + aTableLB.SelectEntry(sTableName); + GetNewDBMgr()->GetColumnNames(&aDBFieldLB, sActDBName, sTableName); + } + else + aDBFieldLB.Clear(); + } +} + +// -------------------------------------------------------------------------- +SfxTabPage* SwLabPage::Create(Window* pParent, const SfxItemSet& rSet) +{ + return new SwLabPage(pParent, rSet); +} + +// -------------------------------------------------------------------------- +void SwLabPage::ActivatePage(const SfxItemSet& rSet) +{ + Reset( rSet ); +} +// -------------------------------------------------------------------------- +int SwLabPage::DeactivatePage(SfxItemSet* _pSet) +{ + if (_pSet) + FillItemSet(*_pSet); + + return sal_True; +} + +// -------------------------------------------------------------------------- + + + +void SwLabPage::FillItem(SwLabItem& rItem) +{ + rItem.bAddr = aAddrBox.IsChecked(); + rItem.aWriting = aWritingEdit.GetText(); + rItem.bCont = aContButton.IsChecked(); + rItem.aMake = aMakeBox.GetSelectEntry(); + rItem.aType = aTypeBox.GetSelectEntry(); + rItem.sDBName = sActDBName; + + SwLabRec* pRec = GetSelectedEntryPos(); + pRec->FillItem( rItem ); + + rItem.aLstMake = aMakeBox.GetSelectEntry(); + rItem.aLstType = aTypeBox.GetSelectEntry(); +} + +// -------------------------------------------------------------------------- + + + +sal_Bool SwLabPage::FillItemSet(SfxItemSet& rSet) +{ + FillItem( aItem ); + rSet.Put( aItem ); + + return sal_True; +} + +// -------------------------------------------------------------------------- + +void SwLabPage::Reset(const SfxItemSet& rSet) +{ + aItem = (const SwLabItem&) rSet.Get(FN_LABEL); + String sDBName = aItem.sDBName; + + String aWriting( aItem.aWriting ); + + aAddrBox .Check ( aItem.bAddr ); + aWritingEdit.SetText ( aWriting.ConvertLineEnd() ); + + const sal_uInt16 nCount = (sal_uInt16)GetParent()->Makes().Count(); + for (sal_uInt16 i = 0; i < nCount; ++i) + { + String &rStr = *GetParent()->Makes()[i]; + if(aMakeBox.GetEntryPos(String(rStr)) == LISTBOX_ENTRY_NOTFOUND) + aMakeBox.InsertEntry( rStr ); + } + + + aMakeBox .SelectEntry( aItem.aMake ); + //save the current type + String sType(aItem.aType); + aMakeBox.GetSelectHdl().Call( &aMakeBox ); + aItem.aType = sType; + //#102806# a newly added make may not be in the type ListBox already + if (aTypeBox.GetEntryPos(String(aItem.aType)) == LISTBOX_ENTRY_NOTFOUND && aItem.aMake.getLength()) + GetParent()->UpdateGroup( aItem.aMake ); + if (aTypeBox.GetEntryPos(String(aItem.aType)) != LISTBOX_ENTRY_NOTFOUND) + { + aTypeBox.SelectEntry(aItem.aType); + aTypeBox.GetSelectHdl().Call(&aTypeBox); + } + if (aDatabaseLB.GetEntryPos(sDBName) != LISTBOX_ENTRY_NOTFOUND) + { + aDatabaseLB.SelectEntry(sDBName); + aDatabaseLB.GetSelectHdl().Call(&aDatabaseLB); + } + + if (aItem.bCont) + aContButton .Check(); + else + aSheetButton.Check(); +} + +/*-- 08.07.99 14:00:02--------------------------------------------------- + + -----------------------------------------------------------------------*/ +//----------------------------------------------------------------------------- +void SwVisitingCardPage::ClearUserData() +{ + SvLBoxEntry* pEntry = aAutoTextLB.First(); + while(pEntry) + { + delete (String*)pEntry->GetUserData(); + pEntry = aAutoTextLB.Next(pEntry); + } +} + +//----------------------------------------------------------------------------- + +void SwVisitingCardPage::SetUserData( sal_uInt32 nCnt, + const rtl::OUString* pNames, const rtl::OUString* pValues ) +{ + for( sal_uInt32 i = 0; i < nCnt; ++i ) + { + SvLBoxEntry* pEntry = aAutoTextLB.InsertEntry( pNames[ i ] ); + pEntry->SetUserData( new String( pValues[ i ] )); + } +} + +//----------------------------------------------------------------------------- + +SwVisitingCardPage::SwVisitingCardPage(Window* pParent, const SfxItemSet& rSet) : + SfxTabPage(pParent, SW_RES(TP_VISITING_CARDS), rSet), + aContentFL(this, SW_RES( FL_CONTENT )), + aAutoTextLB(this, SW_RES( LB_AUTO_TEXT )), + aAutoTextGroupFT(this, SW_RES( FT_AUTO_TEXT_GROUP )), + aAutoTextGroupLB(this, SW_RES( LB_AUTO_TEXT_GROUP )), + aExampleWIN(this, SW_RES( WIN_EXAMPLE )), + sVisCardGroup(SW_RES(ST_VISCARD_GROUP)), + pExampleFrame(0) +{ + FreeResource(); + aAutoTextLB.SetStyle( aAutoTextLB.GetStyle() | WB_HSCROLL ); + aAutoTextLB.SetSpaceBetweenEntries(0); + aAutoTextLB.SetSelectionMode( SINGLE_SELECTION ); + aAutoTextLB.SetHelpId(HID_BUSINESS_CARD_CONTENT); + + SetExchangeSupport(); + aAutoTextLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl)); + aAutoTextGroupLB.SetSelectHdl(LINK(this, SwVisitingCardPage, AutoTextSelectHdl)); + + aExampleWIN.Hide(); + + aAutoTextLB.Show(); + aAutoTextGroupFT.Show(); + aAutoTextGroupLB.Show(); + InitFrameControl(); +} +/*-- 08.07.99 14:00:03--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwVisitingCardPage::~SwVisitingCardPage() +{ + for(sal_uInt16 i = 0; i < aAutoTextGroupLB.GetEntryCount(); i++) + delete (String*)aAutoTextGroupLB.GetEntryData( i ); + _xAutoText = 0; + + ClearUserData(); + delete pExampleFrame; +} +/*-- 08.07.99 14:00:03--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SfxTabPage* SwVisitingCardPage::Create(Window* pParent, const SfxItemSet& rSet) +{ + return new SwVisitingCardPage(pParent, rSet); +} +/*-- 08.07.99 14:00:03--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwVisitingCardPage::ActivatePage(const SfxItemSet& rSet) +{ + Reset( rSet ); + UpdateFields(); +} +/*-- 08.07.99 14:00:04--------------------------------------------------- + + -----------------------------------------------------------------------*/ +int SwVisitingCardPage::DeactivatePage(SfxItemSet* _pSet) +{ + if (_pSet) + FillItemSet(*_pSet); + return LEAVE_PAGE; +} +/*-- 08.07.99 14:00:04--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwVisitingCardPage::FillItemSet(SfxItemSet& rSet) +{ + String* pGroup = (String*)aAutoTextGroupLB.GetEntryData( + aAutoTextGroupLB.GetSelectEntryPos()); + DBG_ASSERT(pGroup, "no group selected?"); + if(pGroup) + aLabItem.sGlossaryGroup = *pGroup; + + SvLBoxEntry* pSelEntry = aAutoTextLB.FirstSelected(); + if(pSelEntry) + aLabItem.sGlossaryBlockName = *(String*)pSelEntry->GetUserData(); + rSet.Put(aLabItem); + return sal_True; +} +/*-- 08.07.99 14:00:05--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void lcl_SelectBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName) +{ + SvLBoxEntry* pEntry = rAutoTextLB.First(); + while(pEntry) + { + if(*(String*)pEntry->GetUserData() == rBlockName) + { + rAutoTextLB.Select(pEntry); + rAutoTextLB.MakeVisible(pEntry); + break; + } + pEntry = rAutoTextLB.Next(pEntry); + } +} +//----------------------------------------------------------------------------- +sal_Bool lcl_FindBlock(SvTreeListBox& rAutoTextLB, const String& rBlockName) +{ + SvLBoxEntry* pEntry = rAutoTextLB.First(); + while(pEntry) + { + if(*(String*)pEntry->GetUserData() == rBlockName) + { + rAutoTextLB.Select(pEntry); + return sal_True; + } + pEntry = rAutoTextLB.Next(pEntry); + } + return sal_False; +} + +//----------------------------------------------------------------------------- +void SwVisitingCardPage::Reset(const SfxItemSet& rSet) +{ + aLabItem = (const SwLabItem&) rSet.Get(FN_LABEL); + + sal_Bool bFound = sal_False; + sal_uInt16 i; + for(i = 0; i < aAutoTextGroupLB.GetEntryCount() && !bFound; i++) + if( String(aLabItem.sGlossaryGroup) == + *(String*)aAutoTextGroupLB.GetEntryData( i )) + { + bFound = sal_True; + break; + } + + if(!bFound) + { + // initially search for a group starting with "crd" which is the name of the + // business card AutoTexts + for(i = 0; i < aAutoTextGroupLB.GetEntryCount() && !bFound; i++) + if(0 == (*(String*)aAutoTextGroupLB.GetEntryData( i )).SearchAscii( "crd") ) + { + bFound = sal_True; + break; + } + } + if(bFound) + { + if(aAutoTextGroupLB.GetSelectEntryPos() != i) + { + aAutoTextGroupLB.SelectEntryPos(i); + AutoTextSelectHdl(&aAutoTextGroupLB); + } + if(lcl_FindBlock(aAutoTextLB, aLabItem.sGlossaryBlockName)) + { + SvLBoxEntry* pSelEntry = aAutoTextLB.FirstSelected(); + if( pSelEntry && + *(String*)pSelEntry->GetUserData() != String(aLabItem.sGlossaryBlockName)) + { + lcl_SelectBlock(aAutoTextLB, aLabItem.sGlossaryBlockName); + AutoTextSelectHdl(&aAutoTextLB); + } + } + } +} + +/* -----------------29.09.99 08:55------------------- + + --------------------------------------------------*/ +SwPrivateDataPage::SwPrivateDataPage(Window* pParent, const SfxItemSet& rSet) : + SfxTabPage(pParent, SW_RES(TP_PRIVATE_DATA), rSet), + aDataFL (this, SW_RES( FL_DATA )), + + aNameFT (this, SW_RES( FT_NAME )), + aFirstNameED (this, SW_RES( ED_FIRSTNAME )), + aNameED (this, SW_RES( ED_NAME )), + aShortCutED (this, SW_RES( ED_SHORTCUT )), + + aName2FT (this, SW_RES( FT_NAME_2 )), + aFirstName2ED (this, SW_RES( ED_FIRSTNAME_2)), + aName2ED (this, SW_RES( ED_NAME_2 )), + aShortCut2ED (this, SW_RES( ED_SHORTCUT_2 )), + + aStreetFT (this, SW_RES( FT_STREET )), + aStreetED (this, SW_RES( ED_STREET )), + aZipCityFT (this, SW_RES( FT_ZIPCITY )), + aZipED (this, SW_RES( ED_ZIP )), + aCityED (this, SW_RES( ED_CITY )), + aCountryStateFT (this, SW_RES( FT_COUNTRYSTATE )), + aCountryED (this, SW_RES( ED_COUNTRY )), + aStateED (this, SW_RES( ED_STATE )), + aTitleProfessionFT (this, SW_RES( FT_TITLEPROF )), + aTitleED (this, SW_RES( ED_TITLE )), + aProfessionED (this, SW_RES( ED_PROFESSION )), + aPhoneFT (this, SW_RES( FT_PHONE_MOBILE )), + aPhoneED (this, SW_RES( ED_PHONE )), + aMobilePhoneED (this, SW_RES( ED_MOBILE )), + aFaxFT (this, SW_RES( FT_FAX )), + aFaxED (this, SW_RES( ED_FAX )), + aWWWMailFT (this, SW_RES( FT_WWWMAIL )), + aHomePageED (this, SW_RES( ED_WWW )), + aMailED (this, SW_RES( ED_MAIL )) +{ + FreeResource(); + SetExchangeSupport(); +} + +/*-- 29.09.99 08:55:57--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwPrivateDataPage::~SwPrivateDataPage() +{ +} +/*-- 29.09.99 08:55:57--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SfxTabPage* SwPrivateDataPage::Create(Window* pParent, const SfxItemSet& rSet) +{ + return new SwPrivateDataPage(pParent, rSet); +} +/*-- 29.09.99 08:55:57--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwPrivateDataPage::ActivatePage(const SfxItemSet& rSet) +{ + Reset(rSet); +} +/*-- 29.09.99 08:55:58--------------------------------------------------- + + -----------------------------------------------------------------------*/ +int SwPrivateDataPage::DeactivatePage(SfxItemSet* _pSet) +{ + if (_pSet) + FillItemSet(*_pSet); + return LEAVE_PAGE; +} +/*-- 29.09.99 08:55:58--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwPrivateDataPage::FillItemSet(SfxItemSet& rSet) +{ + + SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL); + aItem.aPrivFirstName = aFirstNameED .GetText(); + aItem.aPrivName = aNameED .GetText( ); + aItem.aPrivShortCut = aShortCutED .GetText( ); + aItem.aPrivFirstName2 = aFirstName2ED .GetText(); + aItem.aPrivName2 = aName2ED .GetText( ); + aItem.aPrivShortCut2 = aShortCut2ED .GetText( ); + aItem.aPrivStreet = aStreetED .GetText( ); + aItem.aPrivZip = aZipED .GetText( ); + aItem.aPrivCity = aCityED .GetText( ); + aItem.aPrivCountry = aCountryED .GetText( ); + aItem.aPrivState = aStateED .GetText( ); + aItem.aPrivTitle = aTitleED .GetText( ); + aItem.aPrivProfession= aProfessionED.GetText( ); + aItem.aPrivPhone = aPhoneED .GetText( ); + aItem.aPrivMobile = aMobilePhoneED.GetText( ); + aItem.aPrivFax = aFaxED .GetText( ); + aItem.aPrivWWW = aHomePageED .GetText( ); + aItem.aPrivMail = aMailED .GetText( ); + + rSet.Put(aItem); + return sal_True; +} +/*-- 29.09.99 08:55:59--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwPrivateDataPage::Reset(const SfxItemSet& rSet) +{ + const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL); + aFirstNameED.SetText(aItem.aPrivFirstName); + aNameED .SetText(aItem.aPrivName); + aShortCutED .SetText(aItem.aPrivShortCut); + aFirstName2ED.SetText(aItem.aPrivFirstName2); + aName2ED .SetText(aItem.aPrivName2); + aShortCut2ED .SetText(aItem.aPrivShortCut2); + aStreetED .SetText(aItem.aPrivStreet); + aZipED .SetText(aItem.aPrivZip); + aCityED .SetText(aItem.aPrivCity); + aCountryED .SetText(aItem.aPrivCountry); + aStateED .SetText(aItem.aPrivState); + aTitleED .SetText(aItem.aPrivTitle); + aProfessionED.SetText(aItem.aPrivProfession); + aPhoneED .SetText(aItem.aPrivPhone); + aMobilePhoneED.SetText(aItem.aPrivMobile); + aFaxED .SetText(aItem.aPrivFax); + aHomePageED .SetText(aItem.aPrivWWW); + aMailED .SetText(aItem.aPrivMail); +} +/* -----------------29.09.99 08:56------------------- + + --------------------------------------------------*/ +SwBusinessDataPage::SwBusinessDataPage(Window* pParent, const SfxItemSet& rSet) : + SfxTabPage(pParent, SW_RES(TP_BUSINESS_DATA), rSet), + aDataFL (this, SW_RES( FL_DATA )), + aCompanyFT (this, SW_RES( FT_COMP )), + aCompanyED (this, SW_RES( ED_COMP )), + aCompanyExtFT (this, SW_RES( FT_COMP_EXT )), + aCompanyExtED (this, SW_RES( ED_COMP_EXT )), + aSloganFT (this, SW_RES( FT_SLOGAN )), + aSloganED (this, SW_RES( ED_SLOGAN )), + aStreetFT (this, SW_RES( FT_STREET )), + aStreetED (this, SW_RES( ED_STREET )), + aZipCityFT (this, SW_RES( FT_ZIPCITY )), + aZipED (this, SW_RES( ED_ZIP )), + aCityED (this, SW_RES( ED_CITY )), + aCountryStateFT (this, SW_RES( FT_COUNTRYSTATE )), + aCountryED (this, SW_RES( ED_COUNTRY )), + aStateED (this, SW_RES( ED_STATE )), + aPositionFT (this, SW_RES( FT_POSITION )), + aPositionED (this, SW_RES( ED_POSITION )), + aPhoneFT (this, SW_RES( FT_PHONE_MOBILE )), + aPhoneED (this, SW_RES( ED_PHONE )), + aMobilePhoneED (this, SW_RES( ED_MOBILE )), + aFaxFT (this, SW_RES( FT_FAX )), + aFaxED (this, SW_RES( ED_FAX )), + aWWWMailFT (this, SW_RES( FT_WWWMAIL )), + aHomePageED (this, SW_RES( ED_WWW )), + aMailED (this, SW_RES( ED_MAIL )) +{ + FreeResource(); + SetExchangeSupport(); +} + +/*-- 29.09.99 08:56:06--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SwBusinessDataPage::~SwBusinessDataPage() +{ +} +/*-- 29.09.99 08:56:06--------------------------------------------------- + + -----------------------------------------------------------------------*/ +SfxTabPage* SwBusinessDataPage::Create(Window* pParent, const SfxItemSet& rSet) +{ + return new SwBusinessDataPage(pParent, rSet); +} +/*-- 29.09.99 08:56:06--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwBusinessDataPage::ActivatePage(const SfxItemSet& rSet) +{ + Reset(rSet); +} +/*-- 29.09.99 08:56:06--------------------------------------------------- + + -----------------------------------------------------------------------*/ +int SwBusinessDataPage::DeactivatePage(SfxItemSet* _pSet) +{ + if (_pSet) + FillItemSet(*_pSet); + return LEAVE_PAGE; +} +/*-- 29.09.99 08:56:06--------------------------------------------------- + + -----------------------------------------------------------------------*/ +sal_Bool SwBusinessDataPage::FillItemSet(SfxItemSet& rSet) +{ + SwLabItem aItem = (const SwLabItem&) GetTabDialog()->GetExampleSet()->Get(FN_LABEL); + + aItem.aCompCompany = aCompanyED .GetText(); + aItem.aCompCompanyExt= aCompanyExtED .GetText(); + aItem.aCompSlogan = aSloganED .GetText(); + aItem.aCompStreet = aStreetED .GetText(); + aItem.aCompZip = aZipED .GetText(); + aItem.aCompCity = aCityED .GetText(); + aItem.aCompCountry = aCountryED .GetText(); + aItem.aCompState = aStateED .GetText(); + aItem.aCompPosition = aPositionED .GetText(); + aItem.aCompPhone = aPhoneED .GetText(); + aItem.aCompMobile = aMobilePhoneED .GetText(); + aItem.aCompFax = aFaxED .GetText(); + aItem.aCompWWW = aHomePageED .GetText(); + aItem.aCompMail = aMailED .GetText(); + + rSet.Put(aItem); + return sal_True; +} +/*-- 29.09.99 08:56:07--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwBusinessDataPage::Reset(const SfxItemSet& rSet) +{ + const SwLabItem& aItem = (const SwLabItem&) rSet.Get(FN_LABEL); + aCompanyED .SetText(aItem.aCompCompany); + aCompanyExtED .SetText(aItem.aCompCompanyExt); + aSloganED .SetText(aItem.aCompSlogan); + aStreetED .SetText(aItem.aCompStreet); + aZipED .SetText(aItem.aCompZip); + aCityED .SetText(aItem.aCompCity); + aCountryED .SetText(aItem.aCompCountry); + aStateED .SetText(aItem.aCompState); + aPositionED .SetText(aItem.aCompPosition); + aPhoneED .SetText(aItem.aCompPhone); + aMobilePhoneED .SetText(aItem.aCompMobile); + aFaxED .SetText(aItem.aCompFax); + aHomePageED .SetText(aItem.aCompWWW); + aMailED .SetText(aItem.aCompMail); +} + + + |