User: kz Date: 2008-03-05 18:05:58+0000 Modified: dba/reportdesign/source/filter/xml/xmlSubDocument.cxx
Log: INTEGRATION: CWS rptchart01_DEV300 (1.3.36); FILE MERGED 2008/02/13 07:12:21 oj 1.3.36.2: #i85225# impl sub-document 2008/01/25 13:56:45 oj 1.3.36.1: #i85225# removed File Changes: Directory: /dba/reportdesign/source/filter/xml/ =============================================== File [changed]: xmlSubDocument.cxx Url: http://dba.openoffice.org/source/browse/dba/reportdesign/source/filter/xml/xmlSubDocument.cxx?r1=1.3&r2=1.4 Delta lines: +59 -12 --------------------- --- xmlSubDocument.cxx 2007-09-26 14:24:27+0000 1.3 +++ xmlSubDocument.cxx 2008-03-05 18:05:55+0000 1.4 @@ -55,10 +55,12 @@ #ifndef RPT_XMLMASTERFIELDS_HXX #include "xmlMasterFields.hxx" #endif +#include "xmlTable.hxx" #ifndef _TOOLS_DEBUG_HXX #include <tools/debug.hxx> #endif - +#include <comphelper/property.hxx> +#include <com/sun/star/report/XReportControlModel.hpp> namespace rptxml { @@ -71,13 +73,15 @@ OXMLSubDocument::OXMLSubDocument( ORptFilter& rImport, sal_uInt16 nPrfx ,const ::rtl::OUString& rLName - ,const Reference< XReportDefinition > & _xComponent + ,const Reference< XReportComponent > & _xComponent ,OXMLTable* _pContainer) : OXMLReportElementBase( rImport, nPrfx, rLName,_xComponent.get(),_pContainer) -,m_xComponent(_xComponent) +,m_xFake(_xComponent) +,m_nCurrentCount(0) +,m_bContainsShape(false) { DBG_CTOR( rpt_OXMLSubDocument,NULL); - OSL_ENSURE(m_xComponent.is(),"Component is NULL!"); + } // ----------------------------------------------------------------------------- @@ -87,15 +91,15 @@ } // ----------------------------------------------------------------------------- -SvXMLImportContext* OXMLSubDocument::CreateChildContext( +SvXMLImportContext* OXMLSubDocument::_CreateChildContext( sal_uInt16 _nPrefix, const ::rtl::OUString& _rLocalName, const Reference< XAttributeList > & xAttrList ) { - SvXMLImportContext *pContext = OXMLReportElementBase::CreateChildContext(_nPrefix,_rLocalName,xAttrList); + SvXMLImportContext *pContext = OXMLReportElementBase::_CreateChildContext(_nPrefix,_rLocalName,xAttrList); if ( pContext ) return pContext; - const SvXMLTokenMap& rTokenMap = static_cast<ORptFilter&>(GetImport()).GetSubDocumentElemTokenMap(); + const SvXMLTokenMap& rTokenMap = static_cast<ORptFilter&>(GetImport()).GetReportElemTokenMap(); switch( rTokenMap.Get( _nPrefix, _rLocalName ) ) { @@ -105,6 +109,16 @@ pContext = new OXMLMasterFields(static_cast<ORptFilter&>(GetImport()), _nPrefix, _rLocalName,xAttrList ,this); } break; + case XML_TOK_SUB_FRAME: + { + if ( !m_bContainsShape ) + m_nCurrentCount = m_pContainer->getSection()->getCount(); + UniReference< XMLShapeImportHelper > xShapeImportHelper = GetImport().GetShapeImport(); + uno::Reference< drawing::XShapes > xShapes = m_pContainer->getSection().get(); + pContext = xShapeImportHelper->CreateGroupChildContext(GetImport(),_nPrefix,_rLocalName,xAttrList,xShapes); + m_bContainsShape = true; + } + break; default: break; } @@ -117,13 +131,46 @@ // ----------------------------------------------------------------------------- void OXMLSubDocument::EndElement() { + if ( m_bContainsShape ) + { + m_xComponent.set(m_pContainer->getSection()->getByIndex(m_nCurrentCount),uno::UNO_QUERY); + if ( m_xComponent.is() ) + { + m_pContainer->addCell(m_xComponent.get()); + if ( !m_aMasterFields.empty() ) m_xComponent->setMasterFields(Sequence< ::rtl::OUString>(&*m_aMasterFields.begin(),m_aMasterFields.size())); if ( !m_aDetailFields.empty() ) m_xComponent->setDetailFields(Sequence< ::rtl::OUString>(&*m_aDetailFields.begin(),m_aDetailFields.size())); + + m_xComponent->setName(m_xFake->getName()); + m_xComponent->setPrintRepeatedValues(m_xFake->getPrintRepeatedValues()); + uno::Reference< report::XReportControlModel > xFakeModel(m_xFake,uno::UNO_QUERY); + uno::Reference< report::XReportControlModel > xComponentModel(m_xComponent,uno::UNO_QUERY); + if ( xComponentModel.is() && xFakeModel.is() ) + { + const sal_Int32 nCount = xFakeModel->getCount(); + try + { + for (sal_Int32 i = 0; i < nCount ; ++i) + { + uno::Reference< report::XFormatCondition > xCond(xFakeModel->getByIndex(i),uno::UNO_QUERY); + uno::Reference< report::XFormatCondition > xNewCond = xComponentModel->createFormatCondition(); + ::comphelper::copyProperties(xCond.get(),xNewCond.get()); + xComponentModel->insertByIndex(xComponentModel->getCount(),uno::makeAny(xNewCond)); + } // for (sal_Int32 i = 0; i < nCount ; ++i) + } + catch(uno::Exception&) + { + OSL_ENSURE(0,"Can not access format condition!"); + } + + } + } + } } // ----------------------------------------------------------------------------- -void OXMLSubDocument::addFieldPair(const ::std::pair< ::rtl::OUString,::rtl::OUString >& _aPair) +void OXMLSubDocument::addMasterDetailPair(const ::std::pair< ::rtl::OUString,::rtl::OUString >& _aPair) { m_aMasterFields.push_back(_aPair.first); m_aDetailFields.push_back(_aPair.second); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
