summaryrefslogtreecommitdiff
path: root/reportdesign/source/core/sdr/RptObject.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'reportdesign/source/core/sdr/RptObject.cxx')
-rw-r--r--reportdesign/source/core/sdr/RptObject.cxx1271
1 files changed, 0 insertions, 1271 deletions
diff --git a/reportdesign/source/core/sdr/RptObject.cxx b/reportdesign/source/core/sdr/RptObject.cxx
deleted file mode 100644
index 8e2917653..000000000
--- a/reportdesign/source/core/sdr/RptObject.cxx
+++ /dev/null
@@ -1,1271 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * 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.
- *
- ************************************************************************/
-#include "precompiled_reportdesign.hxx"
-#include "RptObject.hxx"
-#include <vector>
-#include <algorithm>
-
-#include <RptDef.hxx>
-#include <svx/unoshape.hxx>
-#include "RptModel.hxx"
-#include "RptObjectListener.hxx"
-#include <toolkit/helper/vclunohelper.hxx>
-#include <toolkit/helper/convert.hxx>
-#include "RptPage.hxx"
-#include "corestrings.hrc"
-#include <dbaccess/dbsubcomponentcontroller.hxx>
-#include "ModuleHelper.hxx"
-
-#include <RptResId.hrc>
-#include <svx/xflclit.hxx>
-#include <svx/xlnclit.hxx>
-#include <svx/xlndsit.hxx>
-#include <svx/xlineit0.hxx>
-#include <svx/sderitm.hxx>
-#include <svx/xlnwtit.hxx>
-#include <svx/xlntrit.hxx>
-#include <com/sun/star/style/XStyle.hpp>
-#include <com/sun/star/awt/XTabControllerModel.hpp>
-#include <com/sun/star/awt/XUnoControlContainer.hpp>
-#include <com/sun/star/awt/XVclContainerPeer.hpp>
-#include <com/sun/star/awt/XWindow.hpp>
-#include <com/sun/star/awt/TextAlign.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/script/XScriptEventsSupplier.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/report/XShape.hpp>
-#include <com/sun/star/report/XFixedLine.hpp>
-#include <com/sun/star/chart/ChartDataRowSource.hpp>
-#include <com/sun/star/chart2/data/XDataReceiver.hpp>
-#include <com/sun/star/chart2/data/DatabaseDataProvider.hpp>
-#include <com/sun/star/chart2/XChartDocument.hpp>
-#include <com/sun/star/style/VerticalAlignment.hpp>
-#include <com/sun/star/style/ParagraphAdjust.hpp>
-#include <com/sun/star/report/XFormattedField.hpp>
-#include <comphelper/genericpropertyset.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/property.hxx>
-#include <tools/diagnose_ex.h>
-#include "PropertyForward.hxx"
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbconversion.hxx>
-#include "UndoActions.hxx"
-#include "UndoEnv.hxx"
-#include <algorithm>
-#include <functional>
-
-namespace rptui
-{
-
-using namespace ::com::sun::star;
-using namespace uno;
-using namespace beans;
-using namespace reportdesign;
-using namespace container;
-using namespace script;
-using namespace report;
-//----------------------------------------------------------------------------
-sal_uInt16 OObjectBase::getObjectType(const uno::Reference< report::XReportComponent>& _xComponent)
-{
- uno::Reference< lang::XServiceInfo > xServiceInfo( _xComponent , uno::UNO_QUERY );
- OSL_ENSURE(xServiceInfo.is(),"Who deletes the XServiceInfo interface!");
- if ( xServiceInfo.is() )
- {
- if ( xServiceInfo->supportsService( SERVICE_FIXEDTEXT ))
- return OBJ_DLG_FIXEDTEXT;
- if ( xServiceInfo->supportsService( SERVICE_FIXEDLINE ))
- {
- uno::Reference< report::XFixedLine> xFixedLine(_xComponent,uno::UNO_QUERY);
- return xFixedLine->getOrientation() ? OBJ_DLG_HFIXEDLINE : OBJ_DLG_VFIXEDLINE;
- }
- if ( xServiceInfo->supportsService( SERVICE_IMAGECONTROL))
- return OBJ_DLG_IMAGECONTROL;
- if ( xServiceInfo->supportsService( SERVICE_FORMATTEDFIELD ))
- return OBJ_DLG_FORMATTEDFIELD;
- if ( xServiceInfo->supportsService( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.OLE2Shape")) ) )
- return OBJ_OLE2;
- if ( xServiceInfo->supportsService( SERVICE_SHAPE ))
- return OBJ_CUSTOMSHAPE;
- if ( xServiceInfo->supportsService( SERVICE_REPORTDEFINITION ) )
- return OBJ_DLG_SUBREPORT;
- return OBJ_OLE2;
- }
- return 0;
-}
-// -----------------------------------------------------------------------------
-SdrObject* OObjectBase::createObject(const uno::Reference< report::XReportComponent>& _xComponent)
-{
- SdrObject* pNewObj = NULL;
- sal_uInt16 nType = OObjectBase::getObjectType(_xComponent);
- switch( nType )
- {
- case OBJ_DLG_FIXEDTEXT:
- {
- OUnoObject* pUnoObj = new OUnoObject( _xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.FixedText"))
- ,OBJ_DLG_FIXEDTEXT);
- pNewObj = pUnoObj;
-
- uno::Reference<beans::XPropertySet> xControlModel(pUnoObj->GetUnoControlModel(),uno::UNO_QUERY);
- if ( xControlModel.is() )
- xControlModel->setPropertyValue( PROPERTY_MULTILINE,uno::makeAny(sal_True));
- }
- break;
- case OBJ_DLG_IMAGECONTROL:
- pNewObj = new OUnoObject(_xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.DatabaseImageControl"))
- ,OBJ_DLG_IMAGECONTROL);
- break;
- case OBJ_DLG_FORMATTEDFIELD:
- pNewObj = new OUnoObject( _xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.form.component.FormattedField"))
- ,OBJ_DLG_FORMATTEDFIELD);
- break;
- case OBJ_DLG_HFIXEDLINE:
- case OBJ_DLG_VFIXEDLINE:
- pNewObj = new OUnoObject( _xComponent
- ,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.awt.UnoControlFixedLineModel"))
- ,nType);
- break;
- case OBJ_CUSTOMSHAPE:
- pNewObj = OCustomShape::Create( _xComponent );
- try
- {
- sal_Bool bOpaque = sal_False;
- _xComponent->getPropertyValue(PROPERTY_OPAQUE) >>= bOpaque;
- pNewObj->SetLayer(bOpaque ? RPT_LAYER_FRONT : RPT_LAYER_BACK);
- }
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- break;
- case OBJ_DLG_SUBREPORT:
- case OBJ_OLE2:
- pNewObj = OOle2Obj::Create( _xComponent,nType );
- break;
- default:
- OSL_FAIL("Unknown object id");
- break;
- }
-
- ensureSdrObjectOwnership( _xComponent );
-
- return pNewObj;
-}
-// -----------------------------------------------------------------------------
-namespace
-{
- class ParaAdjust : public AnyConverter
- {
- public:
- virtual ::com::sun::star::uno::Any operator() (const ::rtl::OUString& _sPropertyName,const ::com::sun::star::uno::Any& lhs) const
- {
- uno::Any aRet;
- if ( _sPropertyName.equalsAscii(PROPERTY_PARAADJUST) )
- {
- sal_Int16 nTextAlign = 0;
- lhs >>= nTextAlign;
- switch(nTextAlign)
- {
- case awt::TextAlign::LEFT:
- nTextAlign = style::ParagraphAdjust_LEFT;
- break;
- case awt::TextAlign::CENTER:
- nTextAlign = style::ParagraphAdjust_CENTER;
- break;
- case awt::TextAlign::RIGHT:
- nTextAlign = style::ParagraphAdjust_RIGHT;
- break;
- default:
- OSL_FAIL("Illegal text alignment value!");
- break;
- }
- aRet <<= (style::ParagraphAdjust)nTextAlign;
- }
- else
- {
- sal_Int16 nTextAlign = 0;
- sal_Int16 eParagraphAdjust = 0;
- lhs >>= eParagraphAdjust;
- switch(eParagraphAdjust)
- {
- case style::ParagraphAdjust_LEFT:
- case style::ParagraphAdjust_BLOCK:
- nTextAlign = awt::TextAlign::LEFT;
- break;
- case style::ParagraphAdjust_CENTER:
- nTextAlign = awt::TextAlign::CENTER;
- break;
- case style::ParagraphAdjust_RIGHT:
- nTextAlign = awt::TextAlign::RIGHT;
- break;
- default:
- OSL_FAIL("Illegal text alignment value!");
- break;
- }
- aRet <<= nTextAlign;
- }
- return aRet;
- }
- };
-}
-// -----------------------------------------------------------------------------
-const TPropertyNamePair& getPropertyNameMap(sal_uInt16 _nObjectId)
-{
- switch(_nObjectId)
- {
- case OBJ_DLG_IMAGECONTROL:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBACKGROUND,TPropertyConverter(PROPERTY_BACKGROUNDCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDER,TPropertyConverter(PROPERTY_BORDER,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDERCOLOR,TPropertyConverter(PROPERTY_BORDERCOLOR,aNoConverter)));
- }
- return s_aNameMap;
- }
-
- case OBJ_DLG_FIXEDTEXT:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARCOLOR,TPropertyConverter(PROPERTY_TEXTCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBACKGROUND,TPropertyConverter(PROPERTY_BACKGROUNDCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARUNDERLINECOLOR,TPropertyConverter(PROPERTY_TEXTLINECOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARRELIEF,TPropertyConverter(PROPERTY_FONTRELIEF,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARFONTHEIGHT,TPropertyConverter(PROPERTY_FONTHEIGHT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARSTRIKEOUT,TPropertyConverter(PROPERTY_FONTSTRIKEOUT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLTEXTEMPHASISMARK,TPropertyConverter(PROPERTY_FONTEMPHASISMARK,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDER,TPropertyConverter(PROPERTY_BORDER,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDERCOLOR,TPropertyConverter(PROPERTY_BORDERCOLOR,aNoConverter)));
-
- ::boost::shared_ptr<AnyConverter> aParaAdjust(new ParaAdjust());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_PARAADJUST,TPropertyConverter(PROPERTY_ALIGN,aParaAdjust)));
- }
- return s_aNameMap;
- }
- case OBJ_DLG_FORMATTEDFIELD:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARCOLOR,TPropertyConverter(PROPERTY_TEXTCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBACKGROUND,TPropertyConverter(PROPERTY_BACKGROUNDCOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARUNDERLINECOLOR,TPropertyConverter(PROPERTY_TEXTLINECOLOR,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARRELIEF,TPropertyConverter(PROPERTY_FONTRELIEF,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARFONTHEIGHT,TPropertyConverter(PROPERTY_FONTHEIGHT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CHARSTRIKEOUT,TPropertyConverter(PROPERTY_FONTSTRIKEOUT,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLTEXTEMPHASISMARK,TPropertyConverter(PROPERTY_FONTEMPHASISMARK,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDER,TPropertyConverter(PROPERTY_BORDER,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_CONTROLBORDERCOLOR,TPropertyConverter(PROPERTY_BORDERCOLOR,aNoConverter)));
- ::boost::shared_ptr<AnyConverter> aParaAdjust(new ParaAdjust());
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_PARAADJUST,TPropertyConverter(PROPERTY_ALIGN,aParaAdjust)));
- }
- return s_aNameMap;
- }
-
- case OBJ_CUSTOMSHAPE:
- {
- static TPropertyNamePair s_aNameMap;
- if ( s_aNameMap.empty() )
- {
- ::boost::shared_ptr<AnyConverter> aNoConverter(new AnyConverter());
- s_aNameMap.insert(TPropertyNamePair::value_type(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FillColor")),TPropertyConverter(PROPERTY_CONTROLBACKGROUND,aNoConverter)));
- s_aNameMap.insert(TPropertyNamePair::value_type(PROPERTY_PARAADJUST,TPropertyConverter(PROPERTY_ALIGN,aNoConverter)));
- }
- return s_aNameMap;
- }
-
- default:
- break;
- }
- static TPropertyNamePair s_aEmptyNameMap;
- return s_aEmptyNameMap;
-}
-// -----------------------------------------------------------------------------
-
-DBG_NAME( rpt_OObjectBase )
-OObjectBase::OObjectBase(const uno::Reference< report::XReportComponent>& _xComponent)
-:m_bIsListening(sal_False)
-{
- DBG_CTOR( rpt_OObjectBase,NULL);
- m_xReportComponent = _xComponent;
-}
-//----------------------------------------------------------------------------
-OObjectBase::OObjectBase(const ::rtl::OUString& _sComponentName)
-:m_sComponentName(_sComponentName)
-,m_bIsListening(sal_False)
-{
- DBG_CTOR( rpt_OObjectBase,NULL);
-}
-//----------------------------------------------------------------------------
-OObjectBase::~OObjectBase()
-{
- DBG_DTOR( rpt_OObjectBase,NULL);
- m_xMediator.reset();
- if ( isListening() )
- EndListening();
- m_xReportComponent.clear();
-}
-// -----------------------------------------------------------------------------
-uno::Reference< report::XSection> OObjectBase::getSection() const
-{
- uno::Reference< report::XSection> xSection;
- OReportPage* pPage = dynamic_cast<OReportPage*>(GetImplPage());
- if ( pPage )
- xSection = pPage->getSection();
- return xSection;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< report::XReportComponent> OObjectBase::getReportComponent() const
-{
- return m_xReportComponent;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< beans::XPropertySet> OObjectBase::getAwtComponent()
-{
- return uno::Reference< beans::XPropertySet>();
-}
-//----------------------------------------------------------------------------
-void OObjectBase::StartListening()
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- OSL_ENSURE(!isListening(), "OUnoObject::StartListening: already listening!");
-
- if ( !isListening() && m_xReportComponent.is() )
- {
- m_bIsListening = sal_True;
-
- if ( !m_xPropertyChangeListener.is() )
- {
- m_xPropertyChangeListener = new OObjectListener( this );
- // register listener to all properties
- m_xReportComponent->addPropertyChangeListener( ::rtl::OUString() , m_xPropertyChangeListener );
- }
- }
-}
-//----------------------------------------------------------------------------
-void OObjectBase::EndListening(sal_Bool /*bRemoveListener*/)
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- OSL_ENSURE(!m_xReportComponent.is() || isListening(), "OUnoObject::EndListening: not listening currently!");
-
- m_bIsListening = sal_False;
- if ( isListening() && m_xReportComponent.is() )
- {
- // XPropertyChangeListener
- if ( m_xPropertyChangeListener.is() )
- {
- // remove listener
- try
- {
- m_xReportComponent->removePropertyChangeListener( ::rtl::OUString() , m_xPropertyChangeListener );
- }
- catch(uno::Exception)
- {
- OSL_FAIL("OObjectBase::EndListening: Exception caught!");
- }
- }
- m_xPropertyChangeListener.clear();
- }
-}
-//----------------------------------------------------------------------------
-void OObjectBase::SetPropsFromRect(const Rectangle& _rRect)
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- // set properties
- OReportPage* pPage = dynamic_cast<OReportPage*>(GetImplPage());
- if ( pPage && !_rRect.IsEmpty() )
- {
- uno::Reference<report::XSection> xSection = pPage->getSection();
- if ( xSection.is() && (static_cast<sal_uInt32>(_rRect.getHeight() + _rRect.Top()) > xSection->getHeight()) )
- xSection->setHeight(_rRect.getHeight() + _rRect.Top());
-
- // TODO
- //pModel->GetRefDevice()->Invalidate(INVALIDATE_CHILDREN);
- }
-}
-//----------------------------------------------------------------------------
-void OObjectBase::_propertyChange( const beans::PropertyChangeEvent& /*evt*/ ) throw( uno::RuntimeException)
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
-}
-//----------------------------------------------------------------------------
-void OObjectBase::SetObjectItemHelper(const SfxPoolItem& /*rItem*/)
-{
- // do nothing
-}
-
-//----------------------------------------------------------------------------
-sal_Bool OObjectBase::supportsService( const ::rtl::OUString& _sServiceName ) const
-{
- DBG_CHKTHIS( rpt_OObjectBase,NULL);
- sal_Bool bSupports = sal_False;
-
- Reference< lang::XServiceInfo > xServiceInfo( m_xReportComponent , UNO_QUERY );
- // TODO: cache xServiceInfo as member?
- if ( xServiceInfo.is() )
- bSupports = xServiceInfo->supportsService( _sServiceName );
-
- return bSupports;
-}
-
-//----------------------------------------------------------------------------
-void OObjectBase::ensureSdrObjectOwnership( const uno::Reference< uno::XInterface >& _rxShape )
-{
- // UNDO in the report designer is implemented at the level of the XShapes, not
- // at the level of SdrObjects. That is, if an object is removed from the report
- // design, then this happens by removing the XShape from the UNO DrawPage, and
- // putting this XShape (resp. the ReportComponent which wraps it) into an UNDO
- // action.
- // Unfortunately, the SvxDrawPage implementation usually deletes SdrObjects
- // which are removed from it, which is deadly for us. To prevent this,
- // we give the XShape implementation the ownership of the SdrObject, which
- // ensures the SvxDrawPage won't delete it.
- SvxShape* pShape = SvxShape::getImplementation( _rxShape );
- OSL_ENSURE( pShape, "OObjectBase::ensureSdrObjectOwnership: can't access the SvxShape!" );
- if ( pShape )
- {
- OSL_ENSURE( !pShape->HasSdrObjectOwnership(), "OObjectBase::ensureSdrObjectOwnership: called twice?" );
- pShape->TakeSdrObjectOwnership();
- }
-}
-
-//----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OObjectBase::getUnoShapeOf( SdrObject& _rSdrObject )
-{
- uno::Reference< uno::XInterface > xShape( _rSdrObject.getWeakUnoShape() );
- if ( xShape.is() )
- return xShape;
-
- xShape = _rSdrObject.SdrObject::getUnoShape();
- if ( !xShape.is() )
- return xShape;
-
- ensureSdrObjectOwnership( xShape );
-
- m_xKeepShapeAlive = xShape;
- return xShape;
-}
-
-//----------------------------------------------------------------------------
-TYPEINIT1(OCustomShape, SdrObjCustomShape);
-DBG_NAME( rpt_OCustomShape );
-OCustomShape::OCustomShape(const uno::Reference< report::XReportComponent>& _xComponent
- )
- :SdrObjCustomShape()
- ,OObjectBase(_xComponent)
-{
- DBG_CTOR( rpt_OCustomShape, NULL);
- impl_setUnoShape( uno::Reference< uno::XInterface >(_xComponent,uno::UNO_QUERY) );
- m_bIsListening = sal_True;
-}
-//----------------------------------------------------------------------------
-OCustomShape::OCustomShape(const ::rtl::OUString& _sComponentName)
- :SdrObjCustomShape()
- ,OObjectBase(_sComponentName)
-{
- DBG_CTOR( rpt_OCustomShape, NULL);
- m_bIsListening = sal_True;
-}
-
-//----------------------------------------------------------------------------
-OCustomShape::~OCustomShape()
-{
- DBG_DTOR( rpt_OCustomShape, NULL);
-}
-// -----------------------------------------------------------------------------
-sal_uInt16 OCustomShape::GetObjIdentifier() const
-{
- return sal_uInt16(OBJ_CUSTOMSHAPE);
-}
-//----------------------------------------------------------------------------
-sal_uInt32 OCustomShape::GetObjInventor() const
-{
- return ReportInventor;
-}
-//----------------------------------------------------------------------------
-SdrPage* OCustomShape::GetImplPage() const
-{
- return GetPage();
-}
-//----------------------------------------------------------------------------
-void OCustomShape::SetSnapRectImpl(const Rectangle& _rRect)
-{
- SetSnapRect( _rRect );
-}
-//----------------------------------------------------------------------------
-sal_Int32 OCustomShape::GetStep() const
-{
- // get step property
- sal_Int32 nStep = 0;
- OSL_FAIL("Who called me!");
- return nStep;
-}
-//----------------------------------------------------------------------------
-void OCustomShape::NbcMove( const Size& rSize )
-{
- if ( m_bIsListening )
- {
- m_bIsListening = sal_False;
-
- if ( m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- m_xReportComponent->setPositionX(m_xReportComponent->getPositionX() + rSize.A());
- m_xReportComponent->setPositionY(m_xReportComponent->getPositionY() + rSize.B());
- }
-
- // set geometry properties
- SetPropsFromRect(GetSnapRect());
-
- m_bIsListening = sal_True;
- }
- else
- SdrObjCustomShape::NbcMove( rSize );
-}
-//----------------------------------------------------------------------------
-void OCustomShape::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
-{
- SdrObjCustomShape::NbcResize( rRef, xFract, yFract );
-
- SetPropsFromRect(GetSnapRect());
-}
-//----------------------------------------------------------------------------
-void OCustomShape::NbcSetLogicRect(const Rectangle& rRect)
-{
- SdrObjCustomShape::NbcSetLogicRect(rRect);
- SetPropsFromRect(rRect);
-}
-//----------------------------------------------------------------------------
-bool OCustomShape::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
-{
- bool bResult = SdrObjCustomShape::EndCreate(rStat, eCmd);
- if ( bResult )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if ( pRptModel )
- {
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- if ( !m_xReportComponent.is() )
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
- }
- SetPropsFromRect(GetSnapRect());
- }
-
- return bResult;
-}
-
-//----------------------------------------------------------------------------
-void OCustomShape::SetObjectItemHelper(const SfxPoolItem& rItem)
-{
- SetObjectItem(rItem);
- // TODO
- //getSectionWindow()->getView()->AdjustMarkHdl();
-}
-
-// -----------------------------------------------------------------------------
-uno::Reference< beans::XPropertySet> OCustomShape::getAwtComponent()
-{
- return uno::Reference< beans::XPropertySet>(m_xReportComponent,uno::UNO_QUERY);
-}
-
-//----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OCustomShape::getUnoShape()
-{
- uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this );
- if ( !m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- m_xReportComponent.set(xShape,uno::UNO_QUERY);
- }
- return xShape;
-}
-
-//----------------------------------------------------------------------------
-//----------------------------------------------------------------------------
-TYPEINIT1(OUnoObject, SdrUnoObj);
-DBG_NAME( rpt_OUnoObject );
-//----------------------------------------------------------------------------
-OUnoObject::OUnoObject(const ::rtl::OUString& _sComponentName
- ,const ::rtl::OUString& rModelName
- ,sal_uInt16 _nObjectType)
- :SdrUnoObj(rModelName, sal_True)
- ,OObjectBase(_sComponentName)
- ,m_nObjectType(_nObjectType)
-{
- DBG_CTOR( rpt_OUnoObject, NULL);
- if ( rModelName.getLength() )
- impl_initializeModel_nothrow();
-}
-//----------------------------------------------------------------------------
-OUnoObject::OUnoObject(const uno::Reference< report::XReportComponent>& _xComponent
- ,const ::rtl::OUString& rModelName
- ,sal_uInt16 _nObjectType)
- :SdrUnoObj(rModelName, sal_True)
- ,OObjectBase(_xComponent)
- ,m_nObjectType(_nObjectType)
-{
- DBG_CTOR( rpt_OUnoObject, NULL);
- impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) );
-
- if ( rModelName.getLength() )
- impl_initializeModel_nothrow();
-
- if ( rModelName.getLength() )
- impl_initializeModel_nothrow();
-}
-//----------------------------------------------------------------------------
-OUnoObject::~OUnoObject()
-{
- DBG_DTOR( rpt_OUnoObject, NULL);
-}
-// -----------------------------------------------------------------------------
-void OUnoObject::impl_initializeModel_nothrow()
-{
- try
- {
- Reference< XFormattedField > xFormatted( m_xReportComponent, UNO_QUERY );
- if ( xFormatted.is() )
- {
- const Reference< XPropertySet > xModelProps( GetUnoControlModel(), UNO_QUERY_THROW );
- const ::rtl::OUString sTreatAsNumberProperty = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TreatAsNumber" ) );
- xModelProps->setPropertyValue( sTreatAsNumberProperty, makeAny( sal_False ) );
- xModelProps->setPropertyValue( PROPERTY_VERTICALALIGN,m_xReportComponent->getPropertyValue(PROPERTY_VERTICALALIGN));
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-// -----------------------------------------------------------------------------
-void OUnoObject::impl_setReportComponent_nothrow()
-{
- if ( m_xReportComponent.is() )
- return;
-
- OReportModel* pReportModel = static_cast<OReportModel*>(GetModel());
- OSL_ENSURE( pReportModel, "OUnoObject::impl_setReportComponent_nothrow: no report model!" );
- if ( !pReportModel )
- return;
-
- OXUndoEnvironment::OUndoEnvLock aLock( pReportModel->GetUndoEnv() );
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
-
- impl_initializeModel_nothrow();
-}
-// -----------------------------------------------------------------------------
-sal_uInt16 OUnoObject::GetObjIdentifier() const
-{
- return sal_uInt16(m_nObjectType);
-}
-//----------------------------------------------------------------------------
-sal_uInt32 OUnoObject::GetObjInventor() const
-{
- return ReportInventor;
-}
-//----------------------------------------------------------------------------
-SdrPage* OUnoObject::GetImplPage() const
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- return GetPage();
-}
-//----------------------------------------------------------------------------
-void OUnoObject::SetSnapRectImpl(const Rectangle& _rRect)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- SetSnapRect( _rRect );
-}
-//----------------------------------------------------------------------------
-sal_Int32 OUnoObject::GetStep() const
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- // get step property
- sal_Int32 nStep = 0;
- OSL_FAIL("Who called me!");
- return nStep;
-}
-
-//----------------------------------------------------------------------------
-void OUnoObject::NbcMove( const Size& rSize )
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
-
- if ( m_bIsListening )
- {
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- bool bPositionFixed = false;
- Size aUndoSize(0,0);
- bool bUndoMode = false;
- if ( m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if (pRptModel->GetUndoEnv().IsUndoMode())
- {
- // if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode
- bUndoMode = true;
- }
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
-
- // LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point?
- int nNewX = m_xReportComponent->getPositionX() + rSize.A();
- m_xReportComponent->setPositionX(nNewX);
- int nNewY = m_xReportComponent->getPositionY() + rSize.B();
- if (nNewY < 0 && !bUndoMode)
- {
- aUndoSize.B() = abs(nNewY);
- bPositionFixed = true;
- nNewY = 0;
- }
- m_xReportComponent->setPositionY(nNewY);
- }
- if (bPositionFixed)
- {
- GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
- }
- else
- SdrUnoObj::NbcMove( rSize );
-}
-
-//----------------------------------------------------------------------------
-
-void OUnoObject::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- SdrUnoObj::NbcResize( rRef, xFract, yFract );
-
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-void OUnoObject::NbcSetLogicRect(const Rectangle& rRect)
-{
- SdrUnoObj::NbcSetLogicRect(rRect);
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(rRect);
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-
-bool OUnoObject::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- bool bResult = SdrUnoObj::EndCreate(rStat, eCmd);
- if ( bResult )
- {
- impl_setReportComponent_nothrow();
- // set labels
- if ( m_xReportComponent.is() )
- {
- try
- {
- if ( supportsService( SERVICE_FIXEDTEXT ) )
- {
- m_xReportComponent->setPropertyValue( PROPERTY_LABEL, uno::makeAny(GetDefaultName(this)) );
- }
- }
- catch(const uno::Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- impl_initializeModel_nothrow();
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
- }
-
- return bResult;
-}
-//----------------------------------------------------------------------------
-::rtl::OUString OUnoObject::GetDefaultName(const OUnoObject* _pObj)
-{
- sal_uInt16 nResId = 0;
- ::rtl::OUString aDefaultName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HERE WE HAVE TO INSERT OUR NAME!"));
- if ( _pObj->supportsService( SERVICE_FIXEDTEXT ) )
- {
- nResId = RID_STR_CLASS_FIXEDTEXT;
- }
- else if ( _pObj->supportsService( SERVICE_FIXEDLINE ) )
- {
- nResId = RID_STR_CLASS_FIXEDLINE;
- }
- else if ( _pObj->supportsService( SERVICE_IMAGECONTROL ) )
- {
- nResId = RID_STR_CLASS_IMAGECONTROL;
- }
- else if ( _pObj->supportsService( SERVICE_FORMATTEDFIELD ) )
- {
- nResId = RID_STR_CLASS_FORMATTEDFIELD;
- }
-
- if (nResId)
- aDefaultName = ::rtl::OUString( String(ModuleRes(nResId)) );
-
- return aDefaultName;
-}
-
-// -----------------------------------------------------------------------------
-void OUnoObject::_propertyChange( const beans::PropertyChangeEvent& evt ) throw( uno::RuntimeException)
-{
- DBG_CHKTHIS( rpt_OUnoObject,NULL);
- OObjectBase::_propertyChange(evt);
- if (isListening())
- {
- if ( evt.PropertyName == PROPERTY_CHARCOLOR )
- {
- Reference<XPropertySet> xControlModel(GetUnoControlModel(),uno::UNO_QUERY);
- if ( xControlModel.is() )
- {
- OObjectBase::EndListening(sal_False);
- try
- {
- xControlModel->setPropertyValue(PROPERTY_TEXTCOLOR,evt.NewValue);
- }
- catch(uno::Exception&)
- {
- }
- OObjectBase::StartListening();
- }
- }
- else if ( evt.PropertyName == PROPERTY_NAME )
- {
- Reference<XPropertySet> xControlModel(GetUnoControlModel(),uno::UNO_QUERY);
- if ( xControlModel.is() && xControlModel->getPropertySetInfo()->hasPropertyByName(PROPERTY_NAME) )
- {
- // get old name
- ::rtl::OUString aOldName;
- evt.OldValue >>= aOldName;
-
- // get new name
- ::rtl::OUString aNewName;
- evt.NewValue >>= aNewName;
-
- if ( !aNewName.equals(aOldName) )
- {
- // set old name property
- OObjectBase::EndListening(sal_False);
- if ( m_xMediator.is() )
- m_xMediator.get()->stopListening();
- try
- {
- xControlModel->setPropertyValue( PROPERTY_NAME, evt.NewValue );
- }
- catch(uno::Exception&)
- {
- }
- if ( m_xMediator.is() )
- m_xMediator.get()->startListening();
- OObjectBase::StartListening();
- }
- }
- }
- }
-}
-// -----------------------------------------------------------------------------
-void OUnoObject::CreateMediator(sal_Bool _bReverse)
-{
- if ( !m_xMediator.is() )
- {
- impl_setReportComponent_nothrow();
-
- Reference<XPropertySet> xControlModel(GetUnoControlModel(),uno::UNO_QUERY);
- if ( !m_xMediator.is() && m_xReportComponent.is() && xControlModel.is() )
- m_xMediator = TMediator::createFromQuery(new OPropertyMediator(m_xReportComponent.get(),xControlModel,getPropertyNameMap(GetObjIdentifier()),_bReverse));
- OObjectBase::StartListening();
- }
-}
-// -----------------------------------------------------------------------------
-uno::Reference< beans::XPropertySet> OUnoObject::getAwtComponent()
-{
- return Reference<XPropertySet>(GetUnoControlModel(),uno::UNO_QUERY);
-}
-
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OUnoObject::getUnoShape()
-{
- return OObjectBase::getUnoShapeOf( *this );
-}
-// -----------------------------------------------------------------------------
-OUnoObject* OUnoObject::Clone() const
-{
- OUnoObject* pClone = CloneHelper< OUnoObject >();
- if ( pClone )
- {
- Reference<XPropertySet> xSource(const_cast<OUnoObject*>(this)->getUnoShape(),uno::UNO_QUERY);
- Reference<XPropertySet> xDest(pClone->getUnoShape(),uno::UNO_QUERY);
- if ( xSource.is() && xDest.is() )
- comphelper::copyProperties(xSource.get(),xDest.get());
- }
- return pClone;
-}
-//----------------------------------------------------------------------------
-// OOle2Obj
-//----------------------------------------------------------------------------
-TYPEINIT1(OOle2Obj, SdrOle2Obj);
-DBG_NAME( rpt_OOle2Obj );
-OOle2Obj::OOle2Obj(const uno::Reference< report::XReportComponent>& _xComponent,sal_uInt16 _nType)
- :SdrOle2Obj()
- ,OObjectBase(_xComponent)
- ,m_nType(_nType)
- ,m_bOnlyOnce(true)
-{
- DBG_CTOR( rpt_OOle2Obj, NULL);
-
- impl_setUnoShape( uno::Reference< uno::XInterface >( _xComponent, uno::UNO_QUERY ) );
- m_bIsListening = sal_True;
-}
-//----------------------------------------------------------------------------
-OOle2Obj::OOle2Obj(const ::rtl::OUString& _sComponentName,sal_uInt16 _nType)
- :SdrOle2Obj()
- ,OObjectBase(_sComponentName)
- ,m_nType(_nType)
- ,m_bOnlyOnce(true)
-{
- DBG_CTOR( rpt_OOle2Obj, NULL);
- m_bIsListening = sal_True;
-}
-//----------------------------------------------------------------------------
-OOle2Obj::~OOle2Obj()
-{
- DBG_DTOR( rpt_OOle2Obj, NULL);
-}
-// -----------------------------------------------------------------------------
-sal_uInt16 OOle2Obj::GetObjIdentifier() const
-{
- return m_nType;
-}
-//----------------------------------------------------------------------------
-sal_uInt32 OOle2Obj::GetObjInventor() const
-{
- return ReportInventor;
-}
-//----------------------------------------------------------------------------
-SdrPage* OOle2Obj::GetImplPage() const
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- return GetPage();
-}
-//----------------------------------------------------------------------------
-void OOle2Obj::SetSnapRectImpl(const Rectangle& _rRect)
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- SetSnapRect( _rRect );
-}
-//----------------------------------------------------------------------------
-sal_Int32 OOle2Obj::GetStep() const
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- // get step property
- sal_Int32 nStep = 0;
- OSL_FAIL("Who called me!");
- return nStep;
-}
-
-//----------------------------------------------------------------------------
-void OOle2Obj::NbcMove( const Size& rSize )
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
-
- if ( m_bIsListening )
- {
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- bool bPositionFixed = false;
- Size aUndoSize(0,0);
- bool bUndoMode = false;
- if ( m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if (pRptModel->GetUndoEnv().IsUndoMode())
- {
- // if we are locked from outside, then we must not handle wrong moves, we are in UNDO mode
- bUndoMode = true;
- }
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
-
- // LLA: why there exists getPositionX and getPositionY and NOT getPosition() which return a Point?
- int nNewX = m_xReportComponent->getPositionX() + rSize.A();
- // can this hinder us to set components outside the area?
- // if (nNewX < 0)
- // {
- // nNewX = 0;
- // }
- m_xReportComponent->setPositionX(nNewX);
- int nNewY = m_xReportComponent->getPositionY() + rSize.B();
- if (nNewY < 0 && !bUndoMode)
- {
- aUndoSize.B() = abs(nNewY);
- bPositionFixed = true;
- nNewY = 0;
- }
- m_xReportComponent->setPositionY(nNewY);
- }
- if (bPositionFixed)
- {
- GetModel()->AddUndo(GetModel()->GetSdrUndoFactory().CreateUndoMoveObject(*this, aUndoSize));
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
- }
- else
- SdrOle2Obj::NbcMove( rSize );
-}
-
-//----------------------------------------------------------------------------
-
-void OOle2Obj::NbcResize(const Point& rRef, const Fraction& xFract, const Fraction& yFract)
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- SdrOle2Obj::NbcResize( rRef, xFract, yFract );
-
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-void OOle2Obj::NbcSetLogicRect(const Rectangle& rRect)
-{
- SdrOle2Obj::NbcSetLogicRect(rRect);
- // stop listening
- OObjectBase::EndListening(sal_False);
-
- // set geometry properties
- SetPropsFromRect(rRect);
-
- // start listening
- OObjectBase::StartListening();
-}
-//----------------------------------------------------------------------------
-
-bool OOle2Obj::EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd)
-{
- DBG_CHKTHIS( rpt_OOle2Obj,NULL);
- bool bResult = SdrOle2Obj::EndCreate(rStat, eCmd);
- if ( bResult )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- if ( pRptModel )
- {
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- if ( !m_xReportComponent.is() )
- m_xReportComponent.set(getUnoShape(),uno::UNO_QUERY);
- }
- // set geometry properties
- SetPropsFromRect(GetLogicRect());
- }
-
- return bResult;
-}
-
-uno::Reference< beans::XPropertySet> OOle2Obj::getAwtComponent()
-{
- return uno::Reference< beans::XPropertySet>(m_xReportComponent,uno::UNO_QUERY);
-}
-
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > OOle2Obj::getUnoShape()
-{
- uno::Reference< uno::XInterface> xShape = OObjectBase::getUnoShapeOf( *this );
- if ( !m_xReportComponent.is() )
- {
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- OXUndoEnvironment::OUndoEnvLock aLock(pRptModel->GetUndoEnv());
- m_xReportComponent.set(xShape,uno::UNO_QUERY);
- }
- return xShape;
-}
-// -----------------------------------------------------------------------------
-uno::Reference< chart2::data::XDatabaseDataProvider > lcl_getDataProvider(const uno::Reference < embed::XEmbeddedObject >& _xObj)
-{
- uno::Reference< chart2::data::XDatabaseDataProvider > xSource;
- uno::Reference< embed::XComponentSupplier > xCompSupp(_xObj,uno::UNO_QUERY);
- if( xCompSupp.is())
- {
- uno::Reference< chart2::XChartDocument> xChartDoc( xCompSupp->getComponent(), uno::UNO_QUERY );
- if ( xChartDoc.is() )
- {
- xSource.set(xChartDoc->getDataProvider(),uno::UNO_QUERY);
- }
- }
- return xSource;
-}
-// -----------------------------------------------------------------------------
-// Clone() soll eine komplette Kopie des Objektes erzeugen.
-OOle2Obj* OOle2Obj::Clone() const
-{
- OOle2Obj* pObj = CloneHelper< OOle2Obj >();
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- svt::EmbeddedObjectRef::TryRunningState( pObj->GetObjRef() );
- pObj->impl_createDataProvider_nothrow(pRptModel->getReportDefinition().get());
-
- uno::Reference< chart2::data::XDatabaseDataProvider > xSource( lcl_getDataProvider(GetObjRef()) );
- uno::Reference< chart2::data::XDatabaseDataProvider > xDest( lcl_getDataProvider(pObj->GetObjRef()) );
- if ( xSource.is() && xDest.is() )
- comphelper::copyProperties(xSource.get(),xDest.get());
-
- pObj->initializeChart(pRptModel->getReportDefinition().get());
- return pObj;
-}
-// -----------------------------------------------------------------------------
-void OOle2Obj::impl_createDataProvider_nothrow(const uno::Reference< frame::XModel>& _xModel)
-{
- try
- {
- uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef();
- uno::Reference< chart2::data::XDataReceiver > xReceiver;
- uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY );
- if( xCompSupp.is())
- xReceiver.set( xCompSupp->getComponent(), uno::UNO_QUERY );
- OSL_ASSERT( xReceiver.is());
- if( xReceiver.is() )
- {
- uno::Reference< lang::XMultiServiceFactory> xFac(_xModel,uno::UNO_QUERY);
- uno::Reference< chart2::data::XDatabaseDataProvider > xDataProvider( xFac->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.chart2.data.DataProvider"))),uno::UNO_QUERY);
- xReceiver->attachDataProvider( xDataProvider.get() );
- }
- }
- catch(uno::Exception)
- {
- }
-}
-// -----------------------------------------------------------------------------
-void OOle2Obj::initializeOle()
-{
- if ( m_bOnlyOnce )
- {
- m_bOnlyOnce = false;
- uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef();
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
-
- uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY );
- if( xCompSupp.is() )
- {
- uno::Reference< beans::XPropertySet > xChartProps( xCompSupp->getComponent(), uno::UNO_QUERY );
- if ( xChartProps.is() )
- xChartProps->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("NullDate")),uno::makeAny(util::DateTime(0,0,0,0,1,1,1900)));
- }
- }
-}
-// -----------------------------------------------------------------------------
-void OOle2Obj::initializeChart( const uno::Reference< frame::XModel>& _xModel)
-{
- uno::Reference < embed::XEmbeddedObject > xObj = GetObjRef();
- uno::Reference< chart2::data::XDataReceiver > xReceiver;
- uno::Reference< embed::XComponentSupplier > xCompSupp( xObj, uno::UNO_QUERY );
- if( xCompSupp.is())
- xReceiver.set( xCompSupp->getComponent(), uno::UNO_QUERY );
- OSL_ASSERT( xReceiver.is());
- if( xReceiver.is() )
- {
- // lock the model to suppress any internal updates
- uno::Reference< frame::XModel > xChartModel( xReceiver, uno::UNO_QUERY );
- if( xChartModel.is() )
- xChartModel->lockControllers();
-
- if ( !lcl_getDataProvider(xObj).is() )
- impl_createDataProvider_nothrow(_xModel);
-
- OReportModel* pRptModel = static_cast<OReportModel*>(GetModel());
- pRptModel->GetUndoEnv().AddElement(lcl_getDataProvider(xObj));
-
- ::comphelper::NamedValueCollection aArgs;
- aArgs.put( "CellRangeRepresentation", uno::makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "all" ) ) ) );
- aArgs.put( "HasCategories", uno::makeAny( sal_True ) );
- aArgs.put( "FirstCellAsLabel", uno::makeAny( sal_True ) );
- aArgs.put( "DataRowSource", uno::makeAny( chart::ChartDataRowSource_COLUMNS ) );
- xReceiver->setArguments( aArgs.getPropertyValues() );
-
- if( xChartModel.is() )
- xChartModel->unlockControllers();
- }
-}
-// -----------------------------------------------------------------------------
-uno::Reference< style::XStyle> getUsedStyle(const uno::Reference< report::XReportDefinition>& _xReport)
-{
- uno::Reference<container::XNameAccess> xStyles = _xReport->getStyleFamilies();
- uno::Reference<container::XNameAccess> xPageStyles(xStyles->getByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("PageStyles"))),uno::UNO_QUERY);
-
- uno::Reference< style::XStyle> xReturn;
- uno::Sequence< ::rtl::OUString> aSeq = xPageStyles->getElementNames();
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- for(;pIter != pEnd && !xReturn.is() ;++pIter)
- {
- uno::Reference< style::XStyle> xStyle(xPageStyles->getByName(*pIter),uno::UNO_QUERY);
- if ( xStyle->isInUse() )
- xReturn = xStyle;
- }
- return xReturn;
-}
-//----------------------------------------------------------------------------
-//============================================================================
-} // rptui
-//============================================================================
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */