summaryrefslogtreecommitdiff
path: root/sw/source/ui/envelp/labelexp.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/ui/envelp/labelexp.cxx')
-rw-r--r--sw/source/ui/envelp/labelexp.cxx281
1 files changed, 281 insertions, 0 deletions
diff --git a/sw/source/ui/envelp/labelexp.cxx b/sw/source/ui/envelp/labelexp.cxx
new file mode 100644
index 000000000000..22e281cfcef7
--- /dev/null
+++ b/sw/source/ui/envelp/labelexp.cxx
@@ -0,0 +1,281 @@
+/*************************************************************************
+ *
+ * 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 <com/sun/star/text/XTextFieldsSupplier.hpp>
+#include <com/sun/star/util/XRefreshable.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <comphelper/processfactory.hxx>
+#include <swtypes.hxx>
+#include <labfmt.hxx>
+#include <unotools.hxx>
+#include <unoatxt.hxx>
+#include <unomid.h>
+#include <unoprnms.hxx>
+
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::lang;
+using namespace ::com::sun::star::container;
+using namespace ::com::sun::star::uno;
+using namespace ::comphelper;
+using ::rtl::OUString;
+
+#ifdef SW_PROP_NAME_STR
+#undef SW_PROP_NAME_STR
+#endif
+#define SW_PROP_NAME_STR(nId) SwGetPropName((nId)).pName
+
+/* -----------------08.07.99 15:15-------------------
+
+ --------------------------------------------------*/
+void SwVisitingCardPage::InitFrameControl()
+{
+ Link aLink(LINK(this, SwVisitingCardPage, FrameControlInitializedHdl));
+ pExampleFrame = new SwOneExampleFrame( aExampleWIN,
+ EX_SHOW_BUSINESS_CARDS, &aLink );
+
+ uno::Reference< lang::XMultiServiceFactory > xMgr =
+ getProcessServiceFactory();
+ //now the AutoText ListBoxes have to be filled
+
+ uno::Reference< uno::XInterface > xAText =
+ xMgr->createInstance( C2U("com.sun.star.text.AutoTextContainer") );
+ _xAutoText = uno::Reference< container::XNameAccess >(xAText, uno::UNO_QUERY);
+
+ uno::Sequence<OUString> aNames = _xAutoText->getElementNames();
+ const OUString* pGroups = aNames.getConstArray();
+ OUString uTitleName( C2U(SW_PROP_NAME_STR(UNO_NAME_TITLE)) );
+
+ for(sal_uInt16 i = 0; i < aNames.getLength(); i++)
+ {
+ uno::Any aGroup = _xAutoText->getByName(pGroups[i]);
+ uno::Reference< text::XAutoTextGroup > xGroup;
+ aGroup >>= xGroup;
+ uno::Reference< container::XIndexAccess > xIdxAcc(xGroup, uno::UNO_QUERY);
+ try
+ {
+ if(!xIdxAcc.is() || xIdxAcc->getCount())
+ {
+ uno::Reference< beans::XPropertySet > xPrSet(xGroup, uno::UNO_QUERY);
+ uno::Any aTitle = xPrSet->getPropertyValue( uTitleName );
+ OUString uTitle;
+ aTitle >>= uTitle;
+ String sGroup(pGroups[i]);
+ sal_uInt16 nEntry = aAutoTextGroupLB.InsertEntry(uTitle);
+ aAutoTextGroupLB.SetEntryData(nEntry, new String(sGroup));
+ }
+ }
+ catch(Exception&)
+ {
+ }
+ }
+ if(aAutoTextGroupLB.GetEntryCount())
+ {
+ if(LISTBOX_ENTRY_NOTFOUND == aAutoTextGroupLB.GetSelectEntryPos())
+ aAutoTextGroupLB.SelectEntryPos(0);
+ String sCurGroupName(
+ *(String*)aAutoTextGroupLB.GetEntryData(aAutoTextGroupLB.GetSelectEntryPos()));
+ if(_xAutoText->hasByName(sCurGroupName))
+ {
+ uno::Any aGroup = _xAutoText->getByName(sCurGroupName);
+ try
+ {
+ uno::Reference< text::XAutoTextGroup > xGroup;
+ aGroup >>= xGroup;
+ uno::Sequence< OUString > aBlockNames = xGroup->getElementNames();
+ uno::Sequence< OUString > aTitles = xGroup->getTitles() ;
+
+ SetUserData( aBlockNames.getLength(), aTitles.getConstArray(),
+ aBlockNames.getConstArray() );
+ }
+ catch( uno::RuntimeException& )
+ {
+ // we'll be her if path settings were wrong
+ }
+ }
+ }
+}
+/* -----------------01.10.99 13:19-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwVisitingCardPage, FrameControlInitializedHdl, void*, EMPTYARG )
+{
+ SvLBoxEntry* pSel = aAutoTextLB.FirstSelected();
+ String sEntry;
+ if( pSel )
+ sEntry = *(String*)pSel->GetUserData();
+ uno::Reference< text::XTextCursor > & xCrsr = pExampleFrame->GetTextCursor();
+ OUString uEntry(sEntry);
+
+ if(LISTBOX_ENTRY_NOTFOUND != aAutoTextGroupLB.GetSelectEntryPos())
+ {
+ String sGroup( *(String*)aAutoTextGroupLB.GetEntryData(
+ aAutoTextGroupLB.GetSelectEntryPos() ) );
+ uno::Any aGroup = _xAutoText->getByName(sGroup);
+ uno::Reference< text::XAutoTextGroup > xGroup;
+ aGroup >>= xGroup;
+
+ if( sEntry.Len() && xGroup->hasByName( uEntry ) )
+ {
+ uno::Any aEntry(xGroup->getByName(uEntry));
+ uno::Reference< text::XAutoTextEntry > xEntry;
+ aEntry >>= xEntry;
+ if(xEntry.is())
+ {
+ uno::Reference< text::XTextRange > xRange(xCrsr, uno::UNO_QUERY);
+ xEntry->applyTo(xRange);
+ }
+ UpdateFields();
+ }
+ }
+ return 0;
+}
+/* -----------------22.07.99 11:06-------------------
+
+ --------------------------------------------------*/
+IMPL_LINK( SwVisitingCardPage, AutoTextSelectHdl, void*, pBox )
+{
+ if(_xAutoText.is())
+ {
+ if( &aAutoTextGroupLB == pBox )
+ {
+ String sGroup( *(String*)aAutoTextGroupLB.GetEntryData(
+ aAutoTextGroupLB.GetSelectEntryPos()));
+ uno::Any aGroup = _xAutoText->getByName(sGroup);
+ uno::Reference< text::XAutoTextGroup > xGroup;
+ aGroup >>= xGroup;
+
+ ClearUserData();
+ aAutoTextLB.Clear();
+
+ uno::Sequence<OUString> aBlockNames = xGroup->getElementNames();
+ uno::Sequence< OUString > aTitles = xGroup->getTitles() ;
+ SetUserData( aBlockNames.getLength(), aTitles.getConstArray(),
+ aBlockNames.getConstArray() );
+ }
+ if(pExampleFrame->IsInitialized())
+ pExampleFrame->ClearDocument( TRUE );
+ }
+ return 0;
+}
+
+/* -----------------01.10.99 11:59-------------------
+
+ --------------------------------------------------*/
+void SwVisitingCardPage::UpdateFields()
+{
+ uno::Reference< frame::XModel > xModel;
+ if( pExampleFrame && (xModel = pExampleFrame->GetModel()).is())
+ {
+ SwLabDlg::UpdateFieldInformation(xModel, aLabItem);
+ }
+}
+/* -----------------01.10.99 15:16-------------------
+
+ --------------------------------------------------*/
+void SwLabDlg::UpdateFieldInformation(uno::Reference< frame::XModel > & xModel, const SwLabItem& rItem)
+{
+ uno::Reference< text::XTextFieldsSupplier > xFlds(xModel, uno::UNO_QUERY);
+ uno::Reference< container::XNameAccess > xFldMasters = xFlds->getTextFieldMasters();
+
+ static const struct _SwLabItemMap {
+ const char* pName;
+ rtl::OUString SwLabItem:: *pValue;
+ } aArr[] = {
+ { "BC_PRIV_FIRSTNAME" , &SwLabItem::aPrivFirstName },
+ { "BC_PRIV_NAME" , &SwLabItem::aPrivName },
+ { "BC_PRIV_INITIALS" , &SwLabItem::aPrivShortCut },
+ { "BC_PRIV_FIRSTNAME_2", &SwLabItem::aPrivFirstName2 },
+ { "BC_PRIV_NAME_2" , &SwLabItem::aPrivName2 },
+ { "BC_PRIV_INITIALS_2" , &SwLabItem::aPrivShortCut2 },
+ { "BC_PRIV_STREET" , &SwLabItem::aPrivStreet },
+ { "BC_PRIV_ZIP" , &SwLabItem::aPrivZip },
+ { "BC_PRIV_CITY" , &SwLabItem::aPrivCity },
+ { "BC_PRIV_COUNTRY" , &SwLabItem::aPrivCountry },
+ { "BC_PRIV_STATE" , &SwLabItem::aPrivState },
+ { "BC_PRIV_TITLE" , &SwLabItem::aPrivTitle },
+ { "BC_PRIV_PROFESSION" , &SwLabItem::aPrivProfession },
+ { "BC_PRIV_PHONE" , &SwLabItem::aPrivPhone },
+ { "BC_PRIV_MOBILE" , &SwLabItem::aPrivMobile },
+ { "BC_PRIV_FAX" , &SwLabItem::aPrivFax },
+ { "BC_PRIV_WWW" , &SwLabItem::aPrivWWW },
+ { "BC_PRIV_MAIL" , &SwLabItem::aPrivMail },
+ { "BC_COMP_COMPANY" , &SwLabItem::aCompCompany },
+ { "BC_COMP_COMPANYEXT" , &SwLabItem::aCompCompanyExt },
+ { "BC_COMP_SLOGAN" , &SwLabItem::aCompSlogan },
+ { "BC_COMP_STREET" , &SwLabItem::aCompStreet },
+ { "BC_COMP_ZIP" , &SwLabItem::aCompZip },
+ { "BC_COMP_CITY" , &SwLabItem::aCompCity },
+ { "BC_COMP_COUNTRY" , &SwLabItem::aCompCountry },
+ { "BC_COMP_STATE" , &SwLabItem::aCompState },
+ { "BC_COMP_POSITION" , &SwLabItem::aCompPosition },
+ { "BC_COMP_PHONE" , &SwLabItem::aCompPhone },
+ { "BC_COMP_MOBILE" , &SwLabItem::aCompMobile },
+ { "BC_COMP_FAX" , &SwLabItem::aCompFax },
+ { "BC_COMP_WWW" , &SwLabItem::aCompWWW },
+ { "BC_COMP_MAIL" , &SwLabItem::aCompMail },
+ { 0, 0 }
+ };
+
+ try
+ {
+ String sFldName( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM(
+ "com.sun.star.text.FieldMaster.User." )));
+ OUString uCntName( C2U( SW_PROP_NAME_STR(UNO_NAME_CONTENT )));
+ for( const _SwLabItemMap* p = aArr; p->pName; ++p )
+ {
+ String sCurFldName( sFldName );
+ sCurFldName.AppendAscii( p->pName );
+ OUString uFldName( sCurFldName );
+ if( xFldMasters->hasByName( uFldName ))
+ {
+ uno::Any aFirstName = xFldMasters->getByName( uFldName );
+ uno::Reference< beans::XPropertySet > xFld;
+ aFirstName >>= xFld;
+ uno::Any aContent;
+ aContent <<= rItem.*p->pValue;
+ xFld->setPropertyValue( uCntName, aContent );
+ }
+ }
+ }
+ catch( uno::RuntimeException&)
+ {
+ //
+ }
+
+ uno::Reference< container::XEnumerationAccess > xFldAcc = xFlds->getTextFields();
+ uno::Reference< util::XRefreshable > xRefresh(xFldAcc, uno::UNO_QUERY);
+ xRefresh->refresh();
+}
+