Index: source/filter/inc/XclImpObjects.hxx =================================================================== RCS file: /cvs/sc/sc/source/filter/inc/XclImpObjects.hxx,v retrieving revision 1.8.2.1.2.1 diff -u -r1.8.2.1.2.1 XclImpObjects.hxx --- source/filter/inc/XclImpObjects.hxx 6 Feb 2003 11:43:59 -0000 1.8.2.1.2.1 +++ source/filter/inc/XclImpObjects.hxx 25 Mar 2003 10:29:24 -0000 @@ -419,6 +419,7 @@ XclImpEscherObjList aEscherObjList; XclImpEscherObj* pCurrEscherObj; + SvxMSDffSolverContainer* pSolverContainer; sal_Bool bLeadingTxo; sal_Bool bMaybeTxo; @@ -457,6 +458,8 @@ inline sal_Bool IsCurrObjChart() const; void SetNewCurrObjChart(); + inline SvxMSDffSolverContainer* GetSolverContainer() const { return pSolverContainer; } + inline XclImpChart* GetCurrChartData() const; XclImpChart* ReplaceChartData( XclImpStream& rStrm, XclChartType eNewType ); @@ -475,7 +478,7 @@ /** Returns true, if the object with ID nObjId will be ignored. */ bool IsIgnoreObject( sal_uInt32 nObjId ) const; - void Apply(); + void Apply( Biff8MSDffManager* pDffMan ); }; inline sal_Bool XclImpObjectManager::IsType( const XclImpEscherObj* pObj, XclImpObjectType eType ) Index: source/filter/excel/XclImpObjects.cxx =================================================================== RCS file: /cvs/sc/sc/source/filter/excel/XclImpObjects.cxx,v retrieving revision 1.15.2.1.2.2 diff -u -r1.15.2.1.2.2 XclImpObjects.cxx --- source/filter/excel/XclImpObjects.cxx 14 Feb 2003 14:57:46 -0000 1.15.2.1.2.2 +++ source/filter/excel/XclImpObjects.cxx 25 Mar 2003 10:29:53 -0000 @@ -255,7 +255,12 @@ while( aStrm.Tell() < nPos ) { aStrm >> aHd; - if( aHd.IsContainer() ) + if(aHd.nRecType == DFF_msofbtSolverContainer ) + { + aStrm.Seek( nEntry ); + return &aHd; + } + else if( aHd.IsContainer() ) UpdateNode( aHd ); else if( (aStrm.Tell() + aHd.nRecLen) <= nPos ) aStrm.SeekRel( aHd.nRecLen ); @@ -936,6 +941,7 @@ aStreamConsumer(), aEscherObjList( *rRoot.mpRD ), pCurrEscherObj( NULL ), + pSolverContainer ( NULL ), bLeadingTxo( sal_False ), bMaybeTxo( sal_False ), bStartWithDummy( sal_True ) @@ -946,6 +952,10 @@ { if( pCurrEscherObj ) delete pCurrEscherObj; + + if( pSolverContainer ) + delete pSolverContainer; + } const XclImpEscherNote* XclImpObjectManager::GetObjNote( sal_uInt32 nObjNum, sal_uInt16 nTab ) const @@ -1065,6 +1075,11 @@ aStreamConsumer.AppendData( aBuf, 0x0200 ); } break; + case DFF_msofbtSolverContainer : + if( !pSolverContainer ) + pSolverContainer = new SvxMSDffSolverContainer; + aStreamConsumer.GetStream() >> *pSolverContainer ; + break; } } } @@ -1293,11 +1308,17 @@ return ::std::binary_search( maIgnoreObj.begin(), maIgnoreObj.end(), nObjId ); } -void XclImpObjectManager::Apply() +void XclImpObjectManager::Apply( Biff8MSDffManager* pDffMan ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "sc", "dr104026", "XclImpObjectManager::Apply" ); ScfProgressBar aProgress( GetDocShell(), STR_PROGRESS_CALCULATING ); aEscherObjList.Apply( aProgress ); + if( pSolverContainer ) + { + if( pDffMan ) + pDffMan->SolveSolver(*pSolverContainer ); + } + } @@ -1576,6 +1597,31 @@ { sal_uInt32 nTextId = GetPropertyValue( DFF_Prop_lTxid, 0 ); StoreShapeOrder( rObjData.nShapeId, nTextId, pRet ); + } + } + + SvxMSDffSolverContainer* pSolverContainer = rObjManager.GetSolverContainer(); + + if(pRet && pSolverContainer) + { + for ( SvxMSDffConnectorRule* pPtr = (SvxMSDffConnectorRule*)pSolverContainer->aCList.First(); + pPtr; pPtr = (SvxMSDffConnectorRule*)pSolverContainer->aCList.Next() ) + { + if ( rObjData.nShapeId == pPtr->nShapeC ) + pPtr->pCObj = pRet; + else + { + if ( rObjData.nShapeId == pPtr->nShapeA ) + { + pPtr->pAObj = pRet; + pPtr->nSpFlagsA = rObjData.nSpFlags; + } + if ( rObjData.nShapeId == pPtr->nShapeB ) + { + pPtr->pBObj = pRet; + pPtr->nSpFlagsB = rObjData.nSpFlags; + } + } } } return pRet; Index: source/filter/excel/excimp8.cxx =================================================================== RCS file: /cvs/sc/sc/source/filter/excel/excimp8.cxx,v retrieving revision 1.74.4.1.2.6 diff -u -r1.74.4.1.2.6 excimp8.cxx --- source/filter/excel/excimp8.cxx 7 Mar 2003 08:50:14 -0000 1.74.4.1.2.6 +++ source/filter/excel/excimp8.cxx 25 Mar 2003 10:30:09 -0000 @@ -1023,10 +1023,11 @@ SfxObjectShell* pShell = GetDocShell(); XclImpObjectManager& rObjManager = GetObjectManager(); + Biff8MSDffManager* pDffMan = NULL; if( pShell && rObjManager.HasEscherStream() ) { - Biff8MSDffManager* pDffMan = new Biff8MSDffManager( *pExcRoot, rObjManager, + pDffMan = new Biff8MSDffManager( *pExcRoot, rObjManager, 0, 0, pD->GetDrawLayer(), 1440 ); const XclImpAnchorData* pAnch; @@ -1108,10 +1109,12 @@ } } - delete pDffMan; } - rObjManager.Apply(); + rObjManager.Apply(pDffMan); + + if( pDffMan ) + delete pDffMan; ImportExcel::PostDocLoad();