diff options
Diffstat (limited to 'sw/source/ui/fldui')
-rw-r--r-- | sw/source/ui/fldui/flddinf.cxx | 80 | ||||
-rw-r--r-- | sw/source/ui/fldui/flddinf.hxx | 7 | ||||
-rw-r--r-- | sw/source/ui/fldui/fldedt.cxx | 18 | ||||
-rw-r--r-- | sw/source/ui/fldui/fldtdlg.cxx | 34 | ||||
-rw-r--r-- | sw/source/ui/fldui/makefile.mk | 1 |
5 files changed, 72 insertions, 68 deletions
diff --git a/sw/source/ui/fldui/flddinf.cxx b/sw/source/ui/fldui/flddinf.cxx index 7859b51c10f4..4bdb5dc005db 100644 --- a/sw/source/ui/fldui/flddinf.cxx +++ b/sw/source/ui/fldui/flddinf.cxx @@ -39,14 +39,11 @@ #include <sfx2/frame.hxx> #include <vcl/svapp.hxx> #include <svl/zforlist.hxx> +#include <svl/zformat.hxx> -#ifndef _HELPID_H #include <helpid.h> -#endif #include <swtypes.hxx> -#ifndef _GLOBALS_HRC #include <globals.hrc> -#endif #include <fldbas.hxx> #include <docufld.hxx> #include <wrtsh.hxx> @@ -63,13 +60,16 @@ #ifndef _VIEW_HXX #include <view.hxx> #endif -#include <svl/zformat.hxx> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/util/Time.hpp> +#include <com/sun/star/util/DateTime.hpp> +#include <com/sun/star/util/Date.hpp> #define USER_DATA_VERSION_1 "1" #define USER_DATA_VERSION USER_DATA_VERSION_1 using namespace nsSwDocInfoSubType; - +using namespace com::sun::star; /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ @@ -103,7 +103,7 @@ SwFldDokInfPage::SwFldDokInfPage(Window* pWindow, const SfxItemSet& rCoreSet ) : SFX_ITEMSET_ARG( &rCoreSet, pItem, SfxUnoAnyItem, SID_DOCINFO, FALSE ); if ( pItem ) - pItem->GetValue() >>= aPropertyNames; + pItem->GetValue() >>= xCustomPropertySet; } /*-------------------------------------------------------------------- @@ -168,24 +168,31 @@ void __EXPORT SwFldDokInfPage::Reset(const SfxItemSet& ) { if (DI_CUSTOM == i) { - if (aPropertyNames.getLength() ) + if(xCustomPropertySet.is() ) { + uno::Reference< beans::XPropertySetInfo > xSetInfo = xCustomPropertySet->getPropertySetInfo(); + const uno::Sequence< beans::Property > rProperties = xSetInfo->getProperties(); +// uno::Sequence< ::rtl::OUString > aPropertyNames(rProperties.getLength()); +// for (sal_Int32 i = 0; i < rProperties.getLength(); ++i) { +// aPropertyNames[i] = rProperties[i].Name; +// } //if ( !IsFldEdit() ) + if( rProperties.getLength() ) { pInfo = aTypeTLB.InsertEntry( String(SW_RES( STR_CUSTOM )) ); pInfo->SetUserData(reinterpret_cast<void*>(USHRT_MAX)); - } - for (sal_Int32 n=0; n<aPropertyNames.getLength(); n++) - { - rtl::OUString sEntry = aPropertyNames[n]; - pEntry = aTypeTLB.InsertEntry(sEntry, pInfo); - if(m_sOldCustomFieldName.equals( sEntry )) + for (sal_Int32 n=0; n < rProperties.getLength(); n++) { - pSelEntry = pEntry; - aTypeTLB.Expand( pInfo ); + rtl::OUString sEntry = rProperties[n].Name; + pEntry = aTypeTLB.InsertEntry(sEntry, pInfo); + if(m_sOldCustomFieldName.equals( sEntry )) + { + pSelEntry = pEntry; + aTypeTLB.Expand( pInfo ); + } + pEntry->SetUserData(reinterpret_cast<void*>(i)); } - pEntry->SetUserData(reinterpret_cast<void*>(i)); } } } @@ -263,12 +270,12 @@ IMPL_LINK( SwFldDokInfPage, TypeHdl, ListBox *, EMPTYARG ) /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ - IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) { USHORT nSubType = (USHORT)(ULONG)pSelEntry->GetUserData(); USHORT nPos = aSelectionLB.GetSelectEntryPos(); USHORT nExtSubType; + USHORT nNewType = 0; if (nSubType != DI_EDIT) { @@ -279,7 +286,33 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) aFormatLB.Clear(); aFormatLB.Enable(FALSE); aFormatFT.Enable(FALSE); - return 0; + if( nSubType == DI_CUSTOM ) + { + //find out which type the custom field has - for a start set to DATE format + ::rtl::OUString sName = aTypeTLB.GetEntryText(pSelEntry); + try + { + uno::Any aVal = xCustomPropertySet->getPropertyValue( sName ); + const uno::Type& rValueType = aVal.getValueType(); + if( rValueType == ::getCppuType( (util::DateTime*)0 )) + { + nNewType = NUMBERFORMAT_DATETIME; + } + else if( rValueType == ::getCppuType( (util::Date*)0 )) + { + nNewType = NUMBERFORMAT_DATE; + } + else if( rValueType == ::getCppuType( (util::Time*)0 )) + { + nNewType = NUMBERFORMAT_TIME; + } + } + catch( const uno::Exception& ) + { + } + } + else + return 0; } nPos = 0; } @@ -290,7 +323,6 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) nExtSubType = DI_SUB_TIME; USHORT nOldType = 0; - USHORT nNewType = 0; BOOL bEnable = FALSE; BOOL bOneArea = FALSE; @@ -312,7 +344,6 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) bOneArea = TRUE; break; } - if (!nNewType) { aFormatLB.Clear(); @@ -334,7 +365,7 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) if (IsFldEdit()) { nPos = aSelectionLB.GetSelectEntryPos(); - if (nPos != LISTBOX_ENTRY_NOTFOUND) + if (nPos != LISTBOX_ENTRY_NOTFOUND ) { nSubType = (USHORT)(ULONG)aSelectionLB.GetEntryData(nPos); @@ -346,7 +377,6 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) SwWrtShell *pSh = GetWrtShell(); if(pSh) { - SvNumberFormatter* pFormatter = pSh->GetNumberFormatter(); LanguageType eLang = aFormatLB.GetCurLanguage(); if (nNewType == NUMBERFORMAT_DATE) @@ -358,6 +388,10 @@ IMPL_LINK( SwFldDokInfPage, SubTypeHdl, ListBox *, EMPTYARG ) aFormatLB.SetDefFormat(nFormat); } } + else if( (nSubType == DI_CUSTOM) && (nNewType != 0) ) + { + aFormatLB.SetDefFormat(nFormat); + } } aFormatLB.Enable(bEnable); diff --git a/sw/source/ui/fldui/flddinf.hxx b/sw/source/ui/fldui/flddinf.hxx index 2b72b1aec33a..0d46c873f342 100644 --- a/sw/source/ui/fldui/flddinf.hxx +++ b/sw/source/ui/fldui/flddinf.hxx @@ -33,15 +33,16 @@ #include <sfx2/tabdlg.hxx> #include <vcl/fixed.hxx> #include <vcl/lstbox.hxx> -#ifndef _SV_BUTTON_HXX //autogen #include <vcl/button.hxx> -#endif #include <vcl/group.hxx> #include <svtools/svtreebx.hxx> #include "numfmtlb.hxx" #include "fldpage.hxx" +namespace com{namespace sun{ namespace star{ namespace beans{ + class XPropertySet; +}}}} /*-------------------------------------------------------------------- Beschreibung: --------------------------------------------------------------------*/ @@ -57,7 +58,7 @@ class SwFldDokInfPage : public SwFldPage CheckBox aFixedCB; SvLBoxEntry* pSelEntry; - com::sun::star::uno::Sequence < ::rtl::OUString > aPropertyNames; + com::sun::star::uno::Reference < ::com::sun::star::beans::XPropertySet > xCustomPropertySet; String aInfoStr; diff --git a/sw/source/ui/fldui/fldedt.cxx b/sw/source/ui/fldui/fldedt.cxx index c0ee8f2e0a98..318ca160c670 100644 --- a/sw/source/ui/fldui/fldedt.cxx +++ b/sw/source/ui/fldui/fldedt.cxx @@ -226,15 +226,15 @@ SfxTabPage* SwFldEditDlg::CreatePage(USHORT nGroup) uno::Reference< beans::XPropertySet > xUDProps( xDocProps->getUserDefinedProperties(), uno::UNO_QUERY_THROW); - uno::Reference< beans::XPropertySetInfo > xSetInfo - = xUDProps->getPropertySetInfo(); - const uno::Sequence< beans::Property > props - = xSetInfo->getProperties(); - uno::Sequence< ::rtl::OUString > names(props.getLength()); - for (sal_Int32 i = 0; i < props.getLength(); ++i) { - names[i] = props[i].Name; - } - pSet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(names) ) ); +// uno::Reference< beans::XPropertySetInfo > xSetInfo +// = xUDProps->getPropertySetInfo(); +// const uno::Sequence< beans::Property > props +// = xSetInfo->getProperties(); +// uno::Sequence< ::rtl::OUString > names(props.getLength()); +// for (sal_Int32 i = 0; i < props.getLength(); ++i) { +// names[i] = props[i].Name; +// } + pSet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(xUDProps) ) ); pTabPage = SwFldDokInfPage::Create(this, *pSet); nHelpId = HID_EDIT_FLD_DOKINF; break; diff --git a/sw/source/ui/fldui/fldtdlg.cxx b/sw/source/ui/fldui/fldtdlg.cxx index 0de17286fcad..31388cd2e51e 100644 --- a/sw/source/ui/fldui/fldtdlg.cxx +++ b/sw/source/ui/fldui/fldtdlg.cxx @@ -48,47 +48,23 @@ #include <vcl/msgbox.hxx> #include <svx/htmlmode.hxx> #include <viewopt.hxx> -#ifndef _DOCSH_HXX #include <docsh.hxx> -#endif #include <fldwrap.hxx> -#ifndef _FLDDB_HXX #include <flddb.hxx> -#endif -#ifndef _FLDDINF_HXX #include <flddinf.hxx> -#endif -#ifndef _FLDVAR_HXX #include <fldvar.hxx> -#endif -#ifndef _FLDDOK_HXX #include <flddok.hxx> -#endif -#ifndef _FLDFUNC_HXX #include <fldfunc.hxx> -#endif -#ifndef _FLDREF_HXX #include <fldref.hxx> -#endif #include <wrtsh.hxx> #include <view.hxx> -#ifndef _FLDTDLG_HXX #include <fldtdlg.hxx> -#endif #include <swmodule.hxx> -#ifndef _HELPID_H #include <helpid.h> -#endif -#ifndef _FLDUI_HRC #include <fldui.hrc> -#endif -#ifndef _GLOBALS_HRC #include <globals.hrc> -#endif -#ifndef _FLDTDLG_HRC #include <fldtdlg.hrc> -#endif #include <com/sun/star/document/XDocumentProperties.hpp> #include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> @@ -245,15 +221,7 @@ SfxItemSet* SwFldDlg::CreateInputItemSet( USHORT nID ) uno::Reference< beans::XPropertySet > xUDProps( xDocProps->getUserDefinedProperties(), uno::UNO_QUERY_THROW); - uno::Reference< beans::XPropertySetInfo > xSetInfo - = xUDProps->getPropertySetInfo(); - const uno::Sequence< beans::Property > props - = xSetInfo->getProperties(); - uno::Sequence< ::rtl::OUString > names(props.getLength()); - for (sal_Int32 i = 0; i < props.getLength(); ++i) { - names[i] = props[i].Name; - } - pISet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(names) ) ); + pISet->Put( SfxUnoAnyItem( SID_DOCINFO, uno::makeAny(xUDProps) ) ); return pISet; } else diff --git a/sw/source/ui/fldui/makefile.mk b/sw/source/ui/fldui/makefile.mk index a94fdaef17e7..23160cf80fb8 100644 --- a/sw/source/ui/fldui/makefile.mk +++ b/sw/source/ui/fldui/makefile.mk @@ -80,6 +80,7 @@ SLOFILES = \ EXCEPTIONSFILES = \ $(SLO)$/fldtdlg.obj \ $(SLO)$/fldedt.obj \ + $(SLO)$/flddinf.obj \ $(SLO)$/xfldui.obj LIB1TARGET = $(SLB)$/$(TARGET).lib |