User: rt Date: 2008-06-16 13:46:07+0000 Modified: dba/reportdesign/source/ui/report/ReportSection.cxx
Log: INTEGRATION: CWS rptchart02 (1.8.4); FILE MERGED 2008/05/15 12:29:39 oj 1.8.4.7: #i87135# allow to enable e.g. bold for controls as other checks 2008/04/30 13:03:35 oj 1.8.4.6: #i88843# impl clone method 2008/04/16 06:30:36 oj 1.8.4.5: RESYNC: (1.8-1.9); FILE MERGED 2008/04/15 08:34:45 oj 1.8.4.4: #i88295# handle copy n paste 2008/04/03 12:01:46 oj 1.8.4.3: handle delete key properly when ole object is ui active 2008/04/03 06:35:21 oj 1.8.4.2: #i86343# remove unused code 2008/03/12 09:45:18 oj 1.8.4.1: impl chart handling File Changes: Directory: /dba/reportdesign/source/ui/report/ ============================================== File [changed]: ReportSection.cxx Url: http://dba.openoffice.org/source/browse/dba/reportdesign/source/ui/report/ReportSection.cxx?r1=1.9&r2=1.10 Delta lines: +49 -83 --------------------- --- ReportSection.cxx 2008-04-10 19:14:53+0000 1.9 +++ ReportSection.cxx 2008-06-16 13:46:04+0000 1.10 @@ -256,38 +256,41 @@ { try { - uno::Sequence< uno::Reference<util::XCloneable> > aCopies; + uno::Sequence< uno::Reference<report::XReportComponent> > aCopies; pIter->Value >>= aCopies; - const uno::Reference<util::XCloneable>* pCopiesIter = aCopies.getConstArray(); - const uno::Reference<util::XCloneable>* pCopiesEnd = pCopiesIter + aCopies.getLength(); + const uno::Reference<report::XReportComponent>* pCopiesIter = aCopies.getConstArray(); + const uno::Reference<report::XReportComponent>* pCopiesEnd = pCopiesIter + aCopies.getLength(); for (;pCopiesIter != pCopiesEnd ; ++pCopiesIter) { - uno::Reference< report::XReportComponent> xComponent(*pCopiesIter,uno::UNO_QUERY_THROW); - uno::Reference< report::XReportComponent> xClone(xComponent->createClone(),uno::UNO_QUERY_THROW); - Rectangle aRet(VCLPoint(xClone->getPosition()),VCLSize(xClone->getSize())); + SvxShape* pShape = SvxShape::getImplementation( *pCopiesIter ); + SdrObject* pObject = pShape ? pShape->GetSdrObject() : NULL; + if ( pObject ) + { + SdrObject* pNeuObj = pObject->Clone(); + + pNeuObj->SetPage( m_pPage ); + pNeuObj->SetModel( m_pModel.get() ); + SdrInsertReason aReason(SDRREASON_VIEWCALL); + m_pPage->InsertObject(pNeuObj,CONTAINER_APPEND,&aReason); + + Rectangle aRet(VCLPoint((*pCopiesIter)->getPosition()),VCLSize((*pCopiesIter)->getSize())); aRet.setHeight(aRet.getHeight() + 1); aRet.setWidth(aRet.getWidth() + 1); bool bOverlapping = true; while ( bOverlapping ) { - bOverlapping = isOver(aRet,*m_pPage,*m_pView,true); + bOverlapping = isOver(aRet,*m_pPage,*m_pView,true,pNeuObj) != NULL; if ( bOverlapping ) { aRet.Move(0,aRet.getHeight()+1); - xClone->setPositionY(aRet.Top()); + pNeuObj->SetLogicRect(aRet); + //(*pCopiesIter)->setPositionY(aRet.Top()); } } - if ( !bOverlapping ) - { - m_xSection->add(xClone.get()); - SvxShape* pShape = SvxShape::getImplementation( xClone ); - SdrObject* pObject = pShape ? pShape->GetSdrObject() : NULL; - OSL_ENSURE( pObject, "OReportSection::Paste: no SdrObject for the shape!" ); - if ( pObject ) - { - m_pView->AddUndo( m_pView->GetModel()->GetSdrUndoFactory().CreateUndoNewObject( *pObject ) ); - m_pView->MarkObj( pObject, m_pView->GetSdrPageView() ); - } + m_pView->AddUndo( m_pView->GetModel()->GetSdrUndoFactory().CreateUndoNewObject( *pNeuObj ) ); + m_pView->MarkObj( pNeuObj, m_pView->GetSdrPageView() ); + if ( m_xSection.is() && (static_cast<sal_uInt32>(aRet.getHeight() + aRet.Top()) > m_xSection->getHeight()) ) + m_xSection->setHeight(aRet.getHeight() + aRet.Top()); } } } @@ -311,33 +314,6 @@ m_pView->DeleteMarked(); } //---------------------------------------------------------------------------- -BOOL OReportSection::UnmarkDialog() -{ - SdrObject* pDlgObj = m_pPage->GetObj(0); - SdrPageView* pPgView = m_pView->GetSdrPageView(); - - BOOL bWasMarked = m_pView->IsObjMarked( pDlgObj ); - - if( bWasMarked ) - m_pView->MarkObj( pDlgObj, pPgView, TRUE ); - - return bWasMarked; -} - -//---------------------------------------------------------------------------- -BOOL OReportSection::RemarkDialog() -{ - SdrObject* pDlgObj = m_pPage->GetObj(0); - SdrPageView* pPgView = m_pView->GetSdrPageView(); - - BOOL bWasMarked = m_pView->IsObjMarked( pDlgObj ); - - if( !bWasMarked ) - m_pView->MarkObj( pDlgObj, pPgView, FALSE ); - - return bWasMarked; -} -//---------------------------------------------------------------------------- void OReportSection::SetMode( DlgEdMode eNewMode ) { if ( eNewMode != m_eMode ) @@ -374,7 +350,7 @@ const SdrMarkList& rMarkedList = m_pView->GetMarkedObjectList(); const ULONG nMark = rMarkedList.GetMarkCount(); - ::std::vector< uno::Reference<util::XCloneable> > aCopies; + ::std::vector< uno::Reference<report::XReportComponent> > aCopies; aCopies.reserve(nMark); SdrUndoFactory& rUndo = m_pView->GetModel()->GetSdrUndoFactory(); @@ -388,8 +364,8 @@ { try { - uno::Reference<report::XReportComponent> xComponent = pObj->getReportComponent(); - aCopies.push_back(xComponent->createClone()); + SdrObject* pNeuObj = pSdrObject->Clone(); + aCopies.push_back(uno::Reference<report::XReportComponent>(pNeuObj->getUnoShape(),uno::UNO_QUERY)); if ( _bEraseAnddNoClone ) { m_pView->AddUndo( rUndo.CreateUndoDeleteObject( *pSdrObject ) ); @@ -411,7 +387,7 @@ _rAllreadyCopiedObjects.realloc( nLength + 1); beans::NamedValue* pNewValue = _rAllreadyCopiedObjects.getArray() + nLength; pNewValue->Name = m_xSection->getName(); - pNewValue->Value <<= uno::Sequence< uno::Reference<util::XCloneable> >(&(*aCopies.begin()),aCopies.size()); + pNewValue->Value <<= uno::Sequence< uno::Reference<report::XReportComponent> >(&(*aCopies.begin()),aCopies.size()); } } //---------------------------------------------------------------------------- @@ -448,12 +424,6 @@ m_pFunc->MouseMove( rMEvt ); } //---------------------------------------------------------------------------- -bool OReportSection::adjustPageSize() -{ - bool bAdjustedPageSize = false; - return bAdjustedPageSize; -} -//---------------------------------------------------------------------------- void OReportSection::SetGridVisible(BOOL _bVisible) { m_pView->SetGridVisible( _bVisible ); @@ -464,21 +434,6 @@ if ( m_pView ) m_pView->MarkAllObj(); } -// ----------------------------------------------------------------------------- -void OReportSection::setSectionHeightPixel(sal_uInt32 _nHeight) -{ - OSL_ENSURE(m_xSection.is(),"Why is the UNO section NULL!"); - if ( m_xSection.is() ) - m_xSection->setHeight(PixelToLogic(Size(0,_nHeight),MAP_100TH_MM).Width()); -} -//---------------------------------------------------------------------------- -void OReportSection::insertObject(const uno::Reference< report::XReportComponent >& _xObject) -{ - OSL_ENSURE(_xObject.is(),"Object is not valid to create a SdrObject!"); - if ( !_xObject.is() || !m_pView || !m_pPage ) - return; - m_pPage->insertObject(_xObject); -} //---------------------------------------------------------------------------- void OReportSection::Command( const CommandEvent& _rCEvt ) { @@ -616,6 +571,12 @@ return m_pFunc.get() ? m_pFunc->handleKeyEvent(_rEvent) : sal_False; } // ----------------------------------------------------------------------------- +void OReportSection::deactivateOle() +{ + if ( m_pFunc.get() ) + m_pFunc->deactivateOle(true); +} +// ----------------------------------------------------------------------------- void OReportSection::createDefault(const ::rtl::OUString& _sType) { SdrObject* pObj = m_pView->GetCreateObj();//rMarkList.GetMark(0)->GetObj(); @@ -707,7 +668,7 @@ return xModel; } // ----------------------------------------------------------------------------- -void OReportSection::fillControlModelSelection(::std::vector< uno::Reference< report::XReportComponent > >& _rSelection) const +void OReportSection::fillControlModelSelection(::std::vector< uno::Reference< uno::XInterface > >& _rSelection) const { if ( m_pView ) { @@ -832,6 +793,11 @@ m_pFunc->stopScrollTimer(); } // ----------------------------------------------------------------------------- +bool OReportSection::isUiActive() const +{ + return m_pFunc->isUiActive(); +} +// ----------------------------------------------------------------------------- // ============================================================================= } // ============================================================================= --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
