blob: 31be5336a2cbce012ecf018a09141ecade7365c4 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the 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);
}